流水线是一种指令级并行技术。
指令执行步骤
- 取指 IF (从内存中取出指令)
- 译码和取寄存器操作数 ID (把指令送到指令译码器进行译码,产生相应控制信号)
- 执行或者有效地址计算 EX (指挥并控制CPU、内存、I/O设备的之间的数据流动)
- 存储器访问 MEM
- 写回 WB
汇编指令不是一步可以执行完毕的,每个步骤涉及的硬件可能不同,所以可以使用流水线技术来执行指令。
可以看到,当第2条指令执行时,第1条指令只是完成了取值操作。假如每个步骤需要1毫秒,那么如果指令2等待指令1执行完再执行,就需要等待5毫秒。而使用流水线后,只需要等待1毫秒。
A = B + C 的执行过程
LW表示load,LW R1,B,把B的值加载到R1寄存器中。ADD是加法,把R1、R2的值相加,并存放到R3中。SW表示store存储,将R3寄存器的值保存到变量A中。
在ADD指令上的大叉表示一个中断,也就是在这里停顿了一下,因为R2中的数据还没准备好。由于ADD的延迟,后面的指令都要慢一个节拍。