浮点运算单元FPU测试
笔者采用Flops测试软件进行浮点运算测试,基准测试包括:70%浮点运算指令,4%的分支(branch)指令,34%的内存指令.
Flops.c是一个c程序,它通过将FADD(addition 加),FSUB(subtraction减),FMUL(multiplication乘)和FDIV(division除)四种操作按不同比例组合成各种模块对系统浮点'MFLOPS'等级进行测试,程序充分利用寄存器变量以估计出系统最佳的MFLOPS表现。
结果饶有乐趣,首先,笔者在测试前曾用gcc汇编器将基准测试程序进行编译以适应所有平台,但是从结果看来,gcc好像并不擅长生成SIMD(SSE,Altivec)代码,gcc只在第三个测试中使用了Altivec,G5此时展示了高于其它cpu的性能.
更有趣的是当我们关闭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才会敏感的卷起肌肉。
预测结果(branch predictor)测试
Queens是一款著名的分支测试软件,它的主要思路是将n个国际象棋王后放在n*n的格子中但每个王后都不能攻击到其它王后,测试软件运用包含N多分支的穷举算法求解.Queens包括:23%分支指令,45%内存指令,没有FP(浮点)操作。
G5作为工作站
G5的性能作为远程工作站久负盛名,笔者选用没有对任何平台进行优化的单线程软件Povray测试:Povray主要消耗L2和L1cache的资源,测试结果与Flops极为相似,当不存在Altivec或SSE-2优化时,Opteron是最快的cpu,G5的FPU比其中一款Xeon稍好.下面两个测试都是32bit,在X86机器Windows XP环境中运行.
Netburst架构大获全胜,G5在Lightwave中表现不俗.软件是否对 Altivec进行过优化,我们不得而知,或许这正是Apple市场占有率不高的影响.
Maxon曾努力更新Cinema4D引擎以使它更好的运行在G5平台上,从上表可以看到,G5打败了最好的X86 cpu.