改进还是革新——NetBurst与Core两代架构的对比

特别策划

作为Intel在桌面处理器市场取代Pentium的新一代产品——Conroe处理器能在低频率上取得令人刮目相看的表现,自然与其优秀的设计架构是分不开的。与在市场上纵横了近6年之久的NetBurst架构相比,新一代的Core架构有什么不一样?Core架构只是对原来NetBurst的架构进行一些细枝末节的改进,还是大刀阔斧的革新呢?

对比一:流水线长度从31级缩短到14级

为了便于提升CPU的主频率,NetBurst架构一开始就使用了超长流水线。Willamette和Northwood核心的流水线均为20级,相对于当时的Pentium Ⅲ或Athlon XP的10级左右的流水线来说,增长了几乎一倍。超长流水线设计让Pentium 4的主频很快甩开了竞争对手,以致于在后来的Prescott核心上,流水线长度居然达到了史无前例的31级!不过此时超长流水线的弊端也显露无遗:性能的增加远没有跟频率成正比,居高不下的功耗更是让Intel头疼。

在Core架构中,Intel终于大胆舍弃了NetBurst架构,只使用了14级流水线,这也是新老架构对比最明显的变化。流水线长度降低以后,虽然频率提升会相对困难一些,但低频率、低功耗和高性能三者可以兼得。

对比二:解码环节重回“简单-专用”体系

在CPU内部,一个指令被送到运算单元执行以前,必须先经过解码器进行解码,也就是把长度不一的x86指令分解为多个固定长度的微指令。解码效率的高低对程序的运行速度有着至关重要的影响。

首先在解码器类型上,Core架构重新回归到传统的“简单-专用”体系,解码器要么对应简单指令,要么对应复杂指令。而NetBurst架构的指令解码器则完全不同,它没有简单、复杂之分,每个解码器都能处理简单指令和复杂指令,该技术在遇到动态指令较多的应用时,解码器可以发挥较高的效率,不过,当遇到简单指令较多的应用时,解码器的效率反而不高。

其次在解码器数量上,Core架构成功引入了4个解码器设计。多年以前,AMD就想在K5处理器上尝试使用4组指令解码器,但没有成功,这是由于x86指令长度、格式与定址模式非常混乱,受此制约,CPU厂商一直未能突破3个以上的解码器设计,P6/Pentium M、NetBurst、K7/K8架构的解码器都只有3个。Core架构将简单解码器数量提升至3个,复杂解码器仍为1个,它最多能处理由4个微指令组成的复杂x86指令。

最后是增加了微操作和宏操作融合技术。微操作融合技术可以把多个解码后具有相似点的微指令融合为一个,从而减少了微指令的数量,CPU在单位时间内可以处理更多的指令。例如,宏操作融合技术可以将动态指令中的比较(compare)与跳跃(jump)语句融合为一条指令,让复杂指令解码器事实上拥有同时处理两条指令的能力。宏操作融合技术需要编译器的支持,由Intel来推广是不成问题的。

对比三:执行单元由分布式变集中式

为了保证指令被有序执行,指令在送到执行单元之前要经过中转器派发。NetBurst架构使用的是分布式调度器,而Core架构则使用集中式保留站。集中式保留站的优势是拥有更高的利用率,而分布式调度器能容纳更多的表项,两者各有所长。Core架构的保留站数量多达32个,为了进行相应的配合,Core的执行核心也重新设计了数据输出端口,相比P6的5个端口及NetBurst的4个端口,Core拥有6个数据输出端口,这将更好地满足现有CPU的数据传输需要。更加重要的是,Core有更平衡的执行单元分配机制,在NetBurst架构中,很多操作集中在一号端口,这样很容易产生严重的冲突,而Core有三个端口用于执行单元,所有端口都可以分发浮点搬移指令,此举可以有效避免指令分配上的冲突。

以往的NetBurst架构曾在浮点单元上进行革新,让1个浮点单元要同时处理FADD、FMUL、MMX、SSE、SSE2等多种不同指令,身兼多职也让它在传统的浮点测试中表现不理想。Core架构则拥有可同时处理向量和标量浮点数据的两个浮点执行单元,其中一个执行单元负责加减等简单运算,而另一个执行单元负责乘除等运算,两个执行单元还位于不同的分发端口上,这些举措有效提升了x86浮点运算能力。

Core架构的SSE执行单元首度提供完整的128位支持,每个时钟周期可同时执行128位乘法、128位加法、128位数据加载及128位数据回存,或者同时执行4个32位单精度浮点乘法与4个32位单精度浮点加法。虽然NetBurst架构也提供了128位执行单元,但它仅仅有一组,实际性能远落后于Core架构的产品。

29-d3-1-1.jpg
Core架构的SSE运算能力获得了很大提升

对比四:加入循环回路和间接分支预测

为了降低长流水线带来的负面影响,Intel曾在NerBurst架构的分支预测上投入很大的精力。Core架构不但继承了上代架构的跳转目标缓冲区、跳转地址计算器及返回地址堆栈,还采用了两种新的预测算法——循环回路预测和间接分支预测。循环回路预测可以记录下每个循环回路结束前的所有详细分支地址,当下一次同样的循环回路程序需要运算时,内核前端能以100%的准确度来快速完成任务;间接分支预测可以基于全局的历史信息获取正确的目标地址,它在应用时不是立即分支,而是从寄存器中装载需要的预测目标。这些举措可以让Core架构的分支预测能力再度提升。

对比五:二级缓存统采用共享机制

Pentium D的两个核心的二级缓存没有共享机制,缓存频繁的进行相同的读写操作导致两个核心的协作效率不高。为了克服这一问题,Core架构继承了Yonah的共享式缓存设计,两个核心共享二级缓存和系统总线接口,同时在一级缓存中引入了多个预取器,二级缓存可以根据当前数据访问模式和密度在两个核心之间动态分配带宽资源,这些举措让双核协作效率获得了明显改善。

在缓存结构上,Core架构同样有一些变化。Core架构的一、二级缓存都是写回式结构,而NetBurst架构的一级缓存是写通式结构,二级缓存是写回式结构。写回式结构可以对读写操作均提供缓存,而写通式结构仅对读操作有效,全部使用写回式的Core架构无疑更具优势。

编辑观点:

与曾经取得过巨大成功的P6微架构(Pentium Pro处理器所采用的架构)和NetBurst架构相比,Core微架构采用了很多创新的特性和设计,比如微指令融合技术、宏指令融合技术、内存相关性预测和庞大的SIMD及浮点执行资源,这也让Core微架构在任何方面都比它的“前辈”更优秀,尤其是它具备出色的性能功耗比(即每单位功耗的性能),成为革新的处理器架构。与同频率的Socket 939处理器相比,基于Core架构的处理器的性能比前者高20%以上,而且95W的功耗比对手的110W低10%以上。高效的内核加上合理的功耗,使人们对Core处理器的前景充满了期待。

撇开技术上的创新不谈,Core微架构的诞生还具有更重要的战略意义——扭转市场颓势。在过去的两年里,Intel一味追求频率至上的做法受到了业界的大量指责。事实证明,这种做法是行不通的。庆幸的是,Intel终于清楚地认识到了NetBurst架构的缺陷,推出了性能和功耗相当平衡的Core微架构,更重要的是,NetBurst架构的失败极大地刺激了Intel,使得Intel把更多的精力投入到了技术研发上面。有了正确的方向,加上长久以来积累的雄厚实力,相信迎接Intel的会是一个崭新的时期。

不过,从技术角度来看Core 微架构并非完美。因为当基于该架构的4核心甚至8核心处理器发布的时候,采用共享式二级缓存所带来的在双核架构上的优势有可能会被多核心共享前端总线的蹩脚设计削弱。相比之下,AMD的K8处理器及其后继产品(AMD计划2007年上半年推出采用新一代K8L架构的处理器来对抗Core架构)所采用的集成内存控制器与利用HyperTransport总线互连的设计使它可以在多路系统中紧逼Intel。打江山易,保江山难。希望 Intel不要减慢前进的步伐,更不能固步自封,只有不断创新才能在竞争中立于不败之地。