第一页
Power6这个特立独行的架构为了提高时钟频率,从无序执行改为有序执行。
从有序技术到无序技术
直到大约15年前,大多数CPU一次只能处理一条指令。那时,如果采用流水线设计,譬如摩托罗拉68040或者英特尔80486,那么可以同时在不同执行阶段处理不同的条指令。
到了1991年和1992年,出现了MIPS R4000、Alpha 21064和奔腾这些处理器,它们属于面向通用市场的第一批“超标量”处理器:每个CPU周期可以处理(读取、执行及退出)两条指令。
后来1995年出现了Alpha 21164,我们就有了每个周期能处理四条指令的第一个CPU,时钟频率达到300MHz,这个速度在当时十分惊人。Alpha21664在微处理器论坛上一亮相,就引来了台下观众一片赞叹,其中包括英特尔和IBM的设计者,更不用说设计Sun SPARC的设计者了。遗憾的是,Alpha最后没有成功。
不管怎样,所有这些厂商当时采用了有条不紊的有序技术(In Order):程序指令流程执行时,按顺序读取、执行及引退操作码,每次执行两条或者四条指令。
现在,不同指令需要不同的执行资源,而且程序流程往往是这样:执行需要等资源被释放出来,或者指令依赖性(dependency)得到解决,才能继续执行下一条指令。更糟的是,每出现新一代CPU,就需要重新编译代码,针对新CPU进行优化,不然读/写指令之间很可能会出现太多气泡(bubble)即空闲时间,导致性能提升幅度不大,与竞争产品相比优势也不大。
这时候,无序执行(out of order execution)出场了。CPU硬件本身在读取指令后重新安排指令的执行顺序,根据现有资源情况,提供更多的执行单元、重新命名寄存器、处理好指令依赖性等等。所以,Pentium Pro和Alpha 21264之后的几乎所有新款CPU都是采用无序执行的处理器。
在多数情况下,无序执行可以加快芯片的运行速度,有时候加速明显。21264的速度就是21164的将近两倍,而Pentium Pro的速度也比奔腾快了一大截。经过重大改进的最新MIPS架构R10000也采用了无序执行。
网友评论