[img]http://zih.it.com.cn/files/2006227235531.jpg[/img]
图1 依据80/20法则划分的“冷代码”与“热代码”概念——前者占据X86指令总量的80%,后者只占据20%。与之相应,冷代码执行单元占据绝大多数硬件资源,而高度活跃的热代码执行单元所占据的硬件资源反而要少得多。PARROT优化之后,热代码执行单元被大大加强,冷代码单元则被相应缩减,在晶体管规模不变的前提下实现性能的跨越式提升。
过去,PC钟情于X86的原因在于软件兼容,尤其是微软只为X86 PC开发Windows系统,这也被认为是PC采用RISC架构的最大障碍。这个障碍最终也将被解除,Linux操作系统逐渐发展成熟,Mac OS X的综合水准更远在Windows之上,办公、图形、网络、多媒体相关的各类跨平台应用软件极大丰富。如果你是一个游戏玩家,RISC平台一定会令你大呼过瘾,将于2005-2006年发布的索尼PS3、任天堂Revolution和微软XBOX2等新一代游戏机产品将全面转入RISC体系(有趣的是,三种游戏机都采用IBM所设计的处理器,指令系统相同),短时间内许多品质一流的配套游戏软件将会大量涌现。只要指令系统相同,这些游戏完全可以实现平滑移植。
单从技术角度考虑,以RISC取代X86作为PC的主力架构的确是非常英明的选择,更高的效率、更快的速度、更低的成本以及同样丰富的软件支持, RISC PC将展现出勃勃生机。然而,这一切似乎不容易实现,无论Intel、AMD还是微软,它们的辉煌成就都构建在X86的基础之上,转向RISC对它们来说无异于釜底抽薪。目前执著发展RISC PC的只有苹果公司,它们的全系列PC都基于IBM的PowerPC指令架构。不幸的是,尽管苹果公司大名鼎鼎,但它对整个市场的影响力极其有限,PC转向RISC最大的障碍不在于技术或兼容性,而是缺乏一个实质性的领导者,但有迹象表明,蓝色巨人对此有着强烈的意愿,RISC能否把握住PC的下一个三十年尽皆取决于它。
即便不采用RISC架构,我们仍然可以借助它的思想对X86处理器进行结构性改良。事实上,X86处理器一直都从RISC产品中获取灵感,包括 EV6总线、整合内存控制器、超线程技术、双核心等等新技术新概念都是首先在RISC产品中得到成功应用,之后才被Intel/AMD引入到X86处理器当中。实践证明,这种做法往往对X86处理器的性能提升有着决定性的影响,而从RISC汲取营养也就成为X86业界的习惯做法。
不过,上述这些技术改良都只停留在应用层面,指令体系的根本差异成为X86与RISC之间的壁垒,若能借助RISC理念对X86处理器进行结构性改良,也许可获取更大的效益。Intel在IDF技术峰会上提出的“PARROT”概念便充分体现了这种思想。PARROT的全称是“Power AwaReness thRough selective dynamically Optimized Traces”,从其名称不难得知,PARROT是一项借助“动态优化执行路径”来提高处理器执行效率的技术。它的理论基础也是著名的80/20法则,但与RISC不同,X86处理器无法从指令系统层面上实现这一点。,Intel另辟蹊径,提出了一个全新的发展思路,将20%的常用指令定义为“热代码(Hot Code)”,剩余的80%指令使用频率没那么高,被定义为“冷代码(Cold Code)”。对应的CPU也在逻辑上被划分为两个部分:一是热核(Hot Spot),只针对调用到热代码的程序;另一部分则是冷核(Cold Spot),负责执行20%的次常用任务。由于热核部分要执行80%的任务,设计者便可以将它设计得较为强大,占据更多的晶体管资源。而冷核部分任务相对简单,没有必要在它身上花费同样的功夫。理论上说,设计者可以将80%的晶体管资源用在热核上面,使之高效率执行任务,剩余的20%晶体管资源则用于仅完成20%任务的冷核。相比之下,现在的X86处理器完全没经过结构优化,所有指令地位对等,80%的次常用指令占据了大量的晶体管资源,又没有创造出相应的价值,芯片内只有20%的区域处于活跃状态,这显然不够科学。
“PARROT”创造了一种崭新的双核概念,过去我们谈论的双核心指的是在一枚芯片内集成两个对等的CPU内核,通过并行运算获得性能增益,我们可以将它看作是横向维度的对等设计。而“PARROT”则是一种纵向维度的双核理念,热核与冷核地位并不对等,且无法独立运作,只能说是一个CPU内核中的两部分分立逻辑。它所起到的是提高CPU的硬件资源利用率,以高执行效率达到高效能的目的,这种做法显然比目前业界鼓吹的“双核心”更具革命意义。我们不妨深入分析“PARROT”的微架构(图2所示),处理器执行管道被分为“冷管道(Cold Pipe)”和“热管道(Hot Pipe)”两部分,二者都拥有彼此独立的取指和执行单元,当处理器读取程序指令时,会预先对其作分析,以判定它是归属于“热代码”还是“冷代码”。若为活跃的“热代码”,则将其送入“热管道”逻辑进行高效处理;如果属于“冷代码”,那么将其送入“冷管道”逻辑处理,所得结果最终再作汇总输出。
[img]http://zih.it.com.cn/files/2006227235612.jpg[/img]
图2 PARROT微架构,CPU被划分为相对独立的两个执行管道。
即便不采用RISC架构,我们仍然可以借助它的思想对X86处理器进行结构性改良。事实上,X86处理器一直都从RISC产品中获取灵感,包括 EV6总线、整合内存控制器、超线程技术、双核心等等新技术新概念都是首先在RISC产品中得到成功应用,之后才被Intel/AMD引入到X86处理器当中。实践证明,这种做法往往对X86处理器的性能提升有着决定性的影响,而从RISC汲取营养也就成为X86业界的习惯做法。
[img]http://zih.it.com.cn/files/2006227235612.jpg[/img]
图2 PARROT微架构,CPU被划分为相对独立的两个执行管道。
图3所示为“PARROT”处理器的详细执行路径情况,我们可以看到,“冷管道”部分相对简单,只有“指令缓存(Instruction Cache)”、“冷执行单元(Cold Execution)”和“分支预测单元(Branch Prediction)”,占据少量的晶体管即可。而“热管道”部分则显得相当复杂,它由“追踪缓存(Trace Cache)”、“追踪预测单元(Trace Prediction)”、“热执行单元(Hot Execution)”、“追踪优化(Trace Optimizer)”以及“追踪选择过滤&构建(Trace Select Filter&Build)”等几大逻辑单元共同构成,每个逻辑都被设计得尽可能强大。计算结果生成之后,再由“同步合成单元(Synchronized Commit)”组合汇总,最后才通过前端总线输出给计算机内存,由此完成整个运算过程。
[img]http://zih.it.com.cn/files/200622723566.jpg[/img]
图3 基于PARROT思想的X86处理器逻辑结构—冷代码与热代码在执行阶段被彼此分离。
PARROT的新奇思路令人耳目一新,通过对执行单元的结构性优化,X86处理器可以说是获得了重生。设计者可以对“热核”部分进行大大强化,使之拥有更高的效能,在执行多数任务时用户都可感觉到立竿见影的性能提升,而对于冷核的必要压缩则大幅度节省了晶体管资源,并可达到明显降低芯片功耗的目的。设计者可以在晶体管规模不变的前提下,让X86处理器获得数倍的效能提升。毫无疑问,PARROT对于深陷困境的X86架构无疑是雪中送炭,X86处理器将因此出现跨越性的技术进步。而换个角度看,PARROT完全可以说是RISC思想的伟大胜利,80/20法则再度成为魔法的关键,只不过,上一次 IBM基于此建立了伟大的RISC指令系统,而这次是Intel在保持X86软件兼容的前提下,成功实现了对微处理器结构的优化,两种做法可谓是殊途同归。据悉,PARROT技术将在2007年开始进入实用,“Merom”将成为首款基于PARROT思想的处理器内核。大家一定看过这样的新闻:2007 年Intel的服务器处理器、桌面处理器和移动处理器都将采用“Merom”内核,无论性能还是功耗都将有出色的表现,我们有足够的理由对它寄以厚望。
[img]http://zih.it.com.cn/files/200622723566.jpg[/img]
图3 基于PARROT思想的X86处理器逻辑结构—冷代码与热代码在执行阶段被彼此分离。