【五级流水线CPU】—— 4. 移动操作指令(6条)
文章目录
- 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条)相关推荐
- 【五级流水线CPU】—— 5. 转移指令(14条)
转移指令(14) 一共14条指令,分为两类: 跳转指令(绝对转移):jr.jalr.j.jal 分支指令(相对转移):b.bal.beq.bgez.bgezal.bgtz.blez.bltzal.bn ...
- 用scala写一个基本五级流水线CPU(二)解决数据冒险
用scala写一个基本五级流水线CPU(二)解决数据冒险 ctime:2020-06-27 10:17:34 +0900|1593220654 标签(空格分隔): 技术 硬件 所谓数据冒险,即后面的指 ...
- 用scala写一个基本五级流水线CPU
用scala写一个基本五级流水线CPU ctime:2020-06-26 20:09:48 +0900|1593169788 标签(空格分隔): 技术 硬件 最近学SpinaHDL,一直想写个什么东西 ...
- 自己动手写CPU(4)移动操作指令的实现
自己动手写CPU(4)移动操作指令的实现 指令说明 MIPS32指令集架构中定义的移动操作指令共有6条: movn.movz.mfhi.mthi.mflo.mtlo,后4条指令涉及对特殊寄存器HI.L ...
- [SystemVerilog] MIPS架构下的五级流水线CPU设计
完整代码已上传 github 众所周知,MIPS体系的五级流水线CPU分为五个阶段:取指(IF).译码(ID).执行(EX).存储器(MEM).写回(WB).所以这根本算不上"设计" ...
- 五级流水线CPU的实现与改进
实验报告二 流水线CPU 张涵诺 2019301894 实验三 流水线CPU(不考虑冒险) 实验要求: 在单周期CPU的基础上增加流水线寄存器,在不考虑冒险的前提下,实现一个能够执行下列指令集的流水 ...
- 手把手代码实现五级流水线CPU——第三篇:流水线控制逻辑
系列文章目录 第一篇:初级顺序流水线 第二篇:分支预测流水线 文章目录 系列文章目录 一.控制逻辑 二.具体操作 1.判断暂停 2.控制冒险 3.跳转问题 4.实现 代码 一.控制逻辑 通过暂停和插入 ...
- 【五级流水线CPU】—— 7. 协处理器访问指令(2条)
文章目录 1. 协处理器CP0 2. CP0的实现 1. 协处理器CP0 对于MIPS32架构的4个协处理器,只进行CP0的实现 CP0内部只实现比较有用的7个寄存器 count(Register9) ...
- 【五级流水线CPU】—— 3. 逻辑、移位与空指令 + 数据冒险RAM解决
文章目录 1. 数据冒险RAM解决 分析 解决 2. 实现逻辑.移位指令 2.1 修改ID模块 2.2 修改EX模块 3. 测试 3.2 测试3 逻辑操作指令 3.2 测试4 移位操作指令 1. 数据 ...
最新文章
- 让Python代码简洁的实用技巧!
- 【 MATLAB 】数字信号处理中的几个常用序列产生的MATLAB代码
- Quartus16.1布线优化选择,重编译可能会满足时序
- java_内存的划分
- 程序员面试金典 - 面试题 10.10. 数字流的秩(map/树状数组)
- 这九张动态图诠释什么是自然与科技的完美结合
- 深度学习-词嵌入(word2vec)
- Flutter ColorTween实现颜色过渡动画效果
- 分析Cocos2d-x横版ACT手游源 1、登录
- 一个关于Show窗口与Invalidate();顺序问题
- python做单因素方差分析
- 【毕业设计】Spring Boot 和 Vue 的图书管理系统
- APACHE架构WEB服务器
- html页面整体变灰,整个页面html变灰
- 期货什么情况下会强制平仓
- 智行者王肖:自动驾驶本质在于对待数据的态度、获取及应用方式 | 自动驾驶这十年...
- animals中文谐音_animal怎么读
- uniapp 浙政钉埋点——小程序
- Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld...
- 常用的php函数与类
热门文章
- PHP的 Warning: Cannot modify header information - headers already sent by警告
- 异常:System.BadImageFormatException,未能加载正确的程序集XXX
- 循环c语言格式,关于for循环的格式
- Bootstraptable源码
- Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
- [原创]java WEB学习笔记107:Spring学习---AOP切面的优先级,重用切点表达式
- 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器...
- [LeetCode] First Missing Positive
- 解决Lost connection to MySQL server at 'reading initial communication packet', 的方法
- [转]PDB——Python调试利器详解