文章目录

  • 1. 分析
    • 1.1 指令
    • 1.2 数据通路图和系统结构图的改变
  • 2. 代码修改
    • 2.1 HI、LO寄存器的实现
    • 2.2 修改译码阶段—ID模块
    • 2.3 修改执行阶段—EX模块、EX/MEM模块
    • 2.4 修改访存阶段—MEM模块、MEM/WB模块
  • 3. 测试5 移动操作指令

1. 分析

1.1 指令

  • movn、movz指令
    译码阶段新增:依据读取地址rt的值是否为0,判断是否写入目的寄存器
  • mthi、mtlo指令
    • 译码阶段,给出运算类型 alusel_o 、 运算子类型 aluop_o 的值 , 同时读出 rs 的值 。 由于 mthi 、 mtlo 不写通用寄存器 , 所以 wreg_o 为 WriteDisable ,wd_o为0 。
    • 执行阶段,确定要写 HI 、 LO 寄存器的情况 , 以及要写入的值 , 并将这些信息传递到访存阶段 。
    • 访存阶段,将这些信息再传递到回写阶段 。
    • 回写阶段,依据这些信息修改 HI 、 LO 寄存器的值 (进行写操作
  • mfhi、mflo指令
    需要读寄存器HI、LO,设计为在执行阶段读

1.2 数据通路图和系统结构图的改变

数据通路图主要有三个变化:
(1)增加了HILO寄存器模块,并且该模块放在回写阶段(红色方框)
(2)将HI、LO寄存器的值传递到执行阶段,在执行阶段增加了一个选择模块,用于选择要参与运算的数据,如果是mfhi、mfo指令,那么就会选择传递过来的HI、LO寄存器的值(红色线)
(3)数据转发(蓝色线)

图6.5

【五级流水线CPU】—— 4. 移动操作指令(6条)相关推荐

  1. 【五级流水线CPU】—— 5. 转移指令(14条)

    转移指令(14) 一共14条指令,分为两类: 跳转指令(绝对转移):jr.jalr.j.jal 分支指令(相对转移):b.bal.beq.bgez.bgezal.bgtz.blez.bltzal.bn ...

  2. 用scala写一个基本五级流水线CPU(二)解决数据冒险

    用scala写一个基本五级流水线CPU(二)解决数据冒险 ctime:2020-06-27 10:17:34 +0900|1593220654 标签(空格分隔): 技术 硬件 所谓数据冒险,即后面的指 ...

  3. 用scala写一个基本五级流水线CPU

    用scala写一个基本五级流水线CPU ctime:2020-06-26 20:09:48 +0900|1593169788 标签(空格分隔): 技术 硬件 最近学SpinaHDL,一直想写个什么东西 ...

  4. 自己动手写CPU(4)移动操作指令的实现

    自己动手写CPU(4)移动操作指令的实现 指令说明 MIPS32指令集架构中定义的移动操作指令共有6条: movn.movz.mfhi.mthi.mflo.mtlo,后4条指令涉及对特殊寄存器HI.L ...

  5. [SystemVerilog] MIPS架构下的五级流水线CPU设计

    完整代码已上传 github 众所周知,MIPS体系的五级流水线CPU分为五个阶段:取指(IF).译码(ID).执行(EX).存储器(MEM).写回(WB).所以这根本算不上"设计" ...

  6. 五级流水线CPU的实现与改进

    实验报告二  流水线CPU 张涵诺 2019301894 实验三 流水线CPU(不考虑冒险) 实验要求: 在单周期CPU的基础上增加流水线寄存器,在不考虑冒险的前提下,实现一个能够执行下列指令集的流水 ...

  7. 手把手代码实现五级流水线CPU——第三篇:流水线控制逻辑

    系列文章目录 第一篇:初级顺序流水线 第二篇:分支预测流水线 文章目录 系列文章目录 一.控制逻辑 二.具体操作 1.判断暂停 2.控制冒险 3.跳转问题 4.实现 代码 一.控制逻辑 通过暂停和插入 ...

  8. 【五级流水线CPU】—— 7. 协处理器访问指令(2条)

    文章目录 1. 协处理器CP0 2. CP0的实现 1. 协处理器CP0 对于MIPS32架构的4个协处理器,只进行CP0的实现 CP0内部只实现比较有用的7个寄存器 count(Register9) ...

  9. 【五级流水线CPU】—— 3. 逻辑、移位与空指令 + 数据冒险RAM解决

    文章目录 1. 数据冒险RAM解决 分析 解决 2. 实现逻辑.移位指令 2.1 修改ID模块 2.2 修改EX模块 3. 测试 3.2 测试3 逻辑操作指令 3.2 测试4 移位操作指令 1. 数据 ...

最新文章

  1. 让Python代码简洁的实用技巧!
  2. 【 MATLAB 】数字信号处理中的几个常用序列产生的MATLAB代码
  3. Quartus16.1布线优化选择,重编译可能会满足时序
  4. java_内存的划分
  5. 程序员面试金典 - 面试题 10.10. 数字流的秩(map/树状数组)
  6. 这九张动态图诠释什么是自然与科技的完美结合
  7. 深度学习-词嵌入(word2vec)
  8. Flutter ColorTween实现颜色过渡动画效果
  9. 分析Cocos2d-x横版ACT手游源 1、登录
  10. 一个关于Show窗口与Invalidate();顺序问题
  11. python做单因素方差分析
  12. 【毕业设计】Spring Boot 和 Vue 的图书管理系统
  13. APACHE架构WEB服务器
  14. html页面整体变灰,整个页面html变灰
  15. 期货什么情况下会强制平仓
  16. 智行者王肖:自动驾驶本质在于对待数据的态度、获取及应用方式 | 自动驾驶这十年...
  17. animals中文谐音_animal怎么读
  18. uniapp 浙政钉埋点——小程序
  19. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld...
  20. 常用的php函数与类

热门文章

  1. PHP的 Warning: Cannot modify header information - headers already sent by警告
  2. 异常:System.BadImageFormatException,未能加载正确的程序集XXX
  3. 循环c语言格式,关于for循环的格式
  4. Bootstraptable源码
  5. Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
  6. [原创]java WEB学习笔记107:Spring学习---AOP切面的优先级,重用切点表达式
  7. 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器...
  8. [LeetCode] First Missing Positive
  9. 解决Lost connection to MySQL server at 'reading initial communication packet', 的方法
  10. [转]PDB——Python调试利器详解