在计算机体系结构中,流水线指令的布局是什么?
流水线指令处理涵盖两个关键要素,即规范或逻辑布局以及指令流水线的实现。逻辑布局确定需要熟练掌握的任务。它包括要执行的流水线的声明,以及每个流水线的子任务的详细规范及其执行顺序。
在当前的处理器中,为每个主要的指令类别声明多个流水线。通常,为 FX 和逻辑数据的处理(称为 FX 流水线)、FP 数据(FP 流水线)、加载和存储(L/S 流水线)以及分支(B 流水线)设置独立的流水线。
流水线的详细规范包含流水线阶段的陈述以及每个阶段要完成的子任务的规范。
逻辑流水线可以通过多种方法执行,例如使用类似的硬件流水线来执行所有逻辑流水线,或者将每个逻辑流水线作为专用流水线来执行。
必须处理三种重要方法,如图所示。这些元素是物理流水线的布局和多重性,以及在多个物理流水线的情况下如何保持顺序一致性。
首先,让我们考虑一下“物理”流水线的布局,并参考下图,重点在于逻辑流水线是否应该通过多功能流水线以最少的硬件来执行,或者通过使用多个专用流水线来执行。
对于多功能流水线而言,只有一个公开的设计,其中所有 FX、FP、L/S 和 B 指令(分支指令)都使用类似的物理流水线进行处理。这种设计是 MIPS R4200,于 1994 年推出。相反,在相同的流水线上执行 FX、L/S 和 B 指令是一种通常采用的“经典”方法,即主流水线方法。
因此,FX 流水线的加法器也用于实现 L/S 和 B 指令时所需的地址计算。因此,每个主要的指令类别都在相同的流水线中执行,方法是在指定的顺序中执行给定的子任务。否则,也可以执行专用流水线。其动机是通过并行运行多个专门的流水线来提高性能。
在多个流水线的情况下,需要三种方法来保持顺序一致性,如下所示:
在第一种方法中,可以考虑为 FX、L/S 和分支指令设置一个多功能流水线,以及一个独立的 FP 流水线。因此,FP 流水线无法独立地将结果写回寄存器文件或内存。
在第二种方法中,可以考虑两个锁步运行的流水线,一个主 FX 流水线和一个 FP 流水线。因此,通过准确地延长较短的 FX 流水线(如果需要,在其内插入未使用的周期(气泡))来实现指令的有序完成。
第三种方法是重新排序。如果有多个流水线,通常会使用此方法。通过重新排序,流水线无法直接将结果写回体系结构寄存器或内存。