|
在过去的几个月中,AMD在桌面芯片市场上的表现并不尽如人意。虽然十月份发布的Athlon XP 2800+是一个很有竞争力的产品,但是到了今天,市场上的2800+芯片和GeForce FX一样的已经越来越少了。反观AMD的对手Intel,在过去的几个月中,发布了频率最高的CPU奔4 3.06GHz芯片,由于使用了因特尔最新的超线程技术,所以成为了当时世界上最快的CPU。
但是AMD的追随者们一直都抱有乐观的态度,因为第八代的AMD芯片Athlon64即将就会面世,他们很有信心这款新的芯片可以把对手INTEL的奔4芯片打个落花流水。虽然AMD仍会如期发布基于Hammer的服务器CPU Opteron。但让人失望的是AMD再次宣布要推迟Athlon 64的发布日期到今年九月份。
在九月份Athlon 64发布之前,为了低档奔4的进攻,AMD的Athlon XP引进了新的元素,代码名为Barton,这种新的芯片的缓存是原来的两倍,从256k跳升到512k。其他的参数没有变化,只是缓存的大小变了,这样既提高了芯片的性能,又不会带来任何的副作用。这种性能的提高其实我们在因特尔发布Northwood的时候已经看到过;自Northwood发布以来,奔4的性能平衡了很多。下面我们就逐步介绍这款新的芯片。
认识Barton
二级缓存一直以来都是制约AMD处理器的重要因素。K6使用的是第六代处理器架构,但是它只有第五代处理器的片外二级缓存,缓存的频率只是66或100MHz。K6-III的二级缓存让人印象深刻,但K6-III的时钟频率只有450MHz。到了第七代处理器架构的Athlon,却只有第六代架构的二级缓存系统。相反,二级缓存让因特而的处理器光芒四射。奔2处理器就有半速的512KB二级缓存,它使用的是后端总线,这使得因特尔处理器的性能比同期的对手Cyrix MII和AMD K6高出一大节。后来,基于Coppermine的奔3之所以能和比它技术含量更高的Athlon不相上下主要归功于它的低延迟。在那时候,256KB的缓存不仅通过一个256位的数据通道进行访问,而且在4个时钟周期以内做出回应。(总的二级缓存延迟是7个时钟周期)
回到今天:由于奔四的时钟频率越来越高了,所以4周期的二级缓存延迟是不可能的了。但是奔4的二级缓存仍然很优秀。你从下表就可以看得到,ScienceMark2.0告诉我们因特尔的工程师们有多么的优秀。我们测试了奔4最快的处理器3.06GHz的奔4芯片。最精确的数据是列数从32byte到256byte,行数从32768byte到131072的数据流,因为我们确保这些数据段是在二级缓存中的,测试数据如下图所示:

延迟从8周期到17周期对一个运行在3GHz频率底下的CPU而言还是很不错的。八个3GHz的周期只等于2.4纳秒,比奔3的一级缓存要快。让我们看看二级缓存的带宽吧。

虽然19GB/s和理论上的96GB/s相距甚远,但是总的来说奔4的二级缓存还是很快的。理论值和实际值相差这么远的其中一个原因是只有SSE(-2)指令可以在一个周期内移动大于8bytes的数据。而且奔4一个周期内最多只能维持一条128位的指令。
让我们看看缓存对性能的影响有多大。当奔4把256KB的缓存提升到512KB时,它的性能提升了6%到61%。但是二级缓存只对使用浮点运算单元的应用程序有用,而对整型数的运算作用并不大。由于现在很多游戏使用浮点运算较多,所以二级缓存能够使游戏的流畅程度提高15到17%。
回到Barton,由于使用了更大的缓存,Barton的体积要比Thoroughbred的大。Thoroughbred由3.76千万个晶体管组成,而Barton则由5.43千万个晶体管组成。奔4的Northwood由5.5千万个晶体管组成,所以Athlon XP的晶体管的数量最终和奔4的一样。(有消息说最新的图像处理器的晶体管数目将达到一亿个)。在体积方面,Barton只比T-bred长一点,Barton的表面积由原来的84平方毫米增加到101平方毫米。因为现在缓存的晶体管可以被封装在较小的空间里面,所以Barton的体积不会特别大。而奔4的Northwood仍然有145平方毫米这么大。

所有Athlon的芯片都带有128K的一级缓存,平均的分配作为指令缓存和数据缓存。因为Athlon的二级缓存是独立于一级缓存的,二级缓存的内容和一级缓存的内容并不重复,所以,Athlon有效的总缓存比奔4的大。Athlon的Thoroughbred芯片的64K一级缓存和256K二级缓存加起来达到320K片内缓存。同样的,Barton的两片64K一级缓存和512K二级缓存加起来有效缓存达640K。
但是,光是缓存一个参数并不能说明任何的东西。我们不能只凭Athlon XP的缓存比奔4的缓存大就得出谁比谁性能更好的结论。因为Athlon XP和奔4毕竟还有很多方面不一样。
然而,我们可以预测缓存的增加对Athlon性能的影响。让我把它简单化吧。其实在CPU中加入内存的目的就是为了减少CPU访问主存的次数,因为访问主存与访问缓存比起来速度慢多了。这是因为,主存的带宽比片内缓存的带宽小,所以访问主存需要更长的时间。缓存存储的是一些可能经常要用到的数据或指令,所以使用缓存减少了CPU对主存的访问次数。新型的处理器使用运算法则来决定缓存内要存储一些什么内容,而最新的X86(包括奔4和Athlon XP)处理器甚至可以预测什么数据将要被使用,进而先把这些数据调入二级缓存。这样,当用到一些常用的数据和指令时,CPU就可以从缓存调用这些数据和指令,而不用访问主存。
我们先看看Athlon Thoroughbred的延迟分析

二级缓存的延迟在15(18)周期和21(24)周期之间。24个周期显得有点奇怪,根据AMD的技术文档称总的延迟在11个周期到20个周期之间,其他的缓存程序也证实最大的延迟为20个周期。但是,重要的是Athlon二级缓存的总延迟要比奔4的大。再看看带宽如何:

64位2.17GHz的二级缓存提供5.5GB/s的带宽给CPU的内核,比3GHz的奔4处理器小了3到4倍。但是,如果说Athlon的二级缓存非常的慢,而且影响了Athlon的性能还是言之过早。和奔4相反,Athlon的一级缓存会提供很多需要的带宽资源。比如,一个浮点运算程序有85%在一级缓存中,但是只有15%在二级缓存中。由于奔4只使用它的二级缓存,所以对于浮点数运算单元它有19GB/s的带宽量。而Athlon则有(0.85 x 19 GB/s + 0.15 x 5.5 GB/s) 17GB/s的带宽量。在大多数的应用程序中,特别是浮点运算中,Athlon使用二级缓存的频率比奔4要少。
于是我们可以说,Barton(640KB)和Thoroughbred(384KB)的性能差要比Northwood(512KB)和Willamette(256KB)的性能差要小。
|