超标量和无序(OoO)执行之间的一般区别是什么? [英] What is general difference between Superscalar and out-of-order (OoO) execution?

查看:194
本文介绍了超标量和无序(OoO)执行之间的一般区别是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在阅读有关superscalr和OoO的资料,我很困惑。

我认为他们的架构图看起来非常相似。

I've been reading some material on superscalr and OoO and I am confused.
I think their architecture graphs look very much the same.

推荐答案

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

Superscalar microprocessors can execute two or more instructions at the same time. E.g. typically they have at least 2 ALUs (although a superscalar processor might have 1 ALU and some other execution unit, like a shifter or jump unit.)

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

More precisely, superscalar processors can start executing two or more instructions in the same cycle. Pipelined processors can execute more than one instruction at a time, but a non-superscalar pipelined processor will only start a single instruction in any given cycle. Pipelined execution units take multiple cycles to execute end to end. Put another way: superscalar processors are usually capable of executing two non-pipelined instructions with single cycle latency per cycle, whereas non-superscalar pipelined processors cannot have two single cycle instructions in execution in the ALUs at the same time.

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

Out-of-order processors can execute instructions out of the original order. For example, in the following, where MULTIPLY takes 5 cycles, instruction 3 may execute before instruction 2 - because instruction 2 is waiting for the 5 cycle result of the MULTIPLY of instruction 1:

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

大多数乱序处理器也是超标量的。但是,您可以想象构建一个不是超标量的乱序处理器,每个周期只能在流水线ALU上启动一个操作。 (我曾提出过这样的操作,当被英特尔聘用时,作为低功耗芯片。哎呀,您可以构建仅是标量一半的乱序处理器,例如只有16位的宽的ALU,需要2个周期来进行32位加法运算,等等。但这是在扩展。)

Most out-of-order processors are also superscalar. However you can imagine building an out-of-order processor that is not superscalar, that can only initiate one operation on a pipelined ALU per cycle. (I have proposed such operations, when employed by Intel, as low power chips. Heck, you can build out-of-order processors that are only half-way scalar, e.g. that have only a 16 bit wide ALU, taking 2 cycles for a 32 bit add, etc. But that's stretching.)

但是,许多超标量处理器并没有出现故障。在上面的示例中,有序超标量将首先执行指令1。它不会开始启动指令3,但是会等到指令2可以启动-那时它将一起启动指令2和3。

Many superscalar processors, however, are not out-of-order. In the example above, an in-order superscalar would execute instruction 1 first. It would not start instruction 3, but would wait until instruction 2 could start - at which time it would start instruction 2 and 3 together.

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

Sometimes you have to think about unlikely limit cases, such as 1-wide or half-wide OOO machines, to understand the concepts.

这篇关于超标量和无序(OoO)执行之间的一般区别是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆