Synthetische Sandra: Ein Review des Benchmarks
17. April 2006 / von BlackBirdSR / Seite 2 von 3
Der nächste Test wird treffenderweise als Whetstone-Test bezeichnet. Er wird verwendet, um die Gleitkomma-, also FPU-Leistung der CPU zu bestimmen. Auch er hat schon einige Jahre auf dem Buckel und entstammt von 1972. Die Berechnungen wurden anhand von Beobachtungen des Laufzeitverhaltens einer damaligen CPU ausgelegt. Die Sandra FAQ sagt folgendes hierzu:
Zitat: The Whetstone benchmark used here is a multi-threaded, 32/64-bit variant of the original one which runs under UNIX. Up to 64 CPUs in SMP systems are supported. The result is determined by measuring the time it takes to perform some sequences of floating-point instructions. Due to various changes, the result is not directly comparable with other Whetstone benchmarks. However the MFLOPS (Million Floating Operations per Second) should be the same for the same system (+5-10% variation) between benchmarks. Übersetzung: |
Im Grunde nichts Falsches. Allerdings gibt es keine Angaben dazu, ob der Whetstone-Test verändert wurde. Gäbe es nicht noch einen zusätzlichen FAQ-Eintrag, würde man richtig im Regen stehen über die Natur des Benchmarks.
Zitat: Übersetzung: |
Demzufolge nutzt Whetstone eine Codeabfolge aus den langsamsten FPU-Funktionen, die sich zusätzlich nicht parallelisieren lässt - angeblich um ein Schummeln zu verhindern. Hardwaretechnisch wäre eine Optimierung auf Sandra allerdings völliger Unfug. Man denkt hier wohl primär an Compiler, die den Code für die CPU erstellen. Diese Maßnahme soll erklären, warum ein Pentium III höhere Werte als ein K7 erreichen kann. In Wahrheit erreicht man mit dieser Angabe nur Kopfschütteln. Ein FPU-Test, der die langsamsten (und damit auch wenig genutzten) Funktionen testet und dabei auch noch grundlegendste, performancesteigernde Features wie "out-of-order-execution" und "pipelining" außer acht lässt?
Um dem eins aufzusetzen, gibt die FAQ noch an, dass man diese entscheidenden Features ja gar nicht testen will. Hier stellt man sich dann schon beide Beine. Die Aussagekraft für wirkliche Programme sinkt damit leider gegen Null. Aber wieder zuerst die Werte:
Intel Pentium 4 Northwood 3.2 GHz, 512 KB L2, SMT aktiv. | Whetstone: 3990/7101(SSE2) FLOPs |
Intel Pentium M 1.8 GHz, 2 MB L2 | Whetstone: 2499/3198(SSE2) FLOPs |
AMD Athlon XP 1.8 GHz, 256 kB L2 | Whetstone: 2849/- FLOPs |
AMD Opteron 1.8 GHz, 1 MB L2 | Whetstone: 2792/3629(SSE2) FLOPs |
Seit SSE2 besteht die Möglichkeit, x87-Aufrufe (FPU) direkt durch SSE2 zu ersetzen. Sandra besitzt, wie die Ergebnisse zeigen, für den Whetstone-Test auch einen SSE2-Modus. Wie wir aber wissen, legt Sandra nur Wert auf die langsamten FPU-Funktionen, die zudem ohne Parallelität ausgeführt werden. Es fragt sich, ob der SSE2-Test überhaupt die gleichen Eigenschaften testet und damit direkt vergleichbar zur x87- Version ist. Handelt es sich dabei um SIMD mit Berechnung von zwei Datenpaketen, oder wird weiterhin mit einem einzigen Wert gearbeitet (skalar)? Die FAQ meint dazu:
Zitat: Übersetzung: |
Die meisten x86 CPUs nutzen auch bei SSE/2 fast vollständig die FPU für ihre Berechnungen. Die gleichen Ausführungseinheiten sind also meist für x87 und SSE/2 zuständig. Nutzt man skalar-SSE2 als FPU-Ersatz, löst man sich von Ballast, der seit Anbeginn mitgeführt wird. Das kann zu leichten Performancegewinnen führen. Davon ist hier allerdings nicht die Rede.
Die FAQ schreibt davon, dass der ganze Test in SSE2 SIMD übersetzt werden konnte. Sollte dies jedoch der Fall sein, so sind FPU und SSE2 Versionen des Whetstone nicht vergleichbar. Nebenbei wurde die SSE2 Version des Tests über Jahre hinweg für den Pentium 4 als primärer Performancewert eingeblendet. Hier noch einmal die Werte ohne Pentium 4:
Intel Pentium M 1.8 GHz, 2 MB L2 | Whetstone: 2499/3198(SSE2) FLOPs |
AMD Athlon XP 1.8 GHz, 256 kB L2 | Whetstone: 2849/- FLOPs |
AMD Opteron 1.8 GHz, 1 MB L2 | Whetstone: 2792/3629(SSE2) FLOPs |
Zwischen K8 und K7 gibt es kaum Unterschiede. Das deckt sich zumindest mit der grundlegenden Architektur der FPUs. In der SSE2-Version ist der K8 dann aber schon ein gutes Stück schneller. Der Pentium-M liegt etwas unterhalb der K7/K8 Familie, gewinnt durch SSE2 aber ebenfalls vergleichbar an Performance. Zum Abschluss des Whetstone-Tests soll noch der Pentium 4 vorgeführt werden:
Intel Pentium 4 Northwood 3.2GHz, 512 kB L2 | Whetstone: 2336/4306(SSE2) FLOPs |
Intel Pentium 4 Northwood 3.2 GHz, 512 kB L2, SMT | Whetstone: 3990/7101(SSE2) FLOPs |
Intel Pentium 4 Prescott 3.2 GHz, 1 MB L2 | Whetstone: 2151/3954(SSE2) FLOPs |
Intel Pentium 4 Prescott 3.2 GHz, 1 MB L2, SMT | Whetstone: 3712/6682(SSE2) FLOPs |
Mit nur einem Thread verliert der 1.4 GHz höher getaktete Pentium 4 gegen alle Konkurrenten. Erst mit SSE2 gewinnt er dann überproportional. Eventuell wurde der SSE2 Test des Benchmarks explizit für den Pentium 4 als erste SSE2 ausgelegt. Oder die FPU des Pentium 4 reagiert einfach ziemlich allergisch auf die eigentlich absurde Codeabfolge - SMT führt gerade hier zu einem enormen Performancevorteil. Die FAQ hat folgendes zu berichten:
Zitat: Übersetzung: |
Kein Wort, dass vorliegender Whetstone-Test fernab echter Programmaufrufe liegt. Auch die Annahme, jede neue Software wäre SSE2 optimiert, ist schlichtweg falsch. Viel schneller laufen die meisten neuen Programme damit auch nicht. Ein zeitgenössischer Fall ist beispielsweise Battlefield 2, welches ganz ohne solche Optimierungen auf den Markt gekommen ist. Bei Sandra hingegen handelt es sich noch um einen einfachen Benchmark, der per Hand an SSE2 angepasst werden kann. Im Alltag haben Programmierer allerdings weder Möglichkeiten noch die Zeit dazu.
Zitat: Übersetzung: |
Während es im Alltag noch glaubwürdig und üblich ist, dass die FPUs nicht vollständig ausgelastet sind, wirkt das hier aufgesetzt. Immerhin liegt unser Whetstone vollständig im Cache und nutzt SiSoft zufolge nur eine einzige (sehr langsame) Einheit. Gerade wenn zwei virtuelle CPUs ständig auf die gleichen Ressourcen zugreifen wollen, müsste es eigentlich einen Verlust an Performance geben. In der neuesten Version von Sandra ist der x87-Whetstone-Test übrigens verschwunden, die SSE2-Version nimmt seinen Platz vollständig ein. Eine Aussagekraft für den Ablauf wirklicher Programme ergibt sich damit freilich erst recht nicht.
- Zusammenfassung:
- original Whetstone nicht geeignet um neue Architekturen zu bewerten
- Modifikationen von SiSoftware sind undokumentiert
- SSE2-Version und FPU-Version womöglich nicht vergleichbar
- Unstimmigkeiten in der FAQ zum Test
- geringe Aussagekraft für wirkliche Programme
- zum Vergleich zwischen Architekturen relativ nutzlos
- MultiThreading standardmäßig aktiviert
- 64 Bit Test undokumentiert, liefert fragwürdige Ergebnisse