Zum 3DCenter Forum
Inhalt




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:
Q: What is the Whetstone benchmark?
A: The Whetstone benchmark is widely used in the computer industry as a measure of FPU or Co-Processor performance. Floating-point arithmetic is most significant in programs that require a Co-Processor. These are mostly scientific, engineering, statistical and computer-aided design programs.

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:
Q: Was ist der Whetstone Bechmark?
A: Der Whetstone Benchmark ist in der Industrie verbreitet, um FPU und Co-Prozessorleistung zu messen. Gleitkomma-Arithmetik ist am wichtigsten für Programme, die einen Co-Prozessor benötigen. Also hauptsächlich wissenschaftliche, Konstruktions-, Statistik- sowie computerunterstützte Designsoftware.

 

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:
Q: Why do Intel CPUs (e.g. Pentium III) score higher than other CPUs (e.g. Athlon) with more advanced FPUs in Whetstone?
A: The Whetstone benchmark uses the slowest functions of the FPU (computing transcendentals, e.g. sin/cos/tan) in a way that cannot be parallelised (one serial chain). This was done in order to prevent cheating by manufacturers as much as possible. Unfortunately, this means that features like out-of-order execution, pipelining, etc. are bypassed. These are paramout to today's processors but that's not what is tested here.

Übersetzung:
Q: Warum erzielen Intel CPUs (z.B Pentium III) höhere Werte im Whetstone Test als andere CPUs mit höher entwickelten Gleitkomma-Einheiten (z.B Athlon)?
A: Der Whetstone Benchmark nutzt die langsamsten Funktionen der FPU (Berechnung von transcendentals, e.g. sin/cos/tan) auf eine Art und Weise, die eine Parallelisierung des Codes unmöglich macht (eine nacheinander ausgeführte Kette). Dieser Schritt soll Betrügereien (Optimierungen) durch Hersteller so gut wie möglich verhindern. Leider bedeutet das, dass moderne Eigenschaften wie out-of-order-execution, pipelining etc. umgangen werden. Diese sind entscheidend für (die Leistung) moderne Prozessoren, aber das ist nicht was hier getestet werden soll.

 

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:
Q: What is the SSE2 Whetstone benchmark?
A: With the introduction of SSE2 and its support for double floats (64-bit) it is now possible to write code that does not use the legacy FPU at all. This version shows that the full Whetstone benchmark can be implemented using SSE2 and thus take advantage of the SIMD mode of operation.

Übersetzung:
Q: Was ist der SSE2-Whetstone Benchmark?
A: Mit der Einführung von SSE2 und der Unterstützung von 64 Bit Genauigkeit ("double floats") ist es möglich, Code zu schreiben, der vollständig auf die alte FPU verzichtet. Diese Version des Tests zeigt, dass der Whetstone Benchmark in SSE2 implementiert werden und daher Nutzen aus SIMD-Operationen ziehen kann.

 

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:
Q: Why does my Pentium 4 does so badly on FPU Whetstone?
A: The Pentium 4 is optimised for SSE2 and not for legacy FPU code. The SSE2 Whetstone shows the performance improvements once SSE2 is used. Almost all new software will be SSE2 optimised and thus run much faster.

Übersetzung:
Q: Warum sind die Werte meines Pentium 4 im FPU Whetstone-Test so schlecht?
A: Der Pentium 4 ist für SSE2 Code und nicht für FPU-Code optimiert. Der SSE2-Whetstone-Test zeigt die Performanceverbesserungen auf, sobald SSE2 benutzt wird. Nahezu jede neue Software wird SSE2 optimiert sein und daher weitaus schneller laufen.

 

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:
Q: While my P4 Hyper-Threaded/SMT system does well in Whetstone FPU/SSE it does not do much better on Dhrystone! Why?
A: The FPU units were under-utilised in the original P4 thus they get good improvement in SMT (~50%); the ALUs (even double-clocked) were better utilised and gave great performance already; thus they get some improvement only (~20%).

Übersetzung:
Q: Mein P4 mit Hyper-Threading erzielt weit bessere Ergebnisse im Whetstone FPU/SSE Test, gewinnt aber kaum an Performance im Dhrystone-Test. Warum?
A: Die FPU-Einheiten im ursprünglichen P4 waren nicht vollständig ausgelastet und ziehen deshalb einen großen Vorteil aus SMT (~50%); die ALUs auf der anderen Seite wurden besser ausgelastet und erzielten bereits sehr gute Leistung, weswegen nur ein geringerer Vorteil entsteht (~20%).

 

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





Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Zurück / Back Weiter / Next

Shortcuts
nach oben