Whetstone

Whetstone — синтетический тест производительности (бенчмарк) для компьютеров.[1] Изначально написан в ноябре 1972 года на языке программирования Алгол 60 в National Physical Laboratory в Великобритании на базе статистики поведения программ, полученной на компьютере KDF9 с использованием модифицированного компилятора Whetstone Algol 60. Статистика поведения программ отражает типичные научные задачи, решаемые KDF9. Компилятор Whetstone был создан подразделением Atomic Power компании English Electric в Whetstone, графство Лестершир,[2] в честь которого получил своё название. Последний компьютер KDF9 был выключен в 1980 году, но возможен запуск оригинального теста на эмуляторе.

Версия бенчмарка, написанная на языке Фортран (FOPR12 и FOPR13), стала первым широко используемым тестом производительности общего назначения. Она была разработана Harold Curnow из HM Treasury Technical Support Unit (TSU — позже стало частью Central Computer and Telecommunications Agency — CCTA). В дальнейшем эта версия развивалась Roy Longbottom, также из TSU/CCTA.

Бенчмарк Whetstone изначально измерял производительность в единицах kilo-Whetstone Instructions Per Second (kWIPS, тысячи Whetstone-инструкций в секунду). Позже стандартной единицей стали MWIPS — миллионы таких инструкций в секунду. Исторические результаты различных мини-компьютеров, мейнфреймов и суперкомпьютеров опубликованы на сайте Whetstone Benchmark History and Results. Также указаны год выпуска систем и их стоимость. Для сравнения дано несколько результатов, полученных на персональных компьютерах: Detailed results on PCs.

Существуют версии с исходным кодом для ПК на языках C/C++, Basic, Visual Basic, Fortran, Java, опубликованные на сайте Roy Longbottom PC Benchmark Collection. Также подготовлены скомпилированные программы для DOS, OS/2, Windows.

В первую очередь Whetstone измеряет производительность работы арифметики с плавающей запятой. Сходный бенчмарк для целочисленных и строковых операций — Dhrystone.

Структура

Тест является очень простым, состоит всего из 150 операторов с 8 активным циклами, три из которых запускаются внутри подпрограмм. Тестируется выполнение арифметики с плавающей запятой, вызовов функций, присваиваний, работы с числами с фиксированной запятой, ветвлений. Наиболее сложный цикл, который исполняется от 30 до 50% времени, проводит вычисления с плавающей запятой и вызов подпрограммы.

Используется очень небольшое количество данных, которые полностью помещаются в кеш первого уровня (L1) большинства центральных процессоров. Таким образом, скорость кеша второго уровня и памяти не влияют на полученную производительность. Результат теста пропорционален частоте процессора.

Код разрабатывался так, чтобы его не могли оптимизировать компиляторы. Однако не учитывалось, что компиляторы могут встраивать функции в точку вызова (оптимизация inline). С использованием современных компиляторов скорость исполнения теста увеличивается приблизительно в два раза за счет inline, подбора инструкций и удаления промежуточных пересылок через память.

См. также

Примечания

  1. Curnow, H. J. and Wichman, B. A. «A Synthetic Benchmark», Computer Journal, Volume 19, Issue 1, February 1976., p. 43—49.
  2. Randell, B. and Russell, L. J. «Algol 60 Implementation», London: Academic Press, 1964. ISBN 0-12-578150-4.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.