K7的称赞语我已经看得多了,“x86速度之王、第七代架构、运行Quake 3最快的处理器”,给Athlon带上了一顶又一顶的高帽,也有不少文章极力推荐大家购买Athlon。究竟这款所谓第七代CPU真的是那么好?能成为二十一世纪处理器界的领导者?相信这是各位都想了解的问题,下面就来共同探讨吧。
一、问题的出现:K7真的是第七代CPU?
目前,英特尔推出的CPU都是基于P6内核的,它们包括Deschutes(P2)、Katmai(P3)、Medocino(赛扬A)、Dixon(移动式芯片)、Coppermine、Xeon、Cascades,讲得好听是P2结构,讲得不好就是Pentium Pro(高能奔腾),这可是个在5年以前就上市的家伙,DIY嘛,总要来点新鲜刺激的东西,这时AMD Athlon出现啦!在刚上市的时候,它确实掀起了一场不少的风暴,许多人都不知不觉地受到了感染,但当大家冷静下来,看见Coppermine竟然可以和它并驾齐驱的时候,一个巨大的疑问终于出现在我们面前:K7真的是第七代CPU?为什么在Quake 3中,Athlon只比Coppermine快10%这么少,它的浮点不是很强劲吗?
众所周知,第一代CPU的最大不同之处就是浮点性能,486把数字协处理器集成在内核中,从而实现了386所没有的浮点能力。经典奔腾在FPU(Float Point Unit,浮点运算单元)内增加了一个管道FADD指令,性能比486提高了两倍。P6内核首颗芯片高能奔腾的管道FPU有两个运算单元,浮点性能与486有40%的差距,但Athlon仅比Coppermine快8-20%,这也太说不过去了吧。 如果Athlon真的是第六代芯片,它将无法胜过英特尔即将发布的Willamette芯片,如果它是属于第七代的产品,结果则更惨,因为明年我们会看到芯片巨人的IA-64(Intel Architecture,英特尔64位CPU架构),那可是一种十分强大的第七代产品。在弄清K7内核还会多少潜力可以发挥之前,请大家先看看它的背景。
二、AMD的发展之路 一直以来,AMD的前进道路都是非常艰难。它自己设计的第一款芯片是1995年发表的K5,这亦是首个可以把CISC(Complex Instruction Set Computing,复杂指令集计算机)指令解码成RISC(Reduced Instruction Set Computing,精简指令集计算机)指令的X86 CPU。本来它的性能是高过Cyrix 6x86和奔腾的,但失败之处在于时钟速度不足及推出时间过迟,在先机尽失的情况下,只占到很少的市场份额。 在开发K5的同时,AMD收购了另一间小芯片设计公司Nexgen,其CPU特性是拥有48KB一级缓存和可编程背置二级缓存(像Athlon一样)。AMD以Nexgen 686芯片为基础开发出K6,为了兼容Socket 7接口,AMD去掉了二级缓存,但增加了一级缓存的容量。在设计上,这也是一款相当成功的产品,但它遇到了一个可怕的对手----英特尔奔腾II,以下就是K6的缺点: 1、由于芯片制造工艺的限制,当年的0.35技术跟本没可能在CPU内集成二级缓存(今天的0.25微米K6-III完成了此项工作),而英特尔破天荒地采用新型Slot 1架构,反而实现了二级缓存,尽管只有CPU一半速度,但已经比主板上的Cache快多了。 2、因为没有时间改善Nexgen 686的设计,K6仍然没有管道FPU,在整数能力强大的背后是浮点运算的严重不足。 3、低潜伏时间,它意味着不能采用更深的管道和制造困难,所以AMD的时钟速度提高方面始终追不上英特尔。幸运的是,K6的RISC结构能够完成高时钟速度才可能做到的工作,这比它仅有的6层管道有效得多。 令人惊奇的是,AMD仅仅用了一年时间,就完成了K6内核的改进工作,带着K6-2再次向英特尔挑战。9个月之后,K6-III(Sharptooth)亦上场了,它成为了市场上最快的整数处理器。在性能提高、英特尔放弃低端市场、1000美元以下PC流行等几种因素的共同作用下,AMD取得了部分零售市场,成为一款十分成功的产品。一鼓作气、不断前进才有可能取得更多胜利,AMD按着这个方向努力发展,又推出了第七代芯片--Athlon。 K7现在遇到的情况和当年P2上市时一样,“奔腾II并不比多能奔腾(Pentium MMX)快多少,这就是一个第六代CPU可以做的事吗?”,我以前也问过自己这句话。但不要忘记了,增加了分支预报、MMX技术、两倍一级缓存的P55C已经比原始的奔腾P54C强劲很多,简单地说,就是拥有新一代特性的旧式产品,如果在时钟频率相同的条件下,奔腾MMX也不会比Coppermine慢多少?
三、怎样识别新一代CPU? 这个问题可能谈上几天几夜也说不完,因为它并没有一个固定的标准,但是我们仍然可以依靠某些规则来简单地判别一下。以前,大家总是用CPU的自身体系来决定一切,而现在我推荐的方法是不以内部设计来决定,仅以性能为基准来决定它是否新一代产品。换句话来说,如果一款产品可以提供比前一代产品高50%浮点性能,它就是新一代的CPU。相当公平,不是吗?这既没有受到制造技术和晶体管的限制,也与处理器接口架构设计无关。无论是Socket 370、Slot1,还是Super 7、Socket 8,它们都处在同等位置,用性能来衡量一切是最准确的。 我们再来看看K5,虽然很多人把它看成是第五代芯片,但请看清楚微处理器的内部结构,它拥有许多第六代芯片的特征: - 把CISC解码为RISC - 推理和乱序执行 - 高级分支预测 由于设计上的问题,它的时钟速度一直没法提高,只有更换新内核才能达到新一级水平。你能说K5是第六代产品吗? 大家一定听说过WinChip,它可是个整数性能相当强劲的CPU,不过芯片内部只有单通道指令流、顺序执行这些第四代芯片已经拥有的技术,即使如此,也不能称之为486吧。
四、基准测试 1、SPEC SPEC(System Performance Evaluation Corporation,系统性能评估测试)是一个检查CPU性能的Benchmark,它有各种平台的版本,让你很容易就比较Coppermine、UltraSparc和G4的差异。然而,它还是不能准确地分辨出新旧的CPU。SPEC FPU采用了一个非常巨大的数据集合,测试机器需要近8MB的缓存来处理它们。因此内存的LOT性能和二级缓存的速度及容量才是关键,中央处理器所起的作用不大。在实际PC应用中,FPU通常用来处理3D建模、动画程序、3D游戏、压缩算法等东西,二级缓存对之影响极小,反而一级缓存对它们很重要。所以从SPEC FP中并不能看出CPU在真正使用时的性能。最明显的例子就是英特尔所公布的奔腾III SPEC Int和SPEC FP值,看起来好像不错,但大家都知道SSE(Streaming SIMD Extensions,单一指令多数据流扩展)指令集对今天的程序没有什么大的帮助,这不是自欺欺人吗。所有的硬件厂商(包括HP、API、SUN)都有专门的队伍来写编译程序,以得到更高的SPEC值,另外,微软这个英特尔最强有力的伙伴也会专门为P3芯片作优化。由于SPEC仍然承认这个变了质的数值,所以我们不能采用此测试来进行评估的标准。 2、ZD FPUMark ZD实验室的FPUMark是非常著名的测试程序,它提供了几组等式求解运算来测试CPU的浮点能力:FFT(fast Fourier transform,快速热欧姆转换)、行星轨道计算、区域多边形计算、高斯-约顿系数消除线性方程。也许大家已经学过了,FFT包括了正弦和余弦来进行计算,在P3或K7上亦要耗费100周期以上的工作时间,因此,软件发展商都尽量避免使用此类复杂的函数。行星轨道计算运用FSQRT(Square Root Calculations,平方根计算)、FDIV、大量的FADD和FMUL指令。它们都是对浮点要求很高的等式,而FPUMark使用的FSART和FDIV计算只比大多数实用程序多一点,可以反映FPU的性能。 那么FPUMark足够了吗?不,我们还未了解到一颗CPU混合使用各种浮点指令时的速度,必须再加上低级语言的双精度计算,才能使测试值接近真实。 3、Flops 不知大家是否还记得,我曾经介绍过Flops这款用微软Visual C++编成的测试软件,它包括了FADD(Floationg Point Addition,浮点加)、FSUB(Floationg Point Subtraction,浮点减)、FMUL(Floationg Point Multiplication,浮点乘)和FDIV(Floationg Point Divide,浮点除)。它可以检查机器的MFLOPS(Million Floationg Point/Second,每秒百万个浮点操作)能力,并增加了混合计算,从而评估了CPU的峰值FPU性能。由于使用寄存变量,系统主内存和缓存对它的影响非常小,终于可以看见CPU本身的威力啦。下表是4个测试所使用的浮点算法:
-------------------------------------------------
Flops测试 FADD FSUB FMUL FDIV
Flops (1) 40.4% 23.1% 26.9% 9.6%
Flops (2) 38.2% 9.2% 43.4% 9.2%
Flops (3) 42.9% 3.4% 50.7% 3.4%
Flops (4) 42.9% 2.2% 54.9% 0%
-------------------------------------------------
掌握每个测试所需的浮点算法是非常重要的,吞吐量计算用于测试浮点单元所能容纳的浮点指令数目,潜伏期计算用于测试完成计算的时间,例:K7每个周期可以开始一条FADD指令,然后用4个周期完成结果,那么它的计算能力就是1 FADD/周期。注:S=Single,单精度计算;D=Double,双精度计算。
--------------------------------------------------------------- 测试项 P6(吞吐量) K7(吞吐量) P6(潜伏期) K7(潜伏期)
FADD 1 1 3 4
FMUL 2 1 5 4
FDIV S 17 13 17 16
FDIV D 32 17 32 20
FSQRT S 28 16 28 19
FSQRT D 57 24 57 27
--------------------------------------------------------------- 从中可看出,Athlon的平方根运算比P6要快30%。K7的三个并行浮点单元在测试中发挥了极大的威力,由于能够并行工作,在K7的FMUL管道繁忙的时候,FADD管道也能接受FADD计算。相比较之下,P3的单端口双浮点单元就要差多了,FMUL管道繁忙的时候,是不能分心的,其它操作只好等到下一个周期了,所以P3在每个时钟周期内只能进行1个x87(即浮点)计算。
4、浮点性能大比拼 讲了这么多理论,还是来看看实测吧。
---------------------------------
待测芯片 FPUMARK 99
PMMX-200 780
PMMX-233 910
PII- 233 1230
K6-2 400 1320
K6-III 400 1350
赛扬A 400 2100
PIII-600 3000
PIII EB 733 3900
Athlon 600 3270
Athlon 700 3810
---------------------------------
P3第一次超过了K7,但由于时钟频率不同,比较是没有意义的。
--------------------------------------------------------------- 待测芯片 Flops1 Flops2 Flops3 Flops4
P-MMX 200 35.3 36.4 55.6 76.3
K6-2 400 54.4 58.7 86.0 118.5
K6-III 400 54.5 58.8 86.1 118.6
赛扬A 400 122.4 95.6 142.3 181.7
PIII-600 BX 182.7 143.0 213.2 273.2
PIII EB 733 223 174.5 260.1 332.9
Athlon 600 268.4 217.9 292.6 350.8
Athlon-700 312.6 253.6 340.3 407.7
---------------------------------------------------------------- 从上表可知,工作频率和全速的二级缓存都会对浮点性能有轻微影响。CPU的时钟是与制造内核有关的,每个内核总有一个极限,请见下表:
--------------------------------------------------------
CPU 内核 最大时钟速度
第五代/0.35微米 奔腾P54C 200
第五代/0.35微米 奔腾MMX P55C 233
第六代/0.35微米 P2(Klamath) 300(比P54C快50%)
第六代/0.25微米 P2(Deschutes) 500(比P55C快28%)
第六代/0.25微米 P3(Katmai) 550
第六代/0.25微米 P3(Coppermine) 暂时为733
第七代/0.25微米 Athlon 暂时为750(比P2快50%)
第七代/0.18微米 Athlon ? (比P3快25%-35%)
--------------------------------------------------------
其实750MHz并不是K7的最大时钟速度,我曾经试过把650和700超到800MHz,都是非常简单的事情。但现今主板的电能供应问题,使AMD难以正常推出新产品。不要忘记了,芯片也是需要大量电力的,3dfx最新的Voodoo 5 5500就提供了一个额外的变压器来供电。相比之下,P3就没有那么幸运了,几乎没有可以超到630MHz以上的Katmai。 另外,你可以从性能增值中看到,P55C和P2(Deschutes)都是一些改变了微处理器内核的产品,它们属于代间产品,其速度比原始核心快得多。 下表是相同频率不同内核的芯片比较,它会让你了解到CPU的浮点能力。
---------------------------------
CPU FPUMark 99 性能提升
K7 600 3270 9%
P3 600 3000
---------------------------------
CPU FPUMark 99 性能提升
P2-233 1230 35%
PMMX233 910
---------------------------------
单精度测试中,Athlon并没有表现出第七代的优势,还是再看看双精度的测试比较。
-------------------------------------------------------------- 待测芯片 Flops1 Flops2 Flops3 Flops4
PIII-600 BX 182.7 143.0 213.2 273.2
Athlon 600 268.4 217.9 292.6 350.8
性能提升 46% 52% 37% 28%
-------------------------------------------------------------- 与同频的P3相比,K7的浮点性能平均提高了(46+52+37+28)/4=41%,毫无疑问,它绝对称得上是第七代处理器。在FPUMarks反映的现实中,微软为英特尔x87 FPU作过优化,如果它能稍稍照顾一下AMD,K7更能显出其强劲之处,毕竟谁也不能小看首个拥有88入口直接注册文件的乱序执行FPU。 ZD的FPUMark是按工业标准来设计的,并没有通过K7的直接解码器来操作,而是引用入向量解码指令。如果它采用微软或其它编译程序,Athlon的表现肯定出色得多。实际上,K7的单精度浮点运算也不差,下面让我们看看著名3D测试软件3DMark 99的得分。
---------------------------------
CPU 3DMark 99 性能提升
K7 600 6204 23% P3 600 5040
---------------------------------
CPU 3DMark 99 性能提升
P2-233 1610 28% PMMX233 1200
---------------------------------
怎么样,我说得没错吧。尽管3D Mark不是纯粹测试FPU的性能,而且大容量和快速的二级缓存还作了一定影响,但得分更为接近现实的情况,可信性也是比较高的。
五、整数性能 说了这么久,我们一直在讨论CPU的浮点性能,要成为真正的第七代产品,整数运算也是必不可少的。第二回合,让我们比较一下K7与P3的整数性能。
---------------------------------
CPU CPU Mark 99 性能提升
K7 600 55.9 25%
P3 600 44.7
---------------------------------
CPU CPU Mark 99 性能提升
P2-233 18.7 34%
PMMX233 13.6(66MHz外频)
---------------------------------
CPU CPU Mark 99 性能提升
P2-200 17.9 19%
PMMX200 15(100MHz外频)
---------------------------------
由于二级缓存对整数运算的影响极大,因此测试是在同等设置下进行的,而它的得分情况与浮点有少许不同,只要有25%的性能提升就可以看成是新一代芯片,而K7亦刚好合格。如果不对Cache加以限制,拥有1MB全速缓存的高能奔腾就比无缓存的P6赛扬(Covington)快得多,那么它不是成了第七代芯片了吗?
六、芯片尺寸 除了性能之外,我们也可以从芯片尺寸来分辨出CPU的等级,新一代芯片总是比前一代产品大很多。
----------------------------------------------------
产品 制造工艺 芯片尺寸
奔腾 0.35微米 83平方毫米
奔腾MMX 0.28微米 128平方毫米
奔腾2 0.28微米 203平方毫米(比MMX超出60%)
奔腾2 0.25微米 131平方毫米
奔腾3 0.25微米 128平方毫米
Athlon 0.25微米 184平方毫米(比P3超出40%)
----------------------------------------------------
七、总结 浮点、整数和芯片尺寸三方面都证实了Athlon确实是第七代芯片,但单精度FPU测试显示K7仍然缺乏软件发展商的支持。如果没有专门的优化软件,其潜力将不能完全发挥。另外,K7及主板的兼容性还很差,在运行时常常会出现莫名其妙的冲突和死机现象,AMD在很早以前就宣布Athlon支持SMP(Symmetric Multi-Processing,对称式多重处理架构),但直到现在为止,我们还未见到过一块双K7主板,这亦证明了Athlon的稳定性确实存在问题,所以我并不推荐大家拿它来作工作用机。真不明白为什么会有那么多人建议普通用户购买K7,难道各位都喜欢仅用于超频或玩Quake 3的机器吗?其实,我写此篇文章的目的并非想指责K7,而是提醒大家,要促进一样事物发展,在赞扬它的同时也必须指出它的不足,绝不能只褒不贬,否则很容易造成新事物的停滞不前,好心反而干坏事。毕竟Athlon拥有相当的潜力,如果充分发挥出来的话,应该不惧IA-32的挑战,至于IA-64,自然有K8去应付。