No more mysteries: Apple's G5 versus x86, Mac OS X versus Linux
by Johan De Gelas on June 3, 2005 7:48 AM EST- Posted in
- Mac
Micro CPU benchmarks: isolating the FPU
But you can't compare an Intel PC with an Apple. The software might not be optimised the right way." Indeed, it is clear that the Final Cut Pro, owned by Apple, or Adobe Premiere, which is far better optimised for the Intel PC, are not very good choices to compare the G5 with the x86 world.So, before we start with application benchmarks, we performed a few micro benchmarks compiled on all platforms with the same gcc 3.3.3 compiler.
The first one is flops. Flops, programmed by Al Aburto, is a very floating-point intensive benchmark. Analyses show that this benchmark contains:
- 70% floating point instructions;
- only 4% branches; and
- Only 34% of instructions are memory instructions.
Al Aburto, about Flops:
" Flops.c is a 'C' program which attempts to estimate your systems floating-point 'MFLOPS' rating for the FADD, FSUB, FMUL, and FDIV operations based on specific 'instruction mixes' (see table below). The program provides an estimate of PEAK MFLOPS performance by making maximal use of register variables with minimal interaction with main memory. The execution loops are all small so that they will fit in any cache."Flops shows the maximum double precision power that the core has, by making sure that the program fits in the L1-cache. Flops consists of 8 tests, and each test has a different, but well known instruction mix. The most frequently used instructions are FADD (addition), FSUB (subtraction) and FMUL (multiplication). We used gcc -O2 flops.c -o flops to compile flops on each platform.
MODULE | FADD | FSUB | FMUL | FDIV | Powermac G5 2.5 GHz | Powermac G5 2.7 GHz | Xeon Irwindale 3.6 GHz | Xeon Irwindale 3.6 w/o SSE2* | Xeon Galatin 3.06 GHz | Opteron 250 2.4 GHz |
1 | 50% | 0% | 43% | 7% | 1026 | 1104 | 677 | 1103 | 1033 | 1404 |
2 | 43% | 29% | 14% | 14% | 618 | 665 | 328 | 528 | 442 | 843 |
3 | 35% | 12% | 53% | 0% | 2677 | 2890 | 532 | 1088 | 802 | 1955 |
4 | 47% | 0% | 53% | 0% | 486 | 522 | 557 | 777 | 988 | 1856 |
5 | 45% | 0% | 52% | 3% | 628 | 675 | 470 | 913 | 995 | 1831 |
6 | 45% | 0% | 55% | 0% | 851 | 915 | 552 | 904 | 1030 | 1922 |
7 | 25% | 25% | 25% | 25% | 264 | 284 | 358 | 315 | 289 | 562 |
8 | 43% | 0% | 57% | 0% | 860 | 925 | 1031 | 910 | 1062 | 1989 |
Average: | 926 | 998 | 563 | 817 | 830 | 1545 |
The results are quite interesting. First of all, the gcc compiler isn't very good in vectorizing. With vectorizing, we mean generating SIMD (SSE, Altivec) code. From the numbers, it seems like gcc was only capable of using Altivec in one test, the third one. In this test, the G5 really shows superiority compared to the Opteron and especially the Xeons.
The really funny thing is that the new Xeon Irwindale performed better when we disabled support for the SSE-2, and used the "- mfpmath=387" option. It seems that the GCC compiler makes a real mess when it tries to optimise for the SSE-2 instructions. One can, of course, use the Intel compiler, which produces code that is up to twice as fast. But the use of the special Intel compiler isn't widespread in the real world.
Also interesting is that the 3.06 GHz Xeon performs better than the Xeon Irwindale at 3.6 GHz. Running completely out of the L1-cache, the high latency (4 cycles) of the L1-cache of Irwindale hurts performance badly. On the Galatin Xeon, which is similar to Northwood, Flops benefits from the very fast 2-cycle latency.
The conclusion is that the Opteron has, by far, the best FPU, especially when more complex instructions such a FDIV (divisions) are used. When the code is using something close to the ideal 50% FADD/FSUB and 50% FMUL mix and is optimised for Altivec, the G5 can roll its muscles. The normal FPU is rather mediocre though.
Micro CPU benchmarks: isolating the Branch Predictor
To test the branch prediction, we used the benchmark " Queens". Queens is a very well known problem where you have to place n chess Queens on an n x n board. The catch is that no single Queen must be able to attack the other. The exhaustive search strategy for finding a solution to placing the Queens on a chess board so they don't attack each other is the algorithm behind this benchmark, and it contains some very branch intensive code.Queens has about:
- 23% branches
- 45% memory instructions
- No FP operations
RUN TIME (sec) | |
Powermac G5 2.5 GHz | 134.110 |
Xeon Irwindale 3.6 GHz | 125.285 |
Opteron 250 2.4 GHz | 103.159 |
At 2.7 GHz, the G5 was just as fast as the Xeon. It is pretty clear that despite the enormous 31 stage pipeline, the fantastic branch predictor of the "Xeon Pentium 4" is capable of keeping the damage to a minimum. The Opteron's branch predictor seems to be at the level of G5's: the branch misprediction penalty of the G5 is 30% higher, and the Opteron does about 30% better.
The G5 as workstation processor
It is well known that the G5 is a decent workstation CPU. The G5 is probably the fastest CPU when it comes to Adobe After Effects and Final Cut Pro, as this kind of software was made to be run on a PowerMac. Unfortunately, we didn't have access to that kind of software.First, we test with Povray, which is not optimised for any architecture, and single-threaded.
Povray Seconds |
|
Dual Opteron 250 (2.4 GHz) | 804 |
Dual Xeon DP 3.6 GHz | 1169 |
Dual G5 2.5 GHz PowerMac | 1125 |
Dual G5 2.7 GHz PowerMac | 1049 |
Povray runs mostly out of the L2- and L1-caches and mimics almost perfectly what we have witnessed in our Flops benchmarks. As long as there are little or no Altivec or SSE-2 optimisations present, the Opteron is by far the fastest CPU. The G5's FPU is still quite a bit better than the one of the Xeon.
The next two tests are the only 32 bit ones, done in Windows XP on the x86 machines.
Lightwave 8.0 Raytrace |
Lightwave 8.0 Tracer Radiosity |
|
Dual Opteron 250 (2,4 GHz) | 47 | 204 |
Dual Xeon DP 3,6 GHz | 47.3 | 180 |
Dual G5 2,5 GHz PowerMac | 46.5 | 254 |
The G5 is capable of competing in one test. Lightwave rendering engine has been meticulously optimised for SSE-2, and the " Netburst" architecture prevails here. We have no idea how much attention the software engineers gave Altivec, but it doesn't seem to be much. This might of course be a result of Apple's small market share.
Cinema 4D Cinebench |
|
Dual Opteron 250 (2.4 GHz) | 630 |
Dual Xeon DP 3.6 GHz | 682 |
Dual G5 2.5 GHz PowerMac | 638 |
Dual G5 2.7 GHz PowerMac | 682 |
Maxon has invested some time and effort to get the Cinema4D engine running well on the G5 and it shows. The G5 competes with the best x86 CPUs.
116 Comments
View All Comments
Icehawk - Friday, June 3, 2005 - link
Interesting stuff. I'd like to see more data too. Mmm Solaris.Unfortunately the diagrams weren't labeled for the most part (in terms of "higher is better") making it difficult to determine the results.
And the whole not displaying on FF properly... come on.
NetMavrik - Friday, June 3, 2005 - link
You can say that again! NT shares a whole lot more than just similarites to VMS. There are entire structures that are copied straight from VMS. I think most people have forgotten or never knew what "NT" stood for anyway. Take VMS, increment each letter by one, and you get WNT! New Technology my a$$.Guspaz - Friday, June 3, 2005 - link
Good article. But I'd like to see it re-done with the optimal compiler per-platform, and I'd like to see PowerPC Linux used to confirm that OSX is the cause of the slow MySQL performance.melgross - Friday, June 3, 2005 - link
I was just thinking back about this and remembered something I've seenComputerworld has had articles over the past two years or so about companies who have gone to XServes. They are using them with Apache, SYbase or Oracle. I don't remember any complaints about performance.
Also Oracle itself went to XServes for its own datacenter. Do you think they would have done that if performance was bad? They even stated that the performance was very good.
Something here seems screwed up.
brownba - Friday, June 3, 2005 - link
johan, i always appreciate your articles.you've been /.'d !!!!
and anandtech is holding up well.
good job
bostrov - Friday, June 3, 2005 - link
Since so much effort went in to vector facilities and instruction sets ever since the P54 days, shouldn't "best effort" on each CPU be used (use the IBM compiler on G5 and the Intel compiler on x86) - by using gcc you're using an almost artifically bad compiler and there is no guarantee that gcc will provide equivilant optimizations for each platform anyway.I think it'd be very interesting to see an article with the very best available compilers on each platform running the benchmarks.
Incidently, intel C with the vector instruction sets disabled still does better.
JohanAnandtech - Friday, June 3, 2005 - link
bostrov: because the Intel compiler is superb at vectorizing code. I am testing x87 FPU and gcc, you are testing SSE-2 performance with the Intel compiler.JohanAnandtech - Friday, June 3, 2005 - link
minsctdp: A typo which happened during final proofread. All my original tables say 990 MB/s. Fixed now.bostrov - Friday, June 3, 2005 - link
My own results for flops 2.0: (compiled with Intel C 8.1, 3.2 Ghz Prescott with 160 Mhz - 5:4 ratio - FSB)flops20-c_prescott.exe
FLOPS C Program (Double Precision), V2.0 18 Dec 1992
Module Error RunTime MFLOPS
(usec)
1 1.7764e-013 0.0109 1288.7451
2 -1.4166e-013 0.0082 852.7242
3 8.1046e-015 0.0067 2531.7045
4 9.0483e-014 0.0052 2858.2062
5 -6.2061e-014 0.0140 2065.6650
6 3.3640e-014 0.0100 2906.2439
7 -5.7980e-012 0.0327 366.4559
8 3.7692e-014 0.0111 2700.8968
Iterations = 512000000
NullTime (usec) = 0.0000
MFLOPS(1) = 1088.7826
MFLOPS(2) = 854.7579
MFLOPS(3) = 1609.7508
MFLOPS(4) = 2753.5016
Why are the anandtech results so poor?
melgross - Friday, June 3, 2005 - link
I thought that GCC comes with Tiger. I have read Apple's own info, and it definitely mentions GCC 4. Perhaps that would help the vectorization process.Altivec is such an important part of the processor and the performance of the machine that I would like to see properly written code used to compare these machines.