多周期CPU仿真

经过单周期CPU的洗礼,我们接下来要做的就是多周期CPU了。因为有很多单周期的代码可以复用,所以多周期写起来没有那么困难。

多周期CPU原理

多周期CPU就是指一条指令在多个时钟周期内完成,本身并不涉及多级流水线的设计,所以执行指令的性能反而不如单周期CPU。不过每一条指令在不同的时钟周期完成不同的阶段,因此执行指令的流程会更容易理解。每一条指令最多包含以下五个阶段:

  1. 取指令:sIF状态,读取下一条指令地址 。
  2. 指令译码:sID状态,读取下一条指令。
  3. 指令执行:sEXE状态,执行运算。
  4. 存储器访问:sMEM状态,读写数据存储器。
  5. 写回:sWB状态,写入寄存器。

多周期CPU设计

多周期CPU和单周期CPU基本框架差不多,直接复用代码并稍作调整。然后因为每一条指令需要多个时钟周期执行,所以需要记录当前阶段(即状态)以及保存各阶段数据,其中指令的读取、状态的转移、寄存器的写入和数据寄存器的刷新均由时钟信号触发,如何分配上升沿和下降沿触发是多周期CPU设计的难点。

我的设计是由状态驱动指令的执行,即所有控制信号都由当前的状态和指令操作码共同确定,这就需要严格保证在每一个阶段先转移状态再执行指令。具体来说就是在每个时钟周期的上升沿触发状态转移,然后在下降沿读指令、写寄存器、刷新数据寄存器。因为上升沿只触发状态转移,所以状态转移不会与其它任何时序逻辑发生冲突,从而保证在下降沿当前状态可以确定当前阶段。虽然下降沿同时执行各种操作,但它们互不干扰,这是因为时序逻辑模块的触发不会影响整个CPU,影响的范围

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值