» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[业评] 至此wiiu的硬件规格基本确定

(参考资料)
乱序执行
维基百科,自由的百科全书


在 计算机工程领域, 乱序执行 (错序执行,英语:out-of-order execution) 是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的范式。在这种范式中,处理器在一个由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定。在这种方式下,可以避免因为获取下一条程序指令所引起的处理器等待,取而代之的处理下一条可以立即执行的指令。

目录 [隐藏]
1 历史
2 基本概念
2.1 顺序执行
2.2 乱序执行
3 发送以及分配的分离实现了乱序执行
4 执行和写回的分离允许程序重新开始
5 微架构的选择
6 参见
7 深度阅读


[编辑] 历史
乱序执行是一种受限的数据流架构计算的方式,在20世纪70年代已经20世纪80年代数据流架构计算是计算机架构的重要研究领域。在这个课题上重要的学术研究是由Yale Patt以及他的HPSm模拟器所领导。一篇由 James E. Smith 和 A.R. Pleszkun 在1985年所发表的论文通过精确的描述了在乱序执行的机器上会发生的异常行为,从而完善了该模式。

通常认为第一台使用乱序执行的计算机是 CDC 6600 (1964),使用了scoreboard来处理冲突。在现代的实现方式中,这种的记分板被认为是顺序执行的组成部分,而不是乱序执行,尽管这样的机器等待第一个写后读的冲突。严格的说,这样的机器启动在顺序执行的方式下,但是有可能结束于乱序执行之中。

大约三年后,IBM 的 360/91 (1966) 引入了 Tomasulo's algorithm,从而支持了完全的乱序执行。

在1990年,IBM 发布了第一个支持乱序执行的微处理器,POWER1,尽管乱序执行被限制于浮点数计算上。

在整个20世纪90年代中,乱序执行变得更加普遍并且在 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)中被使用。较为知名的未采用乱序执行的处理器有Sun UltraSPARC, HP/Intel Itanium, Transmeta Crusoe, Intel Atom, 以及IBM POWER6。

乱序执行模式的逻辑复杂度是造成该技术在20世纪90年代之前没有成为计算机的主流的原因。许多低端的处理器受限于市场成本仍然未采用该范式,因为制造乱序执行的计算机需要大型的硅片。低能耗是另一种难以用乱序执行设计所实现的目标。

[编辑] 基本概念
[编辑] 顺序执行
主条目:指令周期
在早期的处理器中,指令的执行一般在以下的步骤中完成:

指令获取周期。
如果输入的运算对象是可以获取的(比如已经存在于寄存器中),这条指令会被发送到合适的功能单元。如果一个或者更多的运算对象在当前的时钟周期中是不可获取的(通常由于需要从内存)获取),处理器会开始等待直到它们是可以获取的。
指令在合适的功能单元中被执行。
功能单元将运算结果写回寄存器。
[编辑] 乱序执行
这种范式通过以下步骤打乱指令:

指令获取。
指令被发送到一个指令序列中(也称执行缓冲区或者reservation stations)。
指令将在序列中等待直到它的数据运算对象是可以获取的。然后指令被允许在先进入和旧的的指令之前开序列缓冲区。
指令被分配给一个合适的功能单元并由之执行。
结果被放到一个序列中。
仅当所有在该指令之前的指令都将他们的结果写入寄存器后,这条指令的结果才会被写入寄存器中。这个过程被称为毕业或者退休周期。
乱序执行的重要概念是实现了避免计算机在用于运算的对象不可获取时的大量等待。在上述文字的要点中,乱序执行处理器避免了在顺序执行处理器处理过程第二步中当指令由于运算数据未到位所造成的等待。

乱序执行使用其他“可以执行”的指令来填补了时间的空隙,然后在在结束时重新排序运算结果来实现指令的顺序执行中的运行结果。指令在原始计算机代码中的顺序被称为程序顺序,在处理器中他们被按照数据顺序中被处理,这种顺序中,数据,运算符,在计算机寄存器中变得可以获取。一般来说乱序执行需要复杂的电路来实现转换一种顺序到另一中顺序并且维护在输出时的逻辑顺序;而处理器本身就好像是随机执行的样子。

乱序执行所带来的益处随着指令管道的加深和主存(或者缓存)和处理器间的速度差的变大而增长。在现代计算机中,处理器的运算速度大大超越了内存速度,所以在顺序执行处理器等待数据的过程中,乱序执行处理器能够执行大量的指令。

[编辑] 发送以及分配的分离实现了乱序执行
一个由新的范式所造成的区别是发送步骤从分配步骤中分离的序列的产生和毕业周期从执行周期中分离的产生。这种范式的一个早期的名称是"分离架构"。在早期的顺序执行处理器中,这些周期在一种相对固定的,管道化的方式中被执行。

为了避免错误的运算对象造成的指令乱序的减少,一种被称作寄存器重命名的技术被采用了。在这种模式中,将会有更多的寄存器被架构所定义。物理寄存器被加上标签从而不同架构的寄存器可以同时存在。

[编辑] 执行和写回的分离允许程序重新开始
结果序列是解决分支预测错误以及异常/中断的必要部分。结果序列允许程序程序在一个异常后重新开始,这需要指令在程序顺序中被完成。结果序列允许结果由于一个错误的分支预测以及发在在旧代码上的异常被丢弃。

把指令分配到过去的分支的能力解决了预测执行。

[编辑] 微架构的选择
执行应该被发送到一个集中的序列还是分布的序列中?
IBM PowerPC处理器采用了分布在不同的功能单元中的序列而其他的处理器采用了集中式的序列。IBM使用了术语“reservation stations”来描述他们的分布式序列。
是否有一种即时的结果序列或者运算结果否则可以直接被写回寄存器?对于后者,序列的功能是由寄存器映射所处理,寄存器映射可以处理用于每条指令过程中的存器重命名信息。
早期的英特尔乱序处理器使用一种名为re-order buffer的结果序列,同时大部分之后的乱序处理器都使用了寄存器映射表。
更精确的说:英特尔P6类型的微处理器都同时具有一个ROB re-order buffer 和一个寄存器映射表的机制。ROB 主要是由分支错误预测恢复所推动。
英特尔P6类型的处理器是最早期的乱序执行处理器之一,但是被Intel Pentium 4 Willamette微架构所替代。多年后 Intel Pentium 4 Willamette 被证明是一个错误的由于性能和发热的问题,这一点迫使英特尔回到了P6架构设计并重新开始。结果便是诞生了酷睿,酷睿2和 Sandy Bridge系列处理器以及最新的Ivy Bridge系列


TOP

对,任地狱宣布最大70W一定是骗人的,杠神这种电光眼怎么会被欺骗上当呢。绝对WIIU上不了50W,上不了60W,骗人骗人骗人啊,都是骗人,吓不倒我杠神的!

我认为杠神在捣乱,杠神出去!



TOP

这是杠神的逻辑,他“认为”谁捣乱谁就是捣乱。所以根据这个逻辑,我也认为他捣乱他就应该出去。这还有什么好说的。

对杠神来说评价是否“捣乱”是根据主观的认为而不是客观的行为,所以用他的逻辑抽他的脸,其乐无穷啊。


TOP

对,所以WIIU绝对上不了50W,上不了60W,只要是比杠神所谓的实际功耗高的都是不可能的,杠神绝对不会信的。

杠神捣乱,我认为应该让他出去。

TOP

对杠神说没戏就没戏,杠神是耶和华是安拉。杠神说啥就是啥。

杠神说别人捣乱,举报了别人捣乱,人家马上就把帖子封了对吧。

我认为杠神捣乱,杠神快出去!

TOP

对,就是特别奇怪这些访谈大量都是针对日本制作人的却都是英语网页和英语新闻,原来现在日本的制作人不会说日语了,都要转移到英文网站去发表意见。

你说好好的访问日本制作人为什么都用英语新闻?他们是找不到日语新闻的原文么?还是……

杠神捣乱,我认为应该赶紧让他出去。

TOP

对,所以么,英语媒体就垄断了日本制作人的访谈,所以这些所谓的新闻就都是以英文出现的,所以就异常兴奋地日文转英文再到英文转中文,然后呢,利用英文媒体理解日语偏差,就指着英文新闻理直气壮“你看。这就是人家制作人说的!”一旦要是事后被揭发制作人根本不是这个意思,又扮出一脸无辜乞人怜相:“英文原文这么写的么,是媒体理解错了不是我错了!”恩,这法子还真是深了。

翻翻游戏业的历史,发现还真有此道同好者,就譬如当年的SCE,利用英语里没有生产出荷这个概念,那是理直气壮地把“生产出荷PSP1680万台”写成“出荷1680万台”,反正是给老外看么,他们又不懂啥叫生产出荷,不要搞糊涂人家,出荷出荷。结果搞得连FAMI通都捎带着丢人现眼一番。这还真是一脉相承啊。

杠神捣乱,我认为应该让他出去。

TOP

发新话题
     
官方公众号及微博