计算机体系结构中FX流水线的逻辑布局是什么?
FX流水线的逻辑布局首先包括指定FX流水线有多少个阶段以及这些阶段要执行哪些任务。设计空间的另一个关键方面是如何实现FX流水线。FX流水线可以从更广泛和更狭义的角度来解释。
从更广泛的意义上讲,它涵盖了指令获取、解码、执行以及如果需要则回写等完整任务。在这种情况下,它通常也用于执行L/S和分支指令,并被称为主流水线。
从更狭义的角度讲,FX流水线被理解为仅处理FX指令处理的执行和回写阶段。然后,指令获取、解码以及在超标量执行的情况下,指令发出等先前任务由处理器的另一个部分执行。
整数和布尔指令在程序中占相当大的比例。它们加起来占所有执行指令的30%到40%。因此,FX流水线的布局对于获得高性能处理器至关重要。
在下文中,我们将分别描述RISC和CISC处理器的FX流水线,因为每种类型都有略微不同的范围。在处理操作指令时,RISC流水线必须处理寄存器操作数。相比之下,CISC流水线必须能够处理寄存器和内存操作数以及目标。
RISC流水线
RISC处理器中传统的FX流水线是根据寄存器-寄存器指令的执行建模的。请考虑这里寄存器-寄存器指令的执行包括以下子任务:
- 获取指令
- 解码指令
- 获取引用的寄存器
- 执行指定的运算
- 将结果写回寄存器文件
Sparc、SuperSparc、MC88110和PowerPC是使用这种FX流水线安排的RISC处理器的示例。在某些处理器中,循环持续时间存在一些细微差别,例如在MC 8810或SuperSparc处理器中,如表所示。
传统FX流水线中流水线循环持续时间的变化
获取 | 解码 | 执行 | 回写 | |
---|---|---|---|---|
大多数处理器 | 1 | 1 | 1 | 1 |
MC 88110 | 1 | ½ | 1 | ½ |
SuperSparc | 1 | 3/2 | 1 | ½ |
CISC流水线
CISC流水线与RISC流水线的主要区别在于,CISC流水线必须能够处理寄存器和内存操作数以及目标。
为了访问内存操作数(假设在缓存中),执行两个额外的子任务:计算操作数地址和获取操作数(可能来自缓存)。
因此,传统CISC流水线,其布局是为了有效地执行寄存器-内存指令,比传统RISC流水线多两个阶段。流水线包含以下六个阶段:指令获取(F)、解码(D)、地址计算(A)、缓存访问(C)、执行(E)以及将结果写回寄存器文件(WB)。它被一些CISC处理器使用,例如MC 68040和MC 68060。
流水线也可以轻松地用于执行寄存器-寄存器和加载/存储指令。为了执行寄存器-寄存器指令,引用的寄存器操作数在D循环中获取,而A和C循环保持未使用。随后,在E循环中执行所需的操作,并在结束的WB循环期间将结果写回寄存器文件。