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

问题描述 投票:11回答:1

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

cpu cpu-architecture
1个回答
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]。它不会启动指令3,但会等到指令2开始 - 此时它将一起启动指令2和3。

希望这可以帮助。

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

© www.soinside.com 2019 - 2024. All rights reserved.