前言:
2005年6月,Apple公司宣布今后的MAC将采用Intel的处理器。这对于整个PC业界来说多少也算大事。人们听闻此消息,在目瞪口呆之余,似乎一个疑问也在各人心底慢慢浮起—Apple为什么会作出这种决定?
与会的Apple代表的振振之词:“要为全世界用户提供最好的计算机。”那么为什么不选择AMD?如果仅仅以AMD产能不足做为主要理由的话,这显得太过牵强,因为AMD现在的处理器在大多数的评测项目中能够击败PentiumD。而口口声声为用户提供最好计算机的Apple公司却青睐一个落后者。
晃眼看来这似乎让人难以理解。因为MAC的处理器转换并不是像从Power4迁徙到Power5那样的升级,而是从一个架构迁徙到另一个新架构,这需要对其一贯的操作系统和应用程序重新编码或修改。这项工程量很大,因此Apple做出这种决定一定不是一时的心血来潮,亦或者是其他的简单的商业炒做,它是对Apple公司内部和研发部门的一次大变动,是要伤筋动骨的大事。
正因为如此,Apple在做出这个决定的时候,不会仅仅看到眼前市场中的两公司孰强孰弱,更多的要关注AMD和Intel今后的表现,正是在这方面,Intel的潜力让Apple倾心相向。换句话说,Apple并非是对当前的Proscott核心感兴趣,这橄榄枝是伸向了Intel的新核心—Conroe。
电脑处理器Conroe详解" src="/article/UploadPic/2005-12/2005122092955304.jpg">
IDF论坛中展出的Conroe样品
P4面临的难题
俗话说:“穷则变,变则通”。Intel现在也穷,这不是财政上的穷,而是产品线不力,被对手已经逼到了“山穷水尽”的地步了。因此Intel也变,但这一路而来的变化探索却是曲折漫长,荆棘遍布。在千僖年中,Intel推出了尚未酝酿成熟的P4,从而为后面一连串的失利埋下了种子。
流水线长短的优劣
Northwood和Willamette核心的流水线为20级,相对于当时的PIII或者Athlon XP的10级左右的流水线来说,增长了几乎一倍。到现在市场上采用Proscott核心的PD和Celeron流水线为31级。众所周知,流水线越长,频率提升潜力越大,但是一旦分支预测失败或者缓存不中的话,所耽误的延迟时间越长。因此在Netburst架构中,Intel将8级指令获取/解码的流水线分离出来,而Proscott核心有两个这样的8级流水线,因此严格说起来,Northwood和Willamette核心有28级流水线,而Proscott有39级流水线,是现在Athlon 64(K8)架构流水线的两倍。
首先来谈谈较长流水线的好处。大多数读者仅知道流水线不足之处,而不知流水线亦有巨大的优势。在NetBurst流水线内部功能中,每时钟周期能够处理三个操作数。这和K7/K8,P6是相同的。那么站在纯理论的观点上,NetBurst架构每时钟执行3指令乘以时钟速度,就是最后的性能,由此可以看出,频率至上论有其理论基础。以此计算性能,则K8也非NetBurst对手。但这毕竟是完美的情况,现实生活中处处都是不完美的,影响性能的因素有很多,最主要的就是分支预测失败、缓存不中、指令相关性三个方面。
其实每一个处理器都会遇到上面这三个方面的问题,每一个处理器都有解决这三个问题的手段,只是各种解决方法的效果有差异而已。而不同架构的处理器受到其本身架构差异的影响,而产生出来的负面效果不尽相同。就如同每一个人都会受到地心引力的影响,但是较瘦的人,就远比胖子跳的高吧。而NetBurst架构恰恰就是这样一个胖子,天生的长流水线既是它的最大优势,也是它的最大劣势。如果一旦发生分支预测失败或者缓存不中的情况,Prescott核心就会有39个周期的延迟。这要比其他的架构延迟时间多得多。
发热量问题
电脑处理器Conroe详解(2)" src="/article/UploadPic/2005-12/2005122092955484.jpg">
I3是栅极氧化物隧道效应带来的漏电电流,I2是亚阀值漏电电流
另一个方面,就是处理器的发热量居高不下的问题。其中相当部分是因为新工艺带来的晶体管更加的细薄,从而导致漏电现象的出现。漏电功耗的增长是指数级的。它已经从一种“讨厌的小东西”迅速地发展成“芯片的怪物杀手”。
曾有一篇文章这样形容处理器的漏电现象:漏电现象就如同消防队员手中的消防水管上的一个小孔一样。管子里的水压越高(就相当于CPU中的核心电压),这个小孔就会越拉越大,喷洒到地上的水也就越来越多。如果水管壁越薄(相当于越来越精微的制造技术),那么同样地水管上的小孔就会越大,当然所导致的后果是浪费的水增多,使得水泵抽水灭火的难度加大。如果水泵过烫,那么只好让水泵减速工作,否则当它工作了一段时间以后,你就只能让它休息一段时间,然后再继续工作了。单核心已然如此,多核心处理器的发热量必更加严重。因此在投入大量精力研发治本的新工艺之前,将更智能有效的节能技术应用进来,方能标本兼治。
Intel技术路上的探索
当时Intel首先需要解决的是流水线过长而导致的效率偏低的问题。解决问题的办法并非只有一个,例如同样是Intel研发的处理器IA-64/EPIC(当然这不是一款X86处理器,在这里我们只讨论它的架构设计),和P4的架构最显著不同之处在于,IA-64的并行执行单元很多。我们都知道,P4的执行单元数量也有很多,甚至有一些平时根本就用不上,所以后来才有条件拿来做超线程技术。
但是P4的执行单元是分散在不同的流水线层中的,它们的排列方式是串行的,而非并行的。串行的执行单元就只能够依次执行,并行的执行单元则可以同时执行。很显然,并行执行单元是一个更为高级的设计,而IA-64正是基于这种设计,与此相似设计的处理器还有IBM设计的Power970,这是题外话,按下不表。
电脑处理器Conroe详解(2)" src="/article/UploadPic/2005-12/2005122092955546.jpg">
Intel
我们来具体比较一下NetBurst、K8和IA-64处理器中的执行单元数量。NetBurst有7个执行单元,分别是:两个简单整数单元,一个复杂整数单元,两个浮点数单元和两个内存专用的存取单元。K8中有9个执行单元,在K8中不分简单或复杂整数单元,因此K8的执行单元分别是:三个整数单元,三个浮点单元,三个内存单元。而IA-64有六个算术逻辑单元,三个分支预测单元,两个浮点单元,一个SIMD单元,两个读取单元,两个存储单元,一共是16个单元,并且这些单元是并行的。
IA-64有如此多的并行单元,它不需要太长的流水线,Itanium 2的流水线仅为8级,现在的最高时钟频率为1.6GHz,不过每时钟周期能够同时执行8个指令。因此按照纯理论的算法,Itanium 2的性能也超过了现在市面上任何一款Intel桌面处理器。对比IA-64和NetBurst架构,如果将P4称之为并行单元较少,流水线较长架构的话,Itanium 2恰恰相反,流水线较短而并行单元较多。不管怎么说,较短的流水线受到分支预测失败或者缓存不中所带来的负面影响总是较小,而并行单元执行起来效率和性能又较高,因此这看起来好像是一个完美的解决方案。
不过增加并行执行单元有它明显的优点,但是也要同时指出,其中的一个重大的缺陷,即代码在并行之前所进行的操作。程序员所写的或者编译器所产生的代码流是单一而连续的,因此在并行执行之前,首先要对连续的代码流进行重组。这个将连续代码进行重组,再被并行执行的过程,称之为“动态执行”。动态执行需要特殊的硬件来执行,因此这将会增加处理器的复杂度和芯片面积。
当然不是所有的指令都能够被重组进入并行执行阶段,为了尽可能的将代码流分解成可并行执行的结构,处理器必须首先有一组专门用于此运算的公共指令缓冲器,再由这些缓冲器构成指令窗口。指令窗口不是一个软件命令窗口,而是处理器内部用于动态执行的硬件核心部分。处理器用指令窗口来分析代码流中的指令相关性,从而决定有哪些指令能够被并行执行。为了能够实现并行运算,处理器的执行核心中势必会集成相当多的执行单元,如同Itanium 2一样。而执行单元越多,就需要一个越大的指令窗口来重组代码流,才能够让足够的多的单元运转起来。
电脑处理器Conroe详解(3)" src="/article/UploadPic/2005-12/2005122092955188.jpg">
一款单核心通用处理器的并行执行单元示意图
用一个非常大的指令窗口来缓存指令,对代码流的相关性进行分析和重组,最后来实现无序执行和并行执行。然而在指令级并行(Instruction-level parallelism,后简称ILP)这一过程中,能够最终从单一连续的代码流中,被分解重组的指令实在有限。这就意味着,处理器中为了并行运算而增加的执行单元,并不能够被充分的利用。
尤其是在Itanium 2这种极端的环境中,由于实在无法在每时钟周期中,提供给处理器足够的并行执行代码,因此大量的执行单元在多数程序的执行过程中,大多处于一种空闲状态。而这些无法充分利用的执行单元又占据了宝贵的芯片空间,还白白的消耗能量。可以说集成多个并行执行单元,并不是提升处理器性能的有效途径。
再则如果要尽可能避免缓存不中这种情况出现,以及向流水线供应充足的数据,需要配备超大的高速缓存,甚至到L3级别。例如Itanium 2配备了9MB的L3缓存,未来还将会出现配备24MB L3缓存的Itanium 2处理器,届时其内部晶体管数量高达17亿之多,是现在Smithfield核心的PD晶体管数量的8倍。当然这样的处理器售价也是桌面市场无法承受的。
2000年P4推出之后,正因为此架构具有上述几个主要问题,P4并没有被应用到移动市场中去。按照Intel一贯的做法,每当桌面市场处理器推出之后,经过简单的改造(增加节能技术),就投放到移动市场。但P4的功耗实在是太大了,让原本不多的笔记本电脑电池更显得捉襟见肘。Intel需要解决这个问题,既然不能够降低P4的发热量,一时之间也无法开发出新架构,Intel的眼光顺理成章的落在了P6架构的身上,于是就有了以色列开发小组开发出来的P6-M架构(就是后来的Banias,Dothan和Yonah)。
电脑处理器Conroe详解(3)" src="/article/UploadPic/2005-12/2005122092955360.jpg">
Intel
Pentium M处理器
P6-M的架构设计既没有采用P4的超长流水线设计,也没有采用Itanium 2的并行执行单元,而是选择了实用风格,也就是我们中国哲学中所提倡的“中庸之道”。P6-M的架构变化主要有这几个方面:缩减了流水管线(14级),降低了时钟频率,更新了节能技术,改进了分支预测,使用了Micro-ops fusion技术。这些变化的最终结果是让P6-M的执行效率得到巨大提升,而且还能够有效的控制发热量,从而让Pentium M成为最具有吸引力的笔记本电脑处理器。
Conroe架构的变化
正是务实的选择了设计风格,Pentium M在移动市场上空前成功,从第一代的Banias版本,到后来的Dothan,再到现在的Yonah双核心版本,已历三代。从上面的分析可以看出,Pentium M能够在众多困难之间,折中取得一个较好的平衡点实属不易。最重要的三个问题:发热量,执行效率和指令相关性都得到了较好的处理,同时也将产品成本控制在了一个合理的价位。这时我们不禁会想,如果下一代的处理器Conroe,能够基于Pentium M架构,再加上一些新技术,让我们不会因为低效率而困惑,不会因为高热量而烦恼,也是一件非常惬意的事情,而Conroe的确是基于Intel下一代移动处理器的衍生产品。
电脑处理器Conroe详解(4)" src="/article/UploadPic/2005-12/2005122092955979.jpg">
Intel最新RoadMap
在刚刚结束的2005年秋季IDF论坛上,Intel向外界传达出了更多关于新架构的信息。其中最引人瞩目的下一代桌面电脑处理器Conroe的架构变化也有迹可寻。首先Intel这款处理器架构要提高性能瓦特比,即每一瓦特能量能够产生多高的性能,再换句话说就是要用尽可能低的能耗换取最高的性能。那么Intel如何才能够实现这个目标呢?
首先让我们看看Conroe保留了哪些现在Pentium 4架构中的元素。第一:双核心架构肯定是保留了的,毕竟双核心已经成为未来发展的趋势。但是在Conroe中,双核心架构中缓存部分会有细微的变化。现在市场中的Intel双核心架构是采用独立的L2缓存结构,这样做虽然可以不用考虑缓存共享或资源竞争的局面出现,但是芯片的面积明显变大,成本也很高。
因此在新架构中,两个核心将共享一个4MB的L2缓存。第二:Conroe同样使用现在Pentium 4的前端总线频率,即1066MHz。前端总线受到制约的因素有很多,例如芯片组的发展水平或内存发展水平,再加上这并非Intel急于在新架构中解决的主要问题,因此Intel现在还并不打算提升前端总线的频率。第三:新架构仍然将采用乱序执行核心。第四:64位扩展显然也是必不可少的一个方面。
电脑处理器Conroe详解(4)" src="/article/UploadPic/2005-12/2005122092955962.jpg">
新架构将共享L2缓存
在架构变化中,第一个变化是处理器流水线缩短了。如我们前文中所提到的那样,NetBurst架构的流水线很长,而流水线是一把双刃剑,使用得不好的话,未伤人先伤己。而新架构要将控制能耗作为最主要的目标,因此不会将时钟频率提升得太高,不再需要太长的流水线。而且就算是使用较长的流水线,但芯片发热量的问题没有解决之前,频率也不会得到大幅提升,现在的Prescott就是最好的例子。
那么多少级的流水线比较合适呢?参照现在的Pentium M和Athlon 64架构,下一代新架构将采用14级流水线,至少可以在原来Pentium 4的基础上提升执行效率,不过想要在短期之内看到突破4GHz频率的CPU变成了一个不可能实现梦。
但新架构中最令人关注的变化是不支持超线程技术。当然现在还不确定是否超线程技术就被Intel彻底废弃了,但至少第一批基于这一架构的CPU将不支持HT技术。如果深入到超线程技术中探求一番就会发现,只有像NetBurst架构那样多的空闲执行单元,才有条件使用超线程技术,否则为什么Intel不在Pentium M中使用这项技术?现在新架构中仅采用14级流水线,这个深度和Pentium M大致相当,自然没有富余的空闲执行单元用于超线程应用。
除了采用较低的时钟频率外,Intel使用了其他的手段来提升性能。第一点:即在新架构中增加处理器并行执行单元,每时钟周期能够支持4个指令。在前文中已经讨论过了,P6/K8/NetBurst每时钟周期都只能够执行3个指令数。而同时执行指令数越多,意味着其处理能力越强,表现出来的性能越高。安腾CPU就是一个很好的例子。第二点:使用乱序执行设计,提升处理器资源利用率。支持乱序执行架构的微处理器能够重新组织其指令流,以最大限度利用其执行资源。除此之外,存储指令的乱序执行还能够提高CACHE命中率并降低CACHE访问的延迟。
在降低CACHE延迟方面有一个关键技术,称之为:Memory Disambiguation技术,即在存数和取数指令都乱序执行的情况下,保证取数指令都能取回它前面的最近一条对同一地址的存数指令所存的值。比如如果一条取数指令在一条存数指令之后且两条指令的地址相等,但取数指令先访问CACHE,也要保证取数指令取回该存数指令的值。
又如如果一条取数指令在一条存数指令之前且两条指令的地址相等,但存数指令先访问CACHE,也要保证取数指令取回原来CACHE中的值,而不是存数指令新存的值。这是有风险的。因为你刚刚读的数据可能会在CPU内部的处理过程中发生变化,从而出现错误。但是Intel称,这个系统非常聪明,可以得到不会发生变化的数据。
结语:
Intel计划在2006年发布新架构的处理器,除了桌面电脑的Conroe外,一同被发布的还有Merom和Woodcrest,前者是Intel未来的笔记本电脑处理器,后者则是新一代的服务器/工作站级处理器。从上面的介绍中可以看到,Intel在不断的探索一条CPU发展的新路,因此不管是P6也好,IA-64也罢,抑或是NetBurst,它们都是Intel的一种尝试,当然有成功也会有失败。
从IA-64中较短流水线和较多并行单元,到NetBurst中较长流水线和较少并行单元,Intel从一个极端走向了另一个极端,变化太大而性能表现却不尽如人意。而在Conroe新架构中,也可以看到以前架构中成功的影子,Intel在Conroe的设计中更加的务实和实际,少了几分当年发布NetBurst时的理想色彩,这让博采众家之长的Conroe实在令人期待。但现在来谈论其具体性能显然为时过早,期待2006年的IDF春季论坛,也许会透露出更多关于新架构的详细资料。
自从2001年发生惊心动魄的频率大战之后,现在已经过了许多年,如今的处理器早已不再以频率提升为主要手段来增加性能,但作为超高频率产物的Pentium 4依然留在市场中,仍然不时会爆出电脑发烧友用极端手段将Pentium 4超频至7GHz的消息,也许只有当新架构真正进入市场后,源自于Intel的频率至上论才能够彻底终结,展开一个以低能耗高性能比的新篇章。
新浪科技 文/包涵