ADD:
Ifetch Dec/reg exec Wr(reg)

lw:
Ifetch Dec/reg exec Mem(r) Wr(reg)

sw:
Ifetch Dec/reg exec Mem(w)

于是分成 5 个步骤

Ifetch Dec/reg exec Mem Wr

而且为了中间结果的状态稳定和最后写入操作的有效,中间需要添加额外的寄存器组来保存中间状态

  • 指令长度一致
  • 格式少,且源寄存器位置相同,有利于在指令未知的时候就可以取操作数
  • l s 指令才能访问存储器,减少操作步骤,规整流水线
  • 内存中对齐存放,有利于减少访存次数

流水线充满状态,每个时钟周期都会产生一个输出,所以有等效的时钟周期为 1,CPI 为 1

RegWr 写指令的内容是前面指令的内容

没有考虑跳转指令和指令之间的依赖关系