超标量和OoO执行的一般区别是什么?

时间:2012-04-09 14:37:28

标签: cpu cpu-architecture

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

1 个答案:

答案 0 :(得分:25)

超标量微处理器可以同时执行两条或更多条指令。例如。通常它们至少有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]。它将 NOT 启动指令3,但会等到指令2开始 - 此时它将同时启动指令2和3。

希望这有帮助。

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