Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік сынақ бағдарламасы
Computer benchmarking program
Dhrystone – 1984 жылы Рейнхольд П. Вейкер жасаған синтетикалық есептеу сынақ бағдарламасы. Ол жүйелік (бүтін санмен) бағдарламалауды көрсететіндей етіп жасалған. Dhrystone процессордың (CPU) жалпы өнімділігінің өлшеміне айналды. "Dhrystone" атауы – жылжымалы нүктелік өнімділікке баса назар аударатын Whetstone деп аталатын басқа сынақ алгоритмінің ойнақы ұғымы. Dhrystone арқылы Вейкер FORTRAN, PL/1, SAL, ALGOL 68 және Pascal тілдерінде жазылған бағдарламаларды қоса алғанда, кең ауқымды бағдарламалық қамтамасыздан метадеректер жинады. Одан кейін ол осы бағдарламаларды әртүрлі ортақ құрылымдар тұрғысынан сипаттады: процедура шақырулары, көрсеткіш арқылы сілтемелер, мәндік тапсырулар және т.б. Осыдан ол өкілдік араласуға сәйкес келетін Dhrystone сынақ бағдарламасын жазды. Dhrystone Ada тілінде жарияланды, ал Unix жүйесі үшін Рик Ричардсон жасаған C нұсқасы ("1.1 нұсқасы") оның танымалдылығын арттыруға үлкен үлес қосты.
Dhrystone is a synthetic computing benchmark program developed in 1984 by Reinhold P. Weicker intended to be representative of system (integer) programming. The Dhrystone grew to become representative of general processor (CPU) performance. The name "Dhrystone" is a pun on a different benchmark algorithm called Whetstone, which emphasizes floating point performance. With Dhrystone, Weicker gathered meta data from a broad range of software, including programs written in FORTRAN, PL/1, SAL, ALGOL 68, and Pascal. He then characterized these programs in terms of various common constructs: procedure calls, pointer indirections, assignments, etc. From this he wrote the Dhrystone benchmark to correspond to a representative mix. Dhrystone was published in Ada, with the C version for Unix developed by Rick Richardson ("version 1.1") greatly contributing to its popularity.
Дристон мен Уэтстон
Dhrystone эталондық тестісінде қозғалатын нүктелі операциялар жоқ, сондықтан атауы сол кездегі танымал Whetstone эталондық тестісіне, қозғалатын нүктелі операцияларға жасалған әдемі тіркес болып табылады. Эталондық тестінің нәтижесі – секунд сайынғы Dhrystones саны (секундқа басты код циклінің қайталану саны). Whetstone және Dhrystone екеуі де синтетикалық эталондық тестер, яғни олар процессордың кейбір жалпы бағдарламаларды пайдалануын статистикалық тұрғыдан имитациялау үшін мұқият жасалған қарапайым бағдарламалар. 1972 жылы жасалған Whetstone бастапқыда 1970 жылғы өлшемдерге негізделген әдеттегі Algol 60 бағдарламаларын имитациялауға тырысты, бірақ ақырында Fortran нұсқасы кеңінен танымал болды, бұл 1960-шы жылдардағы есептеулердің сандық бағытының күшті екенін көрсетеді.
The Dhrystone benchmark contains no floating point operations, thus the name is a pun on the then popular Whetstone benchmark for floating point operations. The output from the benchmark is the number of Dhrystones per second (the number of iterations of the main code loop per second). Both Whetstone and Dhrystone are synthetic benchmarks, meaning that they are simple programs that are carefully designed to statistically mimic the processor usage of some common set of programs. Whetstone, developed in 1972, originally strove to mimic typical Algol 60 programs based on measurements from 1970, but eventually became most popular in its Fortran version, reflecting the highly numerical orientation of computing in the 1960s.
Dhrystone қарастырған мәселелер
Dhrystone-ның жаңа компьютерлердің жалпы мақсаттағы ("толық сан") өнімділігінің көрсеткіші ретіндегі маңыздылығы оны коммерциялық компилятор жасаушылардың назарына іліктірді. Әртүрлі заманауи компиляторлардың статикалық кодты талдау әдістері (мысалы, пайдаланылмаған кодты жою: процессорды қолданатын, бірақ қолданылмаған немесе нәтижесі шығарылмаған код сияқты) синтетикалық өлшемдерді пайдалану мен жобалауды қиындатады. Weicker және Richardson 1988 жылғы наурыз айында шығарған өлшемнің 2.0 нұсқасында компилятордың әртүрлі әдістерін жоюға бағытталған бірнеше өзгерістер енгізілді. Дегенмен, бұл өзгерістер негізгі өлшемді өзгертпеу үшін мұқият жасалды. Компиляторларды жеңуге жасалған бұл әрекет толыққанды сәтті болмады. Сол жылдың мамырында шығарылған Dhrystone 2.1 нұсқасында шағын түзетулер енгізілді және 2010 жылға дейін Dhrystone-ның ресми анықтамасы болып табылады. Компиляторды оңтайландырумен байланысты мәселелерден басқа, Dhrystone-да басқа да кемшіліктер анықталды. Олардың көпшілігі, кішкентай код көлемі мен деректер жинағының шағын болуы 1984 жылы жарияланған кезде түсінікті болды. Кемерлірек айтқанда, жол операцияларының сәл көбірек көрсетілуі тілмен байланысты: Ada және Pascal тілдерінде жолдар қалыпты айнымалылар ретінде қарастырылады, ал C тілінде жоқ. Сондықтан, анықтамалық өлшемдердегі қарапайым айнымалыларға тағайындау C кітапханасында буферді көшіру операцияларына айналды. Тағы бір мәселе – есептелген нәтижеде жүйелерді салыстыру үшін маңызды ақпарат, мысалы, қолданылған компилятор және жасалған оңтайландырулар туралы мәліметтер жоқ. Dhrystone қарапайым өлшем ретінде өте тұрақты, бірақ оның нақты өнімділікті анықтаудағы маңызы күмәнді. Оны пайдалану оңай, жақсы құжатталған, толыққанды дербес, жақсы түсінілген және дерлік кез келген жүйеде жұмыс істеуге болады. Әсіресе, ол кіріктірілген есептеу саласында кеңінен қолданылады, бірақ жақында жасалған EEMBC өлшемдер жинағы, CoreMark дербес өлшемі, HINT, Stream және тіпті Bytemark жиі сілтеме жасалып, қолданылады, сондай-ақ жадшартты жүйеге (Cachebench), TCP/IP (TTCP) және басқа да арнайы өлшемдер қолданылады.
Dhrystone's eventual importance as an indicator of general purpose ("integer") performance of new computers made it a target for commercial compiler writers. Various modern compiler static code analysis techniques (such as elimination of dead code: for example, code which uses the processor but produces internal results which are not used or output) make the use and design of synthetic benchmarks more difficult. Version 2.0 of the benchmark, released by Weicker and Richardson in March 1988, had a number of changes intended to foil a range of compiler techniques. Yet it was carefully crafted so as not to change the underlying benchmark. This effort to foil compilers was only partly successful. Dhrystone 2.1, released in May of the same year, had some minor changes and as of 2010 remains the current definition of Dhrystone. Other than issues related to compiler optimization, various other issues have been cited with the Dhrystone. Most of these, including the small code size and small data set size, were understood at the time of its publication in 1984. More subtle is the slight over representation of string operations, which is largely language related: both Ada and Pascal have strings as normal variables in the language, whereas C does not, so what was simple variable assignment in reference benchmarks became buffer copy operations in the C library. Another issue is that the score reported does not include information which is critical when comparing systems such as which compiler was used, and what optimizations. Dhrystone remains remarkably resilient as a simple benchmark, but its continuing value in establishing true performance is questionable. It is easy to use, well documented, fully self contained, well understood, and can be made to work on almost any system. In particular, it has remained in broad use in the embedded computing world, though the recently developed EEMBC benchmark suite, the CoreMark standalone benchmark, HINT, Stream, and even Bytemark are widely quoted and used, as well as more specific benchmarks for the memory subsystem (Cachebench), TCP/IP (TTCP), and many others.
Нәтижелер
Dhrystone нәтижелерін MIPS (секундына миллион нұсқау) көрсеткіштерінен гөрі мағыналырақ көрсетуге болады, себебі әртүрлі нұсқаулар жиынтықтарын (мысалы, RISC және CISC) салыстырғанда нұсқаулар санының өзгешелігі қарапайым салыстыруларды қиындатады. Мысалы, бірдей жоғары деңгейдегі міндет RISC машинасына көптеген нұсқауларды қажет етуі мүмкін, бірақ ол бір CISC нұсқауын орындаудан жылдам болуы мүмкін. Сондықтан, Dhrystone көрсеткіші секундына бағдарламаның қайталану аяқталу санын ғана есептейді, бұл әрбір машинаға осы есептеуді өзіне тән тәсілмен орындауға мүмкіндік береді. Dhrystone көрсеткішінің тағы бір кең таралған түрі – DMIPS (Dhrystone MIPS), ол Dhrystone ұпайын 1757-ге бөлгенде шығады (VAX 11/780 машинасынан секунд сайын алынған Dhrystone саны, шартты түрде 1 MIPS машинасы). Нәтижелерді көрсетудің тағы бір тәсілі – DMIPS/МГц, онда DMIPS нәтижесі CPU жиілігіне бөлінеді, бұл әртүрлі тактолық жиілікпен жұмыс істейтін процессорларды салыстыруды жеңілдетеді.
Dhrystone may represent a result more meaningfully than MIPS (million instructions per second) because instruction count comparisons between different instruction sets (e. g. RISC vs. CISC) can confound simple comparisons. For example, the same high level task may require many more instructions on a RISC machine, but might execute faster than a single CISC instruction. Thus, the Dhrystone score counts only the number of program iteration completions per second, allowing individual machines to perform this calculation in a machine specific way. Another common representation of the Dhrystone benchmark is the DMIPS (Dhrystone MIPS) obtained when the Dhrystone score is divided by 1757 (the number of Dhrystones per second obtained on the VAX 11/780, nominally a 1 MIPS machine). Another way to represent results is in DMIPS/MHz, where DMIPS result is further divided by CPU frequency, to allow for easier comparison of CPUs running at different clock rates.