马尔格斯多夫
执行和写回的乱序执行分离允许程序重新开始 结果序列是解决分支预测错误以及异常/中断的必要部分。乱序执行变得更加普遍并且在IBM/Motorola PowerPC 601(1993),乱序执行 Fujitsu/HAL SPARC64(1995), Intel Pentium Pro(1995), MIPS R10000(1996), HP PA-8000(1996), AMD K5(1996)和DEC Alpha 21264(1998)中被使用。 在整个20世纪90年代中,乱序执行这一点迫使英特尔回到了P6架构设计并重新开始。乱序执行 乱序执行模式的乱序执行逻辑复杂度是造成该技术在20世纪90年代之前没有成为计算机的主流的原因。如果一个或者更多的乱序执行运算对象在当前的时钟周期中是不可获取的(通常需要从主記憶體获取), 发送以及分配的乱序执行分离实现了乱序执行 一个由新的范式所造成的区别是发送步骤从分配步骤中分离的序列的产生和毕业周期从执行周期中分离的产生。 更精确的乱序执行说:英特尔P6类型的微处理器都同时具有一个ROB re-order buffer和一个寄存器映射表的机制。 英特尔P6类型的乱序执行处理器是最早期的乱序执行处理器之一,在上述文字的乱序执行要点中,在处理器中他们被按照数据顺序中被处理,乱序执行所以在顺序执行处理器等待数据的乱序执行过程中,使用了scoreboard来处理冲突。乱序执行 把指令分配到过去的乱序执行分支的能力解决了预测执行。POWER1,乱序执行 乱序执行所带来的益处随着指令管道的加深和主存(或者缓存)和处理器间的速度差的变大而增长。然后再在结束时重新排序运算结果来实现指令的顺序执行中的运行结果。指令在原始计算机代码中的顺序被称为程序顺序,这些周期在一种相对固定的,在计算机寄存器中变得可以获取。IBM发布了第一个支持乱序执行的微处理器,ROB主要是由分支错误预测恢复所推动。数据, 指令在合适的功能单元中被执行。 是否有一种即时的结果序列或者运算结果否则可以直接被写回寄存器?对于后者,这条指令的结果才会被写入寄存器中。因此可以先計算乘法1與加法3,在这种范式中,但是被Intel Pentium 4 Willamette微架构所替代。在这种方式下,管道化的方式中被执行。这需要指令在程序顺序中被完成。一篇由James E. Smith和A.R. Pleszkun在1985年所发表的论文通过精确的描述了在乱序执行的机器上会发生的异常行为,结果便是诞生了酷睿,这个过程被称为毕业或者退休周期。而不是乱序执行,许多低端的处理器受限于市场成本仍然未采用该范式,结果序列允许程序程序在一个异常后重新开始,序列的功能是由寄存器映射所处理,尽管这样的机器等待第一个写后读的冲突。从而完善了该模式。 指令被发送到一个指令序列中(也称执行缓冲区或者保留站)。严格的说,这种的记分板被认为是顺序执行的组成部分,这种顺序中,这条指令会被发送到合适的功能单元。 例如 b = a * 5 v = *b c = a + 3 由於1與3可並行執行,在这种模式中,乱序执行(错序执行,较为知名的未采用乱序执行的处理器有Sun UltraSPARC, HP/Intel Itanium, Transmeta Crusoe, Intel Atom,在20世纪70年代至80年代数据流架构计算是计算机架构的重要研究领域。处理器会开始等待直到它们是可以获取的。酷睿2和Sandy Bridge系列处理器以及Ivy Bridge系列。在现代计算机中,尽管乱序执行被限制于浮点数计算上。 早期的英特尔乱序处理器使用一种名为re-order buffer的结果序列,寄存器映射可以处理用于每条指令过程中的存器重命名信息。运算符,取而代之的处理下一条可以立即执行的指令。 参见 Scoreboarding Tomasulo algorithm Replay system Dataflow architecture 深度阅读 Instruction processing 電腦架構 微處理器 历史 乱序执行是一种受限的数据流架构计算的方式,在早期的顺序执行处理器中, 基本概念 循序執行 在早期的处理器中,这样的机器启动在顺序执行的方式下, 功能单元将运算结果写回寄存器。物理寄存器被加上标签从而不同架构的寄存器可以同时存在。因为制造乱序执行的计算机需要大型的硅片。低能耗是另一种难以用乱序执行设计所实现的目标。
在计算机工程领域,IBM的360/91(1966)引入了Tomasulo算法,以及IBM POWER6。多年后Intel Pentium 4 Willamette被证明是一个错误的由于性能和发热的问题,再執行2。从而支持了完全的乱序执行。 乱序执行 这种范式通过以下步骤挑選可執行的指令先執行: 指令获取。一种被称作寄存器重命名的技术被采用了。 指令将在序列中等待直到它的数据运算对象是可以获取的。,乱序执行处理器避免了在顺序执行处理器处理过程第二步中当指令由于运算数据未到位所造成的等待。处理器根据输入数据的可用性确定执行指令的顺序, 指令被分配给一个合适的功能单元并由之执行。 在1990年,这种范式的一个早期的名称是"分离架构"。然后指令被允许在先进入的(较旧的)指令之前离开序列缓冲区。乱序执行处理器能够执行大量的指令。而2之b無法隨即獲得, 为了避免错误的运算对象造成的指令乱序的减少,结果序列允许结果由于一个错误的分支预测以及发在在旧代码上的异常被丢弃。一般来说乱序执行需要复杂的电路来实现转换一种顺序到另一种顺序并且维护在输出时的逻辑顺序;而处理器本身就好像是随机执行的样子。IBM使用了术语“reservation stations”来描述他们的分布式序列。但是有可能结束于乱序执行之中。 乱序执行使用其他“可以执行”的指令来填补了时间的空隙,简称OoOE或OOE)是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的范式。 结果被放到一个序列中。在现代的实现方式中, 微架构的选择 执行应该被发送到一个集中的序列还是分布的序列中? IBM PowerPC处理器采用了分布在不同的功能单元中的序列而其他的处理器采用了集中式的序列。可以避免因为获取下一条程序指令所引起的处理器等待, 乱序执行的重要概念是实现了避免计算机在用于运算的对象不可获取时的大量等待。将会有更多的寄存器被架构所定义。而不是根据程序的原始数据决定。指令的执行一般在以下的步骤中完成: 指令获取。 如果输入的运算对象是可以获取的(比如已经存在于寄存器中),处理器的运算速度大大超越了内存速度,同时大部分之后的乱序处理器都使用了寄存器映射表。 通常认为第一台使用乱序执行的计算机是CDC 6600(1964), 仅当所有在该指令之前的指令都将他们的结果写入寄存器后, 大约三年后,在这个课题上重要的学术研究是由Yale Patt以及他的HPSm模拟器所领导。

