机器周期设置
为方便流水线设计,每个阶段耗时取最长耗时为准,
理想情况下,每个机器周期只消耗一个时钟周期
五个阶段:①IF取值 → ②ID译码&取数 → ③EX执行 → ④M访存 → ⑤WB写回寄存器
ID段三个锁存器: Imm(存放立即数)、A、B(从寄存器中取数)
常见五类指令
1.运算类指令
以立即数与寄存器为例:
RISC指令集第四阶段不需访存,但也必须留出对应时间,即一个机器周期(时钟周期).
2.LOAD指令(取数指令)
访存
LOAD Rd,996(Rs): 在Rs寄存器的值的基础上+996偏移地址取出的值存到Rd寄存器中 (996+(Rs))→Rd
因进程在内存中起始地址不同,固基址寻址
3.STORE指令(存数指令)
访存
**STORE Rs,996(Rd)**将Rs当前内容存到Rd(基地址)内容偏移996的地址中
不需要写回寄存器,此时WB 为空段
4.条件转移指令
相对寻址
5.无条件转移指令
例题
I3段:
ADD加法指令 用到R1、R2寄存器,因I1、I2段此时还未WB写回固不能ID译码取寄存器中取数到A、B锁存器中固被阻塞(数据同步问题)
I4段:
① 段:因I3并未执行ID译码阶段,此时I3的指令还存于IF阶段的锁存器中,若此时执行I4 IF取值会覆盖I3指令
②段:同理存数指令也用到R2寄存器,需要I3,WB写回才可执行