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 →