Открыть сервис

Dhrystone

Dhrystone — это синтетический тест производительности (бенчмарк) для процессоров и вычислительных систем, предназначенный для оценки скорости выполнения целочисленных операций. В отличие от тестов, моделирующих реальные приложения, Dhrystone измеряет производительность на уровне абстрактных алгоритмов, что позволяет сравнивать эффективность архитектур и компиляторов. Название теста происходит от игры слов: «dry» (сухой) и «stone» (камень), что подчёркивает его «синтетическую» природу (как у другого известного бенчмарка Whetstone, ориентированного на операции с плавающей запятой).

История

Dhrystone был разработан в 1984 году Ричардом П. Габриэлем (Richard P. Gabriel) и опубликован в журнале ACM SIGPLAN Notices. Изначально тест создавался как замена бенчмарку Whetstone, который, по мнению авторов, слишком сильно зависел от операций с плавающей запятой и не отражал реальную нагрузку в системах общего назначения. Dhrystone, напротив, фокусируется на целочисленных операциях, характерных для компиляторов, операционных систем и текстовых редакторов.

Первая версия теста (Dhrystone 1.0) была написана на языке Ada, но позже была переписана на C для более широкого распространения. В 1988 году вышла версия Dhrystone 2.1, которая исправила некоторые проблемы с оптимизацией компилятора и стала де-факто стандартом. Этот тест активно использовался в 1980–1990-х годах для сравнения производительности рабочих станций, мини-компьютеров и первых персональных компьютеров.

С развитием процессоров и появлением более сложных тестов (например, SPECint) популярность Dhrystone снизилась. Однако он остаётся востребованным во встраиваемых системах и микроконтроллерах, где простота и предсказуемость теста важны для оценки производительности.

Устройство и методология

Dhrystone представляет собой набор из 100 операторов (статистически смоделированных на основе анализа реальных программ), которые выполняются в цикле. Тест включает следующие типы операций:

  • Присваивания (переменные, строки, указатели).
  • Арифметические и логические операции.
  • Условные переходы (if-else).
  • Вызовы функций и процедур (с передачей параметров).
  • Работу с массивами и указателями.

Результат измеряется в Dhrystone MIPS (Million Instructions Per Second) — количестве миллионов операций в секунду, которые выполняет процессор при прогоне теста. Однако это значение не является прямым измерением реальной производительности, а представляет собой относительную метрику. Для сравнения разных систем используется DMIPS (Dhrystone MIPS), нормированный относительно эталонной машины — VAX 11/780, которая показывает 1 DMIPS (примерно 1757 Dhrystone-операций в секунду). Таким образом, процессор, выполняющий 1757 Dhrystone-операций в секунду, имеет производительность 1 DMIPS.

Критика и ограничения

Основной недостаток Dhrystone — его малый размер. Тест легко помещается в кэш-память первого уровня (L1) современных процессоров, что делает его нечувствительным к задержкам оперативной памяти и пропускной способности шины. Кроме того, Dhrystone не включает операции с плавающей запятой, векторные инструкции (SIMD), многопоточность или работу с памятью большого объёма. Поэтому результаты Dhrystone могут значительно отличаться от производительности в реальных приложениях, таких как базы данных, видеокодирование или научные расчёты.

Ещё одна проблема — подверженность оптимизации компилятора. Современные компиляторы могут распознавать шаблоны кода Dhrystone и удалять «бесполезные» операции (например, присваивания без последующего использования), что завышает результаты. Для борьбы с этим в тесте используются специальные приёмы: результаты вычислений передаются в «чёрный ящик» (функцию, которая не оптимизируется), а переменные объявляются как volatile.

Применение

Несмотря на устаревание для настольных и серверных систем, Dhrystone продолжает использоваться в следующих областях:

  • Встраиваемые системы и микроконтроллеры: Производители чипов (ARM, RISC-V, MIPS) публикуют значения DMIPS для своих ядер. Это позволяет разработчикам сравнивать производительность разных архитектур при выборе компонентов для устройств с ограниченными ресурсами (например, датчики, бытовая техника, автомобильные блоки управления).
  • Оценка компиляторов: Dhrystone используется для тестирования эффективности генерации кода различными компиляторами (GCC, Clang, IAR, Keil). Изменение результата при смене флагов оптимизации показывает, насколько хорошо компилятор адаптирует код под конкретную архитектуру.
  • Академические исследования: В статьях по компьютерной архитектуре Dhrystone часто применяется как простой и воспроизводимый бенчмарк для сравнения новых процессорных ядер или методов оптимизации.

Примеры результатов

Типичные значения DMIPS для различных процессоров (приблизительные, в зависимости от тактовой частоты и компилятора):

Процессор / АрхитектураDMIPS (на ядро)Примечание
ARM Cortex-M0 (48 МГц)~0.04 DMIPS/МГцНизкопроизводительный микроконтроллер
ARM Cortex-M4 (100 МГц)~1.25 DMIPS/МГцСредний класс, с FPU
ARM Cortex-A72 (2.0 ГГц)~4.7 DMIPS/МГцВысокопроизводительное ядро (Raspberry Pi 4)
Intel Core i7-8700K (3.7 ГГц)~6.5 DMIPS/МГцНастольный процессор (x86)
RISC-V (SiFive U74, 1.0 ГГц)~2.5 DMIPS/МГцОткрытая архитектура

Эти значения показывают, что современные процессоры достигают десятков тысяч DMIPS, что в тысячи раз превышает производительность VAX 11/780. Однако из-за ограничений теста такие цифры не отражают реальную разницу в скорости выполнения сложных задач.

Сравнение с другими бенчмарками

  • Whetstone: Ориентирован на операции с плавающей запятой, также синтетический, но более чувствителен к конвейерной обработке и FPU.
  • SPECint: Набор реальных приложений (сжатие, компиляция, шифрование), требует много памяти и времени, лучше отражает производительность в сложных задачах.
  • CoreMark: Современный синтетический тест от Embedded Microprocessor Benchmark Consortium (EEMBC), который включает работу с памятью, циклы и контрольные суммы. CoreMark считается более репрезентативным, чем Dhrystone, и активно вытесняет его во встраиваемых системах.

Интересные факты

  • Название «Dhrystone» было придумано как шутка: авторы хотели создать «сухой камень» (dry stone) в противовес «точильному камню» (whetstone).
  • Исходный код Dhrystone на языке C занимает около 200 строк, что делает его одним из самых компактных бенчмарков.
  • В СССР и России Dhrystone использовался для оценки производительности клонов процессоров (например, Эльбрус, КР580ВМ80А) в 1980–1990-х годах.
  • В 2020-х годах Dhrystone всё ещё включается в пакеты тестирования операционных систем реального времени (RTOS), таких как FreeRTOS и Zephyr.

Источники

  • Gabriel, Richard P. (1984). «Dhrystone: A Synthetic Systems Programming Benchmark». ACM SIGPLAN Notices.
  • Weicker, Reinhold P. (1984). «Dhrystone: A Synthetic Systems Programming Benchmark». Communications of the ACM.
  • EEMBC (Embedded Microprocessor Benchmark Consortium). «CoreMark vs. Dhrystone: A Comparison».
  • ARM. «Cortex-M Processor Comparison Table». ARM Developer Documentation.
  • Intel. «Performance Benchmarking with Dhrystone». Intel Developer Zone.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →