18

我一直在阅读一些关于 superscalr 和 OoO 的材料,我很困惑。
我认为他们的架构图看起来非常相似。

4

1 回答 1

43

超标量微处理器可以同时执行两条或多条指令。 例如,通常它们至少有 2 个 ALU(尽管超标量处理器可能有 1 个 ALU 和其他一些执行单元,如移位器或跳转单元。)

更准确地说,超标量处理器可以在同一周期内开始执行两条或更多条指令。 流水线处理器一次可以执行多条指令,但非超标量流水线处理器在任何给定周期内只会启动一条指令。 流水线执行单元需要多个周期来端到端执行。换句话说:超标量处理器通常能够以每个周期的单周期延迟执行两条非流水线指令,而非超标量流水线处理器不能同时在 ALU 中执行两条单周期指令。

乱序处理器可以乱序执行指令。例如,在下面,其中 MULTIPLY 需要 5 个周期,指令 3 可能在指令 2 之前执行 - 因为指令 2 正在等待指令 1 的 MULTIPLY 的 5 个周期结果:

1: MULTIPLY reg1 := reg2 * reg3
2: ADD reg4 := reg1 + 5
3: ADD reg6 := reg2 + 1

大多数乱序处理器也是超标量的。但是,您可以想象构建一个非超标量的乱序处理器,每个周期只能在流水线 ALU 上启动一个操作。(当英特尔采用这种操作时,我已经提议将此类操作作为低功耗芯片。哎呀,您可以构建只有中途标量的无序处理器,例如,只有一个 16 位宽的 ALU,需要 2 个周期一个 32 位的添加,等等。但那是拉伸的。)

然而,许多超标量处理器并不是乱序的。在上面的示例中,有序超标量将首先执行指令 1。它不会启动指令 3,而是会等到指令 2 可以启动——此时它会同时启动指令 2 和 3。

有时您必须考虑不太可能的极限情况,例如 1 宽或半宽 OOO 机器,才能理解这些概念。

于 2012-04-26T05:35:47.280 回答