Dhrystone

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Dhrystone — синтетический тест производительности компьютеров, разработанный в 1984 году Reinhold P. Weicker. Нацелен на тестирование системной (целочисленной) производительности процессоров общего назначения. Исходный тест — Whetstone.

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

Тест был популярен в 1980-е годы.[1]

Dhrystone и Whetstone[править | править код]

Тест Dhrystone не содержит операций над числами с плавающей запятой, и его название образовано от теста Whetstone с помощью игры слов. Whetstone звучит также как и Wetstone — влажный камень, Dhrystone звучит также как и Drystone — сухой камень. При этом настоящий перевод Whetstone — точильный камень, а слово Dhrystone является изобретенным и не переводится.

Результатом теста является Dhrystones per second (количество итераций основного цикла в секунду).

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

Цели Dhrystone[править | править код]

Dhrystone используется уже более 20 лет с момента написания.

Dhrystone и CoreMark[править | править код]

CoreMark — небольшой тест производительности от некоммерческого Embedded Microprocessor Benchmark Consortium (EEMBC). Может запускаться на большом количестве процессорных ядер (например, на микроконтроллерах), в чем сходен с Dhrystone. Оба теста бесплатны. CoreMark избегает проблем с оптимизациями, используя реальные алгоритмы вместо синтетического набора инструкций. Кроме того, результаты работы тестов сверяются с эталонными. Существует набор правил по запуску теста и публикации его результатов.

Результаты[править | править код]

Dhrystone выдает результат в форме: Количество итераций в секунду. Часто этот результат приводят к DMIPS (от Dhrystone MIPS) путём деления на 1757 (результат Dhrystone/s для компьютера VAX 11/780, то есть номинальной машине с 1 DMIPS).

DMIPS можно делить на частоту процессора, чтобы получить DMIPS/MHz. Такие единицы позволяют сравнивать процессоры с разной тактовой частотой.

Ограничения[править | править код]

Dhrystone содержит необычный код, который не встречается в обычных программах. Кроме того, результат Dhrystone может быть искажен оптимизациями компилятора. Например, в тесте производится множество копирований строк для измерения производительности строковых функций. Однако, строки в Dhrystone имеют заранее известную постоянную длину, а их начала выровнены по натуральным границам. В обычных программах эти два свойства часто не выполняются. Благодаря известной длине и смещению, оптимизатор может заменить строковое копирование на последовательность копирований слов (без цикла), завысив производительность (иногда на десятки процентов).

Код Dhrystone достаточно небольшой, чтобы полностью помещаться в кэш инструкций современного процессора, поэтому производительность instruction fetch тестируется слабо.[2]

См. также[править | править код]

Примечания[править | править код]

  1. О разрядности процессоров. iXBT.com. — «... на популярном в 1980-е бенчмарке Dhrystones...» Дата обращения: 27 сентября 2013. Архивировано 3 апреля 2013 года.
  2. ECL Dhrystone White Paper. Дата обращения: 20 декабря 2012. Архивировано 26 июля 2011 года.

Литература[править | править код]

Ссылки[править | править код]