【问题标题】:What is general difference between Superscalar and out-of-order (OoO) execution?超标量和乱序(OoO)执行之间的一般区别是什么?
【发布时间】:2012-04-21 22:07:26
【问题描述】:

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

【问题讨论】:

  • 另见:Modern Microprocessors: A 90-Minute Guide!。那篇文章从简单的流水线到深度流水线再到超标量,并附有图表和示例。然后继续讨论指令延迟和依赖关系、分支(和预测)和乱序执行。 (以及替换分支的预测(数据依赖性)。)然后讨论了“brainiac vs. speed demo(例如 Pentium 4)”以及为什么频率/功率缩放会杀死 P4 以及为什么我们拥有多核而不是更快的单核。强烈推荐。

标签: cpu cpu-architecture


【解决方案1】:

超标量微处理器可以同时执行两条或更多条指令。通常它们至少有 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,32 位加法需要 2 个周期,等等。但这是拉伸。)

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

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

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2012-02-05
    相关资源
    最近更新 更多