简介:
它是一款高速的专业的64位计算机,它的外观十分的漂亮,它的队最终用户十分的友好,它代表了一种生活方式,它代表了一个阶级。它就是苹果的G5。
由于一些得原因,对于苹果机器的测试总是很神秘。在一些测试中,你会发现它只不过是一台普通的pc,而在另一些测试中则显示出其超强的性能,其在个人电脑中的卫冕之王的地位。

本文只讨论速度和实际表现,对诸如工业设计和用户友好性方面都不去讨论。文中对Xeon DP 3.6 GHz (Irwindale), Opteron 250, Dual G5 2.5 GHz和Dual G5 2.7 GHz作了全面的比较。
PowerMac是相对于x86架构pc的另一种选择,不过我们并没有考虑去测试其游戏性能。首先你可以花钱去买一块强的显卡,因为就算是最高端的PowerMac也仅仅标配Radeon 9650显卡,而且该平台支持的游戏数量完全不能和x86架构的pc相比,最后就是骨灰级玩家通常喜欢打造自己的个性电脑。
于是我们测试的焦点放在工作站和服务器的应用上面,特别是开放源代码的应用(如MySQL, Apache)。64位的G5运行OS X Server 10.3 (Panther)和OS X Server 10.4.1 (Tiger), 而x86架构的pc运行64位服务器版的开放源代码的Unix系统:SUSE Linux SLES 9 (kernel 2.6.5)。我们同样在老一些的Xeon 3.06 GHz ( Galatin, 1 MB L3)上运行了SUSE SLES 8 (kernel 2.4.19)来作为参考。一些工作站的测试是在Windows XP SP2上完成的。
IBM PowerPC 970FX简介
G5的cpu其实就是IBM的PowerPC 970FX处理器。RISC指令集十分的复杂因而很难称作精简。它提供了32个architectural寄存器,这些寄存器对于程序员来说是可视的,特别是汇编的程序员。这是可以在二进制代码编写中使用到的寄存器。

PowerPC 970FX的汇编程序员应当编辑出表达清晰的代码以免造成L1-cache,重名寄存器和architectural寄存器之间的数据混乱,而这样做的结果是表现上的提升。有内部人士指出PowerPC 970FX所面临的寄存器上的压力比诸如EM64T和AMD64这些只有16各寄存器的cpu来的小,而EM64T和AMD64又比其上一代的只有8个architectural寄存器的32位x86处理器来的小。不管怎样,那在纯64位模式下多出来的8个architectural寄存器使得64位的x86程序性能提高了10%-30%。
970FX有着很深的管线,比起Athlon和Opteron的都要深,Opteron拥有12阶的管线用于整数运算,970FX的更深,有16阶。浮点运算方面则是21阶,而Opteron仅仅只有17阶。21阶使得很容易联想到Pentium 4 Northwood,但是要注意到的是Pentium 4在trace cache前还设置了8个阶,也就是总共具有20个阶。在有分支预测的情况下970FX和Pentium 4 (Northwood)表现接近,而在频率方面970FX理论上比Opteron快,但是并不接近老的Pentium 4。

970FX的设计思路十分大胆。它不但具有更深的处理器管线,而且其在一个时钟周期内能同时处理5条指令。Operton只能支持3条,Pentium 4的trace cache带宽限制其一个时钟周期内只能处理两条x86指令。
970FX具备乱序执行能力且运行中可以保存200条不同的指令,而Pentium 4只支持126条。它在一个周期中可以从L1 cache中取出8条指令,并且以相同的速度对指令进行解码,它可能是out-of-order CPU的终极版本。
运行中保持200条的指令刚刚好。因为如果没有一个限制,cpu就会保持上千条的指令,而调度器又需要从缓存中调出独立的指令。搜索和分析缓存是十分耗时的,对于主频2.5GHz的cpu来说,时间是十分有限的。诚然缓存越大越好,但是一个时钟周期内可以分析的却有限。执行中的前端缓存一般是100条指令,这仍然比起Athlon64的三组72条指令来得多。
970FX和G%同样支持分组,但分组比较的粗糙,一个分组里有五条指令。分组使得重排序和追踪来得比直接处理100条指令要简单。
同时分组又是其最大的缺点。Itanium同样支持分组,不过其有编译器的辅助。在970FX中,分组必须受到一些的限制,比如说一个分组只能有一个分枝。还有一些其他的约束,本文中就不提了。分组中的操作包括NOOP,no-operation,以及什么都不做的指令组成。当某个指令所需要的资源的不道的话,那个分组将不会被执行。可以看出分组使得其不怎么灵活。
分支预测由两个不同的16K的记录表来进行,还有一个16K大小的选择器来监督两种方法的效率。分支预测看起来像是IBM设计人员的一个主要的考虑。
内存子系统
其cache和x86比起来是比较小的。64KB的I-cache和32KB的D-cache确实很普通,512KB的L2-cache就今天的标准来说确实有点小了。不过这并没引起什么争议,倒是内存延迟的问题更多的引起大家的争议。Apple网页公布的RAM访问时间是135ns,而相对的Opteron的RAM访问时间是60ns,Pentium 4(875芯片)的访问时间是100-115ns。
LM bench 20.4的测试数据具体如下:

可以看出内存延迟着实是G5的一个重要问题。
不过值得一提的是出色的FSB带宽,G5/Power PC 970FX 2.7GHz FSB的频率达到1.35GHz(双向),单向具备10.8GB/S的传输能力,虽然双通道DDR400最多只能使用6.4GB/S的带宽,但是考虑到8个预取数据流来说,带宽还是会得到有效的利用。
不同核心的比较
下面就Intel Xeon/Pentium 4,Opteron/Athlon64,G5和较早前G4中使用的cpu进行全面的比较:

总结一下,理论上PowerPc 970FX有很宽很深的管线,很强的分枝预测能力和对于流动应用梦幻的特征。并且它还有两块并行浮点运算单元和一个SIMD Altivec单元,它们在一个时钟周期可以进行四次运算。970FX的缺点是其控制指令的流动比较粗糙,并且有较高的内存延时。
理论归理论,下面我们来实际测试G5 2.5 GHz以及2.7 GHz和3.6 GHz Xeon Irwindale以及Opteron 250 (2.4 GHz)。
测试环境
我们使用SUSE SLES9中的MySQL version (4.0.18)以及Mac OSX Tiger10.4.1。
软件:Intel,AMD
SUSE SLES9(SUSE Entreprise Edition),Linux Kernel 2.6.5,64bit 工作站测试:Windows XP SP2
软件:Apple PowerMac G5
OS X 10.4.1 Tiger, 64 bit(partially)
软件:其它
MySQL 4.0.18, 32 and 64 bit, MyISAM engine Gcc 3.3.3
硬件平台
Apple PowerMac 双2.7 GHz,双2.5 GHz 4 GB (8x512 MB) Corsair XMS3200 延迟为3-3-3
双Intel Xeon DP Irwindale 3.6 GHz 2 MB L2-cache, 800 MHz FSB - Lindenhurst Chipset Intel服务器主板SE7520AF2 4 GB (4x1024 MB) Micron Registered DDR-II PC2-3200R, 400 MHz CAS 3, ECC enabled NIC: Dual Intel PRO/1000 Server NIC (Intel® 82546GB controller)
双Xeon DP Galatin 3.06 GHz 1 MB L3-cache, 533 MHz FSB Intel SE7505VB2 board - Dual DDR266 2 GB (4x512 MB) Crucial PC2100R - 250033R, 266 MHz 延时为2.5 (2.5-3-3-6) NIC: 1 Gb Intel RC82540EM - Intel E1000 driver.
Opteron服务器:Dual Opteron 250 (2.4 GHz) Iwill DK8ES Bios version 1.20 4 GB: 4x1GB MB Reg. Transcend (Hynix 503A) DDR400 - (3-3-3-6) NIC: Broadcom BCM5721 (PCI-E)
客户端设置:Dual Opteron 250 MSI K8T Master1-FAR 4x512 MB infineon PC2700 Registered, ECC enabled NIC: Broadcom 5705
通用的设备 1 Seagate Cheetah 36 GB - 15000 rpm - 320 MB/s Maxtor 120 GB DiamondMax Plus 9 (7200 rpm, ATA-100/133, 8 MB cache)
FPU测试
因为软件的问题,我们很难将intel pc和Apple的机器来做比较。事实上Apple的Final Cut Pro或者是Intel上比较好的Adobe Premiere都不太适合拿来比较G%何X86PC。于是在我们进行应用测试前,我们对基准测试分别作了编译。
我们采用Flops测试软件进行浮点运算测试,基准测试包括70%浮点运算指令、4%的分支指令以及4%的内存指令。下面是测试的结果:

结果很有意思。首先,我们在测试前曾用gcc汇编器将基准测试程序进行编译从而适应所有平台,但是从结果看来,gcc好像并不擅长生成SIMD代码,gcc只在第三个测试中使用了Altivec,在这点上,G5显示了其比Opteron和Xeons更加优越的性能
当我们关闭对SSE-2的支持并且设置成“mfpmath=387”时,Xeon Irwindale反而表现的更好,这说明GCC汇编器对于SSE-2指令的优化存在一点点紊乱。当然我们也可以采用速度更快的Intel汇编器试一试。
同样有趣的还有3.06GHz Xeon比3.6GHz Xeon Irwindale表现要好。可见Irwindale L1 cache较大延迟(四个时钟周期)对其影响甚大。相比之下,类似于Northwood的Galatin Xeon由于其较低的延迟(两个时钟周期)从而表现要好许多。
这项测试得到如下的结论:Operton拥有更好的FPU,尤其是面临像FDIV(除法)这样复杂的指令时更能发挥它的性能。当FADD/FSUB和FMUL的混合比例各占50%时,G5才会比较的敏感。其通常情况下的FPU很普通。
分支预测测试
这项测试中我们使用“Queens”。Queens是一款著名的分支测试软件,它的主要思路是将n个国际象棋王后放在n*n的格子中但每个王后都不能攻击到其它王后。测试软件运用包含n多分支的穷举算法求解。Queens包括:23%分支指令,45%内存指令,没有FP操作。下面是测试的结果:

在2.7G的情况下,G5和Xeon同样的快。很明显,尽管有31阶的管线,Xeon Pentium 4仍然能将损害讲到一个很低的水平。Opteron的分支预测水平和G5差不多。
G5作为工作站处理器
大家都知道G5是一款很强的工作站处理器。它几乎是运行Adobe After Effects和Final Cut Pro最快的CPU,因为这些软件就是设计在PowerMac上来应用的。不幸的是,我们并没有这些软件来测试。
首先来测试Povray下面是结果:

Povray运行时主要消耗L2和L1cache的资源,测试结果与Flops极为相似。当不存在Altivec或SSE-2优化时,Opteron是最快的cpu,G5的FPU比其中一款Xeon稍好。
下面两个测试都是32bit,在x86的Windows XP环境中运行。

G5在Lightwave中表现不俗,Netburst架构在这项应用中表现得十分成功。我们并不清楚软件是否对Altivec做了优化。或许这正是Apple市场占有率不高的结果。

Maxon曾努力更新Cinema4D引擎以使它更好的运行在G5平台上。测试结果中我们看到G5赢了最好的X86处理器。
G5作为服务器处理器
Apple真正的服务器平台是Xserve而不是PowerMac,不过我们抵挡不住对基于G5的服务器平台进行测试的诱惑。在这台机器上我们安装了Mac OSX Tiger。事实上,我们对于Apple平台作了一些优化:2.5G的cpu比Xserve的2.3G的处理器要强,并且后者的内存不支持ECC校验。

我们使用1U Xserve来完成测试。

我们在网络设置上采用高速以太网连接客户端和服务器,服务器平均收到4Mbit/s的数据,发出数据19Mbit/s,这些都远低于网络带宽。磁盘读写速度也没有瓶颈,读取速度最大是600KB,写入速度最大是23KB/s。

测试的结果不大理想,当我们同时使用5或10个并行连接时,Apple系统便崩溃了。

有些时候G5的得分只有Opteron和Xeon的十分之一。我们在Panther和Tiger上都作了测试,并且测试了三便试图找出是不是有什么地方出错,但是答案没都是一样的:MySQL服务器的表现存在问题。Opteron是会快一点,但是不至于快到10倍那么多。
我们使用了Activity Monitor进行监控,看到运行MySQL程序时cpu的负荷十分的重:达到185%的占有率让人无法接受。要注意到的是MySQL至少同时分成了60个线程。

我们再次使用Apache 1.3和标准的“ab”(Apachebench)测试来验证结果:

新的系统Tiger并没有带来什么改观,2.7GHz(10.4.1)和2.5GHz(10.3)的表现不相上下,仍然只是Xeon和Opteron的十分之一。Apple一直以其系统是基于Unix为自豪,不过看起来Unix/Linux的软件并不亲赖Apple。这和Mac OS的工作原理是分不开的,Mac OS是十分美观的系统,不过它却存在着一些应用上的局限性,这里就不再赘述了。
Mac OS和Linux的对比
Lmbench 2.04提供了一系列的实用的程序用来测试Unix操作系统和cpu性能之间的瓶颈。它非常适合于测试Mac OS X是不是Apple平台服务器糟糕表现的问题所在。
信号允许进程之间的相互中断,MySQL这样的数据库同时存在许多进程访问核心,对于信号的管理是十分重要的。

所有的数字都以微秒为单位进行传输,越低越好。首先,我们可以看到Linux 2.6在大多数情况下效率最高;其次,尽管不是什么精确的测试,但结果是很明确的:作为Mac OS Xserver的基础,Darwin处理信号很慢。
当我们在测试中开始增加数据流动的级别,就需要创建一些新的线程。Unix的进程/线程创建叫做“分流”。
“fork”测量简单的进程创建和管理能力;“exec”主要测量创建一个完整新进程的能力;“sh”通过运行一些小程序来测试新进程的运行情况。

Mac OSX难以置信的慢,要其他的要多上2到5倍。没有必要将测试继续进行下去了:G5不可能是地球上最快的cpu,在数据库的应用上表现得实在太差了。
结论:只能做工作站不能做服务器
G5相对于PowerMac之前的cpu有了长足的进步。它是目前最具超标量体系结构的cpu,这无疑给了Apple一把利刃,特别是在Intel和AMD主频竞赛已经结束的现在。不过它还有一段路要走。
首先,G5需要降低其内存访问延迟,因为目前它的整数运算还远远不能让人满意。而Opteron和Xeon拥有更好的整数引擎,特别是Pentium4/Xeon的分支预测十分的优秀。Opteron的内存子系统也比G5来得要好。
其次,尽管G5已经设置32个architectural寄存器,但它的浮点运算能力还是要继续优化。只有一项测试说明在Mac上运行开放源码的程序时需要先做一些编译。而相对的,其他8项测试中Intel的处理器都遥遥领先。
速度引擎将使得G5在工作站市场上的前景一片光明。G5还有很大的潜力可挖,并且伴随着PowerMac市场份额的逐渐扩大,会吸到更多的开发者对Mac优化做出努力。
然而,Apple的服务器平台表现则是十分糟糕的。当我们和Apple进行交流时,Apple告称一些数据库开发商,如Sybase和Oracle已经找到方法解决进程方面。我们以后还会进行Sybase测试,但是实话说,我们对结果仍然不是很确定。大多数应用都依赖于线程。我们不是操作系统专家,但是通过测试中的数据看来,Xserve如果能够安装对PowerPC进行过优化的Linux会比安装Mac OS X来得要好。
|