Дристон - Dhrystone

Dhrystone - это программа для тестирования синтетических вычислений, разработанная в 1984 году Райнхольдом П. Вайкером и предназначенная для представления системного ( целочисленного ) программирования. Dhrystone стал представителем общей производительности процессоров ( ЦП ). Название «Dhrystone» - это игра слов на другом алгоритме тестирования под названием Whetstone , который подчеркивает производительность с плавающей запятой .

С помощью Dhrystone Вайкер собирал метаданные из широкого спектра программного обеспечения, включая программы, написанные на FORTRAN , PL / 1 , SAL, ALGOL 68 и Pascal . Затем он охарактеризовал эти программы с точки зрения различных общих конструкций: вызовов процедур, косвенных указателей , присваиваний и т. Д. На основе этого он написал тест Dhrystone, чтобы он соответствовал репрезентативному миксу. Dhrystone был опубликован на языке Ada , причем версия C для Unix, разработанная Риком Ричардсоном («версия 1.1»), во многом способствовала его популярности.

Дристон против Уэтстоуна

Тест Dhrystone не содержит операций с плавающей запятой , поэтому это название является каламбуром популярного в то время теста Whetstone для операций с плавающей запятой. Результатом теста является количество кристаллов в секунду (количество итераций основного цикла кода в секунду).

И Whetstone, и Dhrystone являются синтетическими тестами, а это означает, что они представляют собой простые программы, тщательно разработанные для статистического моделирования использования процессора некоторым общим набором программ. Whetstone, разработанный в 1972 году, изначально стремился имитировать типичные программы на языке Algol 60, основанные на измерениях 1970 года, но в конечном итоге стал наиболее популярным в своей версии на Фортране, отражающей высокоуровневую ориентацию вычислений в 1960-х годах.

Вопросы, которые решает Dhrystone

В конечном итоге важность Dhrystone как индикатора универсальной («целочисленной») производительности новых компьютеров сделала его мишенью для авторов коммерческих компиляторов. Различные современные методы статического анализа кода компилятора (такие как устранение мертвого кода : например, код, который использует процессор, но дает внутренние результаты, которые не используются или не выводятся), затрудняют использование и разработку синтетических тестов. Версия 2.0 эталонного теста, выпущенная Вейкером и Ричардсоном в марте 1988 г., содержала ряд изменений, призванных помешать ряду методов компиляции. Тем не менее, он был тщательно разработан, чтобы не повлиять на базовый тест. Эта попытка помешать компиляторам увенчалась успехом лишь отчасти. Dhrystone 2.1, выпущенный в мае того же года, претерпел некоторые незначительные изменения и по состоянию на июль 2010 года остается текущим определением Dhrystone.

Помимо проблем, связанных с оптимизацией компилятора, с Dhrystone упоминались и другие проблемы. Большинство из них, включая небольшой размер кода и небольшой размер набора данных, были поняты во время его публикации в 1984 году. Более тонким является небольшое избыточное представление строковых операций, которое в значительной степени связано с языком: и Ada, и Pascal имеют строки как обычные переменные в языке, тогда как C этого не делает, поэтому то, что было простым присваиванием переменных в эталонных тестах, стало операциями копирования буфера в библиотеке C. Другая проблема заключается в том, что сообщаемый рейтинг не включает информацию, которая имеет решающее значение при сравнении систем, например, какой компилятор использовался и какие оптимизации.

Dhrystone остается удивительно устойчивым в качестве простого эталона, но его неизменная ценность в установлении истинной производительности сомнительна. Он прост в использовании, хорошо документирован, полностью автономен, понятен и может работать практически в любой системе. В частности, он остается в широком использовании во встроенном компьютерном мире, хотя недавно разработанных EEMBC эталонных тестов, в CoreMark автономного тесте, намекает, поток, и даже Bytemark широко цитируется и используется, а также более конкретные целевые показатели для памяти подсистема (Cachebench), TCP / IP (TTCP) и многие другие.

Полученные результаты

Dhrystone может представлять результат более значимо, чем MIPS (миллион инструкций в секунду), потому что сравнение количества инструкций между различными наборами инструкций (например, RISC и CISC ) может затруднить простые сравнения. Например, одна и та же высокоуровневая задача может потребовать гораздо больше инструкций на RISC-машине, но может выполняться быстрее, чем одна инструкция CISC. Таким образом, оценка Dhrystone учитывает только количество завершений итераций программы в секунду, что позволяет отдельным машинам выполнять этот расчет индивидуально для каждой машины. Другим распространенным представлением теста Dhrystone является DMIPS (Dhrystone MIPS ), полученный, когда показатель Dhrystone делится на 1757 (количество кристаллов в секунду, полученных на VAX 11/780 , номинально на машине с 1 MIPS).

Другой способ представления результатов - в DMIPS / МГц, где результат DMIPS дополнительно делится на частоту процессора, чтобы упростить сравнение процессоров, работающих с разными тактовыми частотами .

Недостатки

Использование Dhrystone в качестве эталона имеет подводные камни:

  • Он имеет необычный код, который обычно не соответствует современным программам из реальной жизни.
  • Он подвержен оптимизации компилятора. Например, он часто копирует строки, пытаясь измерить производительность копирования строк. Однако струны в Dhrystone имеют известную постоянную длину, и их начало выровнено по естественным границам, две характеристики обычно отсутствуют в реальных программах. Следовательно, оптимизатор может заменить копию строки последовательностью перемещений слов без каких-либо циклов, что будет намного быстрее. Следовательно, такая оптимизация завышает производительность системы, иногда более чем на 30%.
  • Небольшой размер кода Dhrystone может уместиться в кэше инструкций современного ЦП, поэтому производительность выборки инструкций не подвергается тщательному тестированию. Точно так же Dhrystone может полностью уместиться в кэше данных , таким образом не проявляя производительности промахов кэша данных. Чтобы противостоять проблеме размещения в кэше, тест SPECint был создан в 1988 году, чтобы включить набор (первоначально 8) гораздо более крупных программ (включая компилятор), которые не могли поместиться в кеши L1 или L2 той эпохи.

Смотрите также

использованная литература

внешние ссылки