Trockenstein - Dhrystone

Dhrystone ist ein 1984 von Reinhold P. Weicker entwickeltes synthetisches Computing- Benchmark- Programm , das repräsentativ für die System-( Integer- )Programmierung sein soll. Der Dhrystone wurde zu einem Vertreter der allgemeinen Prozessorleistung ( CPU ). Der Name "Dhrystone" ist ein Wortspiel mit einem anderen Benchmark-Algorithmus namens Whetstone , der die Fließkomma- Leistung betont .

Mit Dhrystone sammelte Weicker Metadaten aus einer breiten Palette von Software, darunter Programme, die in FORTRAN , PL/1 , SAL, ALGOL 68 und Pascal geschrieben wurden . Er charakterisierte dann diese Programme im Hinblick auf den verschiedenen gemeinsamen Konstrukte: Prozeduraufrufe, Zeiger Indirekt , Aufgaben usw. Daraus er das Dhrystone - Benchmark entspricht einen repräsentativen Mix schrieb. Dhrystone wurde in Ada veröffentlicht , wobei die von Rick Richardson entwickelte C- Version für Unix ("Version 1.1") wesentlich zu seiner Popularität beitrug.

Dhrystone vs. Wetzstein

Der Dhrystone-Benchmark enthält keine Gleitkomma- Operationen, daher ist der Name ein Wortspiel mit dem damals beliebten Whetstone- Benchmark für Gleitkomma-Operationen. Die Ausgabe des Benchmarks ist die Anzahl der Dhrystones pro Sekunde (die Anzahl der Iterationen der Hauptcodeschleife pro Sekunde).

Sowohl Whetstone als auch Dhrystone sind synthetische Benchmarks, was bedeutet, dass es sich um einfache Programme handelt, die sorgfältig entwickelt wurden, um die Prozessorauslastung einiger gängiger Programme statistisch nachzuahmen. Whetstone, 1972 entwickelt, war ursprünglich bestrebt, typische Algol 60-Programme basierend auf Messungen aus dem Jahr 1970 nachzuahmen, wurde jedoch schließlich in seiner Fortran-Version am beliebtesten, die die stark numerische Ausrichtung der Computer in den 1960er Jahren widerspiegelt.

Von Dhrystone angesprochene Probleme

Die letztendliche Bedeutung von Dhrystone als Indikator für die allgemeine ("integer") Leistung neuer Computer machte es zu einem Ziel für kommerzielle Compiler-Autoren. Verschiedene moderne statische Compiler- Codeanalysetechniken (wie die Eliminierung von totem Code : beispielsweise Code, der den Prozessor verwendet, aber interne Ergebnisse erzeugt, die nicht verwendet oder ausgegeben werden) erschweren die Verwendung und das Design von synthetischen Benchmarks. Version 2.0 des Benchmarks, die im März 1988 von Weicker und Richardson veröffentlicht wurde, enthielt eine Reihe von Änderungen, die eine Reihe von Compilertechniken vereiteln sollten. Er wurde jedoch sorgfältig erstellt, um die zugrunde liegende Benchmark nicht zu verändern. Dieser Versuch, Compiler zu vereiteln, war nur teilweise erfolgreich. Dhrystone 2.1, das im Mai desselben Jahres veröffentlicht wurde, hatte einige geringfügige Änderungen und ist seit Juli 2010 die aktuelle Definition von Dhrystone.

Abgesehen von Problemen im Zusammenhang mit der Compiler-Optimierung wurden verschiedene andere Probleme mit dem Dhrystone angeführt. Die meisten davon, einschließlich der kleinen Codegröße und der kleinen Datensatzgröße, wurden zum Zeitpunkt ihrer Veröffentlichung im Jahr 1984 verstanden. Subtiler ist die leichte Überrepräsentation von String-Operationen, die größtenteils sprachbezogen ist: Sowohl Ada als auch Pascal haben Strings als normale Variablen in der Sprache, während C dies nicht tut, sodass die einfache Variablenzuweisung in Referenzbenchmarks zu Pufferkopieroperationen in der C-Bibliothek wurde. Ein weiteres Problem besteht darin, dass die gemeldete Punktzahl keine Informationen enthält, die beim Vergleich von Systemen kritisch sind, z. B. welcher Compiler verwendet wurde und welche Optimierungen.

Dhrystone bleibt als einfacher Benchmark bemerkenswert widerstandsfähig, sein anhaltender Wert für die Ermittlung einer echten Leistung ist jedoch fraglich. Es ist einfach zu bedienen, gut dokumentiert, vollständig in sich geschlossen, gut verständlich und kann auf fast jedem System verwendet werden. Insbesondere in der Embedded-Computing-Welt ist es weit verbreitet, obwohl die kürzlich entwickelte EEMBC- Benchmark-Suite, der CoreMark- Standalone-Benchmark, HINT, Stream und sogar Bytemark häufig zitiert und verwendet werden, sowie spezifischere Benchmarks für den Speicher Subsystem (Cachebench), TCP/IP (TTCP) und viele andere.

Ergebnisse

Dhrystone kann ein Ergebnis aussagekräftiger darstellen als MIPS (Millionen Befehle pro Sekunde), da Vergleiche der Befehlsanzahl zwischen verschiedenen Befehlssätzen (zB RISC vs. CISC ) einfache Vergleiche durcheinanderbringen können. Zum Beispiel kann dieselbe High-Level-Task viel mehr Anweisungen auf einer RISC-Maschine erfordern, aber möglicherweise schneller ausgeführt werden als eine einzelne CISC-Anweisung. Daher zählt der Dhrystone-Score nur die Anzahl der Programmiterationsabschlüsse pro Sekunde, sodass einzelne Maschinen diese Berechnung maschinenspezifisch durchführen können. Eine weitere übliche Darstellung des Dhrystone-Benchmarks ist das DMIPS (Dhrystone MIPS ), das erhalten wird, wenn der Dhrystone-Score durch 1757 geteilt wird (die Anzahl der Dhrystones pro Sekunde, die auf dem VAX 11/780 erhalten werden , nominell ein 1 MIPS-Gerät).

Eine andere Möglichkeit, Ergebnisse darzustellen, ist in DMIPS/MHz, wobei das DMIPS-Ergebnis weiter durch die CPU-Frequenz geteilt wird, um einen einfacheren Vergleich von CPUs mit unterschiedlichen Taktraten zu ermöglichen .

Mängel

Die Verwendung von Dhrystone als Benchmark hat Fallstricke:

  • Es enthält ungewöhnlichen Code, der normalerweise nicht für moderne, reale Programme repräsentativ ist.
  • Es ist anfällig für Compiler-Optimierungen. Zum Beispiel führt es viele Zeichenfolgenkopien durch, um die Leistung beim Kopieren von Zeichenfolgen zu messen. Die Saiten in Dhrystone sind jedoch von bekannter konstanter Länge und ihre Anfänge sind an natürlichen Grenzen ausgerichtet, zwei Eigenschaften, die in echten Programmen normalerweise nicht vorhanden sind. Daher kann ein Optimierer eine Zeichenfolgenkopie durch eine Folge von Wortbewegungen ohne Schleifen ersetzen, was viel schneller ist. Diese Optimierung übertreibt folglich die Systemleistung, manchmal um mehr als 30 %.
  • Die geringe Codegröße von Dhrystone passt möglicherweise in den Befehlscache einer modernen CPU, so dass die Leistung beim Abrufen von Befehlen nicht rigoros getestet wird. In ähnlicher Weise kann Dhrystone auch vollständig in den Datencache passen , wodurch die Leistung von Datencache-Fehlversuchen nicht ausgeübt wird. Um dem Problem des Fit-in-the-Cache-Problems entgegenzuwirken, wurde der SPECint-Benchmark 1988 erstellt, um eine Reihe von (zunächst 8) viel größeren Programmen (einschließlich eines Compilers) zu umfassen, die nicht in L1- oder L2-Caches dieser Ära passen konnten.

Siehe auch

Verweise

Externe Links