Dhrystone - Dhrystone

Dhrystone je syntetický výpočetní srovnávací program vyvinutý v roce 1984 Reinholdem P. Weickerem, který má být reprezentativní pro systémové ( celočíselné ) programování. Dhrystone se stal zástupcem obecného výkonu procesoru ( CPU ). Název „Dhrystone“ je slovní hříčka na jiném srovnávacím algoritmu s názvem Whetstone , který zdůrazňuje výkon s plovoucí desetinnou čárkou .

S Dhrystone shromáždil Weicker metadata ze široké škály softwaru, včetně programů napsaných ve firmách FORTRAN , PL/1 , SAL, ALGOL 68 a Pascal . On pak vyznačuje těchto programů z hlediska různých běžných konstrukcí: volání procedur, ukazatel indirections , úkoly, atd Z toho napsal měřítko Dhrystone aby odpovídal reprezentativní mixu. Dhrystone byl vydán v Ada , přičemž k jeho popularitě výrazně přispěla verze C pro Unix vyvinutá Rickem Richardsonem („verze 1.1“).

Dhrystone vs. Whetstone

Benchmark Dhrystone neobsahuje žádné operace s plovoucí desetinnou čárkou , takže název je hříčka v tehdy populárním benchmarku Whetstone pro operace s plovoucí desetinnou čárkou. Výstupem z benchmarku je počet Dhrystones za sekundu (počet iterací hlavní kódové smyčky za sekundu).

Whetstone i Dhrystone jsou syntetická měřítka, což znamená, že jde o jednoduché programy, které jsou pečlivě navrženy tak, aby statisticky napodobovaly využití procesoru v některé běžné sadě programů. Whetstone, vyvinutý v roce 1972, se původně snažil napodobit typické programy Algol 60 na základě měření z roku 1970, ale nakonec se stal nejpopulárnějším ve své verzi Fortran, což odráží vysoce numerickou orientaci výpočetní techniky v šedesátých letech minulého století.

Problémy řešené Dhrystoneem

Dhrystoneův konečný význam jako indikátoru výkonu nových počítačů pro všeobecné účely („celé číslo“) z něj učinil cíl pro komerční autory kompilátorů. Různé moderní techniky analýzy statického kódu kompilátoru (jako je eliminace mrtvého kódu : například kód, který používá procesor, ale produkuje interní výsledky, které nejsou použity nebo výstup) ztěžují používání a návrh syntetických benchmarků. Verze 2.0 benchmarku, vydaná Weickerem a Richardsonem v březnu 1988, měla řadu změn, jejichž cílem bylo zmařit řadu technik kompilátoru. Přesto byl pečlivě vytvořen, aby nezměnil základní referenční hodnotu. Tato snaha zmařit kompilátory byla jen částečně úspěšná. Dhrystone 2.1, vydaný v květnu téhož roku, prošel několika drobnými změnami a od července 2010 zůstává aktuální definicí Dhrystone.

Kromě problémů souvisejících s optimalizací kompilátoru byly s Dhrystone citovány různé další problémy. Většina z nich, včetně malé velikosti kódu a malé velikosti datové sady, byla chápána v době jejího zveřejnění v roce 1984. Jemnější je mírné nadměrné zastoupení řetězcových operací, které do značné míry souvisí s jazykem: Ada i Pascal mají řetězce jako normální proměnné v jazyce, zatímco C ne, takže z toho, co bylo jednoduché přiřazení proměnných v referenčních benchmarcích, se staly operace kopírování vyrovnávací paměti v knihovně C. Dalším problémem je, že hlášené skóre neobsahuje informace, které jsou kritické při porovnávání systémů, například který kompilátor byl použit a jaké optimalizace.

Dhrystone zůstává jako jednoduchý benchmark pozoruhodně odolný, ale jeho pokračující hodnota při stanovení skutečného výkonu je diskutabilní. Je snadno použitelný, dobře zdokumentovaný, plně soběstačný, srozumitelný a lze jej nastavit tak, aby fungoval téměř na jakémkoli systému. Zejména je stále široce používán ve světě integrovaných počítačů, ačkoli nedávno vyvinutá sada benchmarků EEMBC, samostatný benchmark CoreMark , HINT, Stream a dokonce i Bytemark jsou široce citovány a používány, stejně jako konkrétnější benchmarky pro paměť subsystém (Cachebench), TCP/IP (TTCP) a mnoho dalších.

Výsledek

Dhrystone může představovat výsledek smysluplněji než MIPS (milion instrukcí za sekundu), protože srovnání počtu instrukcí mezi různými sadami instrukcí (např. RISC vs. CISC ) může zmást jednoduchá srovnání. Například stejný úkol vysoké úrovně může vyžadovat mnohem více pokynů na počítači RISC, ale může být proveden rychleji než jedna instrukce CISC. Skóre Dhrystone tedy počítá pouze počet dokončení iterace programu za sekundu, což umožňuje jednotlivým strojům provést tento výpočet způsobem specifickým pro daný stroj. Další běžnou reprezentací benchmarku Dhrystone je DMIPS (Dhrystone MIPS ) získaný, když je skóre Dhrystone děleno 1757 (počet Dhrystones za sekundu získaný na VAX 11/780 , nominálně 1 MIPS stroj).

Další způsob, jak reprezentovat výsledky, je v DMIPS/MHz, kde jsou výsledky DMIPS dále děleny frekvencí CPU, což umožňuje snazší srovnání procesorů běžících s různými hodinovými frekvencemi .

Nedostatky

Použití Dhrystone jako měřítka má úskalí:

  • Obsahuje neobvyklý kód, který není obvykle reprezentativní pro moderní programy v reálném životě.
  • Je náchylný k optimalizaci překladače. Například provádí mnoho kopírování řetězců při pokusu o měření výkonu kopírování řetězců. Řetězce v Dhrystone však mají známou konstantní délku a jejich starty jsou zarovnány na přirozených hranicích, což jsou dvě vlastnosti, které ve skutečných programech obvykle chybí. Optimalizátor proto může nahradit kopii řetězce sekvencí pohybů slov bez jakýchkoli smyček, což bude mnohem rychlejší. Tato optimalizace následně nadhodnocuje výkon systému, někdy o více než 30%.
  • Malá velikost kódu Dhrystone se může hodit do mezipaměti instrukcí moderního CPU, takže výkon načítání instrukcí není přísně testován. Podobně se Dhrystone může také zcela hodit do datové mezipaměti , takže nevyužívá výkon při chybě datové mezipaměti. Aby bylo možné čelit problému s ukládáním do mezipaměti, byl v roce 1988 vytvořen benchmark SPECint, který zahrnoval sadu (původně 8) mnohem větších programů (včetně kompilátoru), které se nemohly vejít do mezipaměti L1 nebo L2 té doby.

Viz také

Reference

externí odkazy