指令流水线处理器有哪些操作?
指令流水线处理器有两种操作:流水线处理器和VLIW及超标量处理器。流水线处理器的工作方式类似于装配线,而VLIW和超标量处理器则基本上并行操作,利用多个并发工作的执行单元 (EU),如图所示。
为了简化流水线处理器的运行原理描述,可以将其限制在一个简单的流水线处理器上,该处理器执行整数、RISC类、寄存器-寄存器指令。此类流水线按以下方式运行:
指令处理细分为几个连续的子任务:指令取指 (F)、解码 (D)、执行 (E) 和结果写回 (W),如图 (a) 所示。
每个子任务都由相关的流水线阶段实现。在本例中,我们称它们为 F、D、E 和 W 阶段,如图 (b) 所示。每个阶段的操作都由专用硬件实现。F 阶段从缓存或内存中取指令。
D 阶段解码取回的指令,并在需要时执行一些附加任务,例如检查流水线冲突。在 E 阶段,使用取回的寄存器操作数执行所需的操作。这是使用 E 单元完成的,在本例中,它是一个传统的整数 ALU。最后,在 W 阶段,结果被写回确定的目标寄存器。此操作不需要额外的硬件,它很容易通过对寄存器文件的写操作来实现。
所有流水线阶段都像装配线一样工作,具有同步时序。这意味着在每个流水线周期的开始,每个阶段都接收一个新的输入,并同时将其输出传递给下一个阶段(最后一个阶段除外,最后一个阶段将结果写入指定的目的地),如图 (b) 和 (c) 所示。
流水线执行的一个显著特征是,在每个周期中,都可以有一个新的指令进入流水线,如图所示。如果指令完成了执行的最终阶段,则将其移除。因此,可以并行执行的指令数量与流水线阶段的数量一样多。
流水线支持更高的实现效率,但代价是硬件复杂性增加。因此,流水线处理器最初用于价格昂贵的超级计算机和向量处理器(大约在 1970 年)。随后,流水线指令处理成为大型机的标准实现,并在 20 世纪 80 年代成为微处理器的标准实现。
大多数专用功能单元,例如 FX 或 FP EU,也成为流水线式。流水线式 EU 经常用作高级处理器的构建块,例如 VLIW 或超标量处理器。例如,PowerPC 601 有三个流水线式 EU,每个 EU 分别用于 FX、FP 和分支执行。