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

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 数据通路图和系统结构图的改变

image-20210619173156174

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

图6.5 👇对于系统结构图的修改:

image-20210619174501554

2. 代码修改

2.1 HI、LO寄存器的实现

两个寄存器的接口👇

在这里插入图片描述

2.2 修改译码阶段—ID模块

根据指令确定操作类型👇,只需根据功能码op3确定即可

image-20210619175724361

2.3 修改执行阶段—EX模块、EX/MEM模块

基本都是新增接口

EX模块新增接口👇
在这里插入图片描述

EX/MEM模块新增接口👇

在这里插入图片描述

2.4 修改访存阶段—MEM模块、MEM/WB模块

MEM模块新增接口

image-20210619211543146

MEM/WB模块新增接口

image-20210619211618422

3. 测试5 移动操作指令

测试下面的指令,主要看寄存器$4和HI、LO寄存器的值,仿真验证正确

在这里插入图片描述

✔$4寄存器的值从 0x0 变为 0xffff0000 , 并保持两个时钟周期 , 然后变为0x05050000

image-20210619213715261

✔HI寄存器的值,hi_o,从0x0变为0xffff0000,最终变为0x05050000
✔LO寄存器的值,从0x05050000变为0xffff0000,最终变为0x0

image-20210619214045812

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值