ZKX's LAB

超标量超流水线乱序执行 CPU乱序执行能增加多大Java和C代码的执行效率

2021-04-25知识5

乱序执行指的是什么? 乱序执行(outoforderexecution)是指CPU采用了允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术

乱序执行技术的历史 直到大约1993年前,大多数CPU一次只能处理一条指令。那时,如果采用流水线设计,譬如摩托罗拉68040或者英特尔80486,那么可以同时在不同执行阶段处理不同的指令。到了1991年和1992年,出现了MIPS R4000、Alpha 21064和奔腾这些处理器,它们属于面向通用市场的第一批“超标量”处理器:每个CPU周期可以处理(读取、执行及退出)两条指令。后来,1995年出现了Alpha 21264,就有了每个周期能处理四条指令的第一个CPU,时钟频率达到300MHz,这个速度在当时十分惊人。Alpha21664在微处理器论坛上一亮相,就引来了台下观众的一片赞叹,其中包括英特尔和IBM的设计者,更不用说Sun SPARC的设计者了。遗憾的是,Alpha最后没有成功。不管怎样,这些厂商当时都采用了有条不紊的有序执行技术(In Order):程序指令在执行时,按顺序读取、执行及引退操作码,每次执行两条或者四条指令。不同指令需要不同的执行资源,而且程序流程往往是这样:执行需要等资源被释放出来,或者指令依赖性(dependency)得到解决,才能继续执行下一条指令。更糟的是,每出现新一代CPU,就需要重新编译代码,针对新CPU进行优化,不然读/写指令之间很可能会出现太多气泡(bubble)即空闲时间,导致性能提升幅度。

Intel Core I7的流水线深度是多少? I7属Nehalem架构,是4核心、8线程、64bit、4超标量发射、乱序执行的CPU,有16级流水线(比C2Q多两级)、48bit虚拟寻址和40bit物理寻址。简单说来,Nehalem还是基本建立在Core微架构(Core Microarchitecture)的骨架上,外加增添了SMT、3层Cache、TLB和分支预测的等级化、IMC、QPI和支持DDR3等技术。比起从Pentium 4的NetBurst架构到Core 微架构的较大变化来说,从Core 微架到Nehalem架构的基本核心部分的变化则要小一些 奔腾Northwood和Willamette核心的流水线为20级,Proscott核心的Pentium D和Celeron流水线更增加到31级NetBurst架构中,英特尔将8级指令获取/解码的流水线分离出来,而Proscott核心有两个这样的8级流水线,因此严格说起来,Northwood和Willamette核心有28级流水线,而Proscott有39级流水线,是现在Athlon 64(K8)架构流水线的两倍PIII或者Athlon XP流水线10级左右

#超标量超流水线乱序执行

随机阅读

qrcode
访问手机版