Драйстоун
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2021 г. ) |
Dhrystone — это программа синтетических вычислений, тестовая разработанная в 1984 году Рейнхольдом П. Вейкером и предназначенная для представления системного ( целочисленного ) программирования. Dhrystone стал показателем общей производительности процессора ( ЦП ). Название «Dhrystone» — это игра слов на другом алгоритме тестирования под названием Whetstone , который уделяет особое внимание производительности с плавающей запятой . [1]
С помощью Dhrystone Вейкер собрал метаданные из широкого спектра программного обеспечения, включая программы, написанные на FORTRAN , PL/1 , SAL, ALGOL 68 и Pascal . Затем он охарактеризовал эти программы с точки зрения различных общих конструкций: вызовы процедур, обходы указателей , присваивания и т. д. На основе этого он написал тест Dhrystone, соответствующий репрезентативному набору программ. Dhrystone был опубликован на языке Ada , а версия C для Unix, разработанная Риком Ричардсоном («версия 1.1»), во многом способствовала его популярности.
Дристон против Уэтстоуна
[ редактировать ]Тест Dhrystone не содержит операций с плавающей запятой , поэтому название является каламбуром от популярного в то время теста Whetstone для операций с плавающей запятой. Результатом теста является количество Dhrystones в секунду (количество итераций основного цикла кода в секунду).
И Whetstone, и Dhrystone являются синтетическими тестами, то есть представляют собой простые программы, тщательно разработанные для статистической имитации использования процессора некоторым распространенным набором программ. Whetstone, разработанный в 1972 году, изначально стремился имитировать типичные программы Algol 60, основанные на измерениях 1970 года, но в конечном итоге стал наиболее популярным в своей версии на Фортране, что отражает высокочисловую ориентацию вычислений в 1960-х годах.
Проблемы, решаемые Драйстоуном
[ редактировать ]Возможная важность Драйстона как индикатора универсальной («целочисленной») производительности новых компьютеров сделала его целью для авторов коммерческих компиляторов. компилятора Различные современные методы статического анализа кода (такие как устранение мертвого кода : например, кода, который использует процессор, но выдает внутренние результаты, которые не используются или не выводятся) усложняют использование и разработку синтетических тестов. Версия 2.0 теста, выпущенная Вейкером и Ричардсоном в марте 1988 года, содержала ряд изменений, призванных помешать ряду методов компилятора. Тем не менее, он был тщательно разработан, чтобы не изменить основной эталон. Эта попытка помешать компиляторам увенчалась успехом лишь частично. Dhrystone 2.1, выпущенный в мае того же года, имел некоторые незначительные изменения и по состоянию на июль 2010 г. [update] остается текущим определением Драйстоуна.
Помимо проблем, связанных с оптимизацией компилятора, с Dhrystone были упомянуты и другие проблемы. Большинство из них, в том числе небольшой размер кода и небольшой размер набора данных, были понятны на момент его публикации в 1984 году. Более тонким является небольшое чрезмерное представление строковых операций, которое в значительной степени связано с языком: и Ада, и Паскаль имеют строки являются обычными переменными в языке, тогда как C этого не делает, поэтому то, что было простым назначением переменных в эталонных тестах, стало операциями копирования буфера в библиотеке C. Другая проблема заключается в том, что сообщаемая оценка не включает в себя информацию, которая имеет решающее значение при сравнении систем, например, какой компилятор использовался и какие оптимизации.
Dhrystone остается удивительно устойчивым в качестве простого эталона, но его постоянная ценность в установлении истинной производительности сомнительна. Он прост в использовании, хорошо документирован, полностью автономен, хорошо понятен и может работать практически в любой системе. В частности, он по-прежнему широко используется в мире встраиваемых компьютеров, хотя широко цитируются и используются недавно разработанный пакет тестов EEMBC , автономный тест CoreMark , HINT, Stream и даже Bytemark, а также более конкретные тесты для памяти. подсистема (Cachebench), TCP/IP (TTCP) и многие другие.
Результаты
[ редактировать ]Dhrystone может представлять результат более значимо, чем MIPS (миллион инструкций в секунду), поскольку сравнение количества инструкций между различными наборами команд (например, RISC и CISC ) может затруднить простое сравнение. Например, одна и та же задача высокого уровня может потребовать гораздо больше инструкций на машине RISC, но может выполняться быстрее, чем одна инструкция CISC. Таким образом, оценка Dhrystone учитывает только количество завершений итерации программы в секунду, что позволяет отдельным машинам выполнять этот расчет в зависимости от машины. Другим распространенным представлением теста Dhrystone является DMIPS (Dhrystone MIPS ), полученный при делении показателя Dhrystone на 1757 (количество Dhrystones в секунду, полученное на VAX 11/780 , номинально машина с производительностью 1 MIPS).
Другой способ представления результатов — в DMIPS/МГц, где результат DMIPS далее делится на частоту ЦП, чтобы упростить сравнение ЦП, работающих на разных тактовых частотах .
Недостатки
[ редактировать ]Использование Dhrystone в качестве эталона имеет свои подводные камни:
- Он содержит необычный код, который обычно не соответствует современным реальным программам. [2]
- Он подвержен оптимизации компилятора. Например, он выполняет большое количество операций копирования строк, пытаясь измерить производительность копирования строк. Однако строки в Dhrystone имеют известную постоянную длину, а их начала выровнены по естественным границам - две характеристики, которые обычно отсутствуют в реальных программах. Следовательно, оптимизатор может заменить копию строки последовательностью перемещений слов без каких-либо циклов, что будет намного быстрее. В результате такая оптимизация приводит к завышению производительности системы, иногда более чем на 30%. [3]
- Небольшой размер кода Dhrystone может поместиться в кэше инструкций современного процессора, поэтому производительность выборки инструкций не подвергается тщательному тестированию. [2] Аналогичным образом, Dhrystone также может полностью помещаться в кэш данных , таким образом не обеспечивая производительность при промахах кэша данных. Чтобы решить проблему нехватки кэша, в 1988 году был создан тест SPECint , включающий набор (первоначально 8) гораздо более крупных программ (включая компилятор), которые не могли поместиться в кэши L1 или L2 той эпохи.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Каламбур : точильный камень → → мокрый камень → сухой камень христон .
- ^ Перейти обратно: а б Вайс, Алан. «Бенчмарк Dhrystone: история, анализ, оценки и рекомендации» (PDF) . Архивировано (PDF) из оригинала 26 июля 2011 г. Проверено 28 апреля 2020 г.
- ^ Франко Заппа (2017). Микроконтроллеры: Аппаратное обеспечение и прошивки для 8-битных и 32-битных устройств . Издательство Эскулап. п. 66. ИСБН 978-88-9385-022-3 .
Внешние ссылки
[ редактировать ]- Вайкер, Рейнхольд (октябрь 1984 г.). «Драйстоун: эталон синтетического системного программирования» . Коммуникации АКМ . 27 (10): 1013–30. дои : 10.1145/358274.358283 . S2CID 9026014 .
- Тест Dhrystone: обоснование версии 2 и правила измерения (Рейнхольд П. Вейкер, 1988 г.)
- Эталонная программа DHRYSTONE (Рейнхольд П. Вейкер, 1995 г.)