博客
关于我
山东大学软件学院计算机组成原理课程设计整机实验(2)
阅读量:733 次
发布时间:2019-03-21

本文共 1233 字,大约阅读时间需要 4 分钟。

文章目录

  • 实验时间
  • 实验任务
  • 对JO指令要求的理解
  • JO指令的实现方法
  • 实验中遇到的其他问题5.1 机器吞咽微指令的问题
  • 一、实验时间2021年5月6日星期四,第10周

    2021年5月14日星期四,第11周

    二、实验任务完成计组整机实验的拓展功能1:JO指令的实现

    (图片描述:关于JO指令的实现步骤图)

    三、对JO指令要求的理解

    开始时,我对拓展功能1的理解存在误区。我原本认为A4地址是通过相对寻址方式加法得来的,随后写入FF。但是真实情况是A4地址是固定的,不会通过相对寻址得到。
    后来向老师求教后,我得知以下正确理解:

  • 加法执行结束后,四个状态位将打入PSW寄存器,并显示在控制台的灯上
  • 如果加法不溢出,则顺序执行,不往A4地址中写数据(A4保持初始值)
  • 如果加法溢出,则根据相对偏移量跳转到STORE指令,并向A4地址中写FF
  • JO指令的第一个字长为操作码+0000,第二个字长为相对寻址的偏移量。老师要求我们根据偏移量寻找的是STORE FF A4指令,而不是操作数。

    STORE FF A4的地址通过相对寻址找到,即STORE的地址=当前PC值+偏移量

    注意:如果不溢出,内存不会改变,不能误认为不溢出要写00,溢出要写FF

    四、JO指令的实现方法

    关于JO指令的实现,有两种理解:

  • 我采用的方法是利用三条指令:
    • CMP指令:用于判断是否溢出,如果不溢出则顺序执行,如果溢出则跳转到JO指令
    • JO指令:当溢出时执行,取出JO第二字长的相对偏移量后,通过ALU作加法,将PC置为STORE指令的RAM地址
    • STORE FF A4指令:将FF存入A4,然后重置PC,跳转至乘法指令
  • 实现JO指令的关键在于条件判断:如何有溢出就跳转,不溢出就顺序执行。我的实现方法是:

    • 如果溢出,将PC置为跳转指令的RAM地址
    • 如果不溢出,则PC+1
    • 通过LOADPC微指令和溢出位V共同决定LD脚的输出
    • 只有LOADPC=1且V=1时,LD脚输出为0,此时PC置数模式
    • 其他情况下,PC+1模式

    另一种理解:

    • JO指令:用于判断溢出,如果溢出则根据相对寻址找到STORE指令并跳转
    • STORE FF A4:将FF存入A4地址中

    我认为这两种方法都可以,第二种实现更为简单。

    关于STORE FF A4指令:

    这是我自己设计的指令格式:

    • 第一字长:OP+低四位
    • 第二字长:A4
    • 第三字长:FF
    • 第四字长:执行后跳转的RAM地址

    五、实验中遇到的其他问题

    5.1 机器吞咽微指令的问题
    在初期微指令较少时,连续脉冲执行正常。但当加入乘法指令和JO后,单脉冲测试无异常,连续脉冲却会在乘法指令执行到一半时显示微指令全0,随后跳转至微指令取指阶段。
    后来向老师求教,老师称可能是机器老化或负载过大导致的。改用以下启动电路后,问题得到解决:

    (图片描述:改装后的二分频启动电路)

    这个问题并非 everyone 会遇到。如果你在单脉冲正常但连续脉冲出现问题时,可以考虑更换启动电路。

    转载地址:http://vpagz.baihongyu.com/

    你可能感兴趣的文章
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Passport 密码模式
    查看>>
    Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
    查看>>
    passwd命令限制用户密码到期时间
    查看>>
    Spring @Async执行异步方法的简单使用
    查看>>
    PAT (Basic Level) Practice 乙级1021-1030
    查看>>
    PAT (Basic Level) Practice 乙级1031-1040
    查看>>
    PAT (Basic Level) Practice 乙级1041-1045
    查看>>
    SparkSql的元数据
    查看>>
    PAT (Basic Level) Practice 乙级1051-1055
    查看>>
    PAT (Basic Level) Practise - 写出这个数
    查看>>
    PAT 1027 Colors in Mars
    查看>>
    PAT 1127 ZigZagging on a Tree[难]
    查看>>
    PAT 2-07. 素因子分解(20)
    查看>>
    SparkSQL学习03-数据读取与存储
    查看>>