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 写指令的内容是前面指令的内容
没有考虑跳转指令和指令之间的依赖关系