冒险和预测(二)
- 1. NOP 操作和指令对齐
- 2. 操作数前推
- 参考
1. NOP 操作和指令对齐
MIPS 体系结构下的 R、I、J 三类指令:
五级流水线“取指令(IF)— 指令译码(ID)— 指令执行(EX)— 内存访问(MEM)— 数据写回(WB)”:
在 MIPS 的体系结构下,不同类型的指令,会在流水线的不同阶段进行不同的操作。
有些指令没有对应的流水线阶段,但是我们并不能跳过对应的阶段直接执行下一个阶段。。不然,如果我们先后执行一条 LOAD 指令和一条 ADD 指令,就会发生 LOAD 指令的 WB 阶段和 ADD 指令的 WB 阶段,在同一个时钟周期发生。
所以,各个指令不需要的阶段并不会直接跳过,而是会运行一次 NOP 操作。通过插入一次 NOP 操作,后一条指令的每一个 Stage 一定不会和前一条指令的同 Stage 在一个时钟周期执行。
2. 操作数前推
操作数前推(Operand Forward),又名操作数旁路(Operand Bypassing),操作数转发。
转发(逻辑含义):在第 1 条指令的执行结果,直接“转发”给了第 2 条指令的 ALU 作为输出。
旁路(物理含义):在 CPU 的硬件里面,需要单独拉一根信号传输的线路出来,使得 ALU 的计算结果能够重新回到 ALU 的输出里来。这样一条线路就称为“旁路”。它越过(Bypass)了写入寄存器,再从寄存器读出的过程,也为我们节省了 2 个时钟周期。
参考
极客时间《深入浅出计算机组成原理》