IPS (быстродействие)

IPS (англ. Instructions per second, инструкции в секунду) — это мера скорости работы процессора компьютера, отражающая количество операций, выполняемых центральным процессором за одну секунду. Для архитектур с расширенным набором команд (CISC) различные машинные инструкции имеют разную длительность выполнения, поэтому измеряемое значение зависит от набора используемых инструкций; даже при сравнении процессоров одной серии метрика IPS может быть некорректна. Во многих случаях приводятся «пиковые» значения IPS, достигнутые на искусственно упрощённых последовательностях инструкций без ветвлений и конфликтов кэша, однако в реальных задачах достигаемые значения оказываются заметно ниже. Значительно на итоговую производительность влияет и иерархия памяти, что практически не учитывается при расчётах IPS. В связи с этим для оценки производительности в прикладных задачах часто используют синтетические тесты, такие как Dhrystone, а сама метрика IPS постепенно утратила былую актуальность[1]. Термин IPS часто употребляется с метрическими приставками: kIPS (англ. kilo instructions per second, тысячи инструкций в секунду), MIPS (англ. mega instructions per second, миллионы инструкций в секунду), GIPS (англ. giga instructions per second, миллиарды инструкций в секунду) и далее. В прошлом для «тысячи IPS» иногда также применялось обозначение TIPS.

Расчёт IPS

Вычисление значения IPS производится по формуле:[1]

Однако показатель инструкций на цикл зависит от последовательности команд, обрабатываемых данных и внешних факторов.

Масштабные единицы

Для большинства ранних 8-битных и 16-битных микропроцессоров производительность измерялась в тысячах инструкций в секунду (kIPS).

Понятие «миллионы инструкций в секунду» (MIPS) стало востребовано в конце 1970-х годов. Например, модели IBM System/370 158–3 и VAX-11/780 считались приблизительно эквивалентными по производительности на уровне 1 MIPS.

Типы инструкций

Скорость процессора зависит от множества факторов, включая тип выполняемых инструкций, их порядок и присутствие команд перехода (особенно проблемных из-за разрыва конвейера). Темп выполнения инструкций (MIPS) отличается от тактовой частоты, обычно измеряемой в герцах (Гц), поскольку одна команда часто требует нескольких тактов, а современные процессоры способны исполнять несколько независимых инструкций параллельно. MIPS полезен при сравнении процессоров схожей архитектуры (например, внутри семейства PIC-микроконтроллеров), но затруднительно использовать для сравнения разных архитектур, особенно RISC и CISC[2]. Это породило ироническое толкование сокращения MIPS как «бессмысленный индикатор скорости процессора»[3], или менее часто — «бессмысленные индексы производительности»[4]. К середине 1980-х такое отношение было распространено среди специалистов.

Набор Гибсона (1959)

До появления стандартных тестов средней скоростью компьютеров считалась скорость обработки определённой смеси инструкций, с результатом в kIPS. Одной из первых попыток формализации набора тестовых команд стал набор Гибсона, предложенный в 1959 году Джеком Кларком Гибсоном из IBM для научных применений[5].

Гибсон разделил команды IBM 704 на 12 классов, добавив 13-й для учёта времени индексации. Вес каждого класса определялся по анализу семи научных программ для IBM 704 и с учётом некоторых программ для IBM 650. Итоговая оценка выводилась как взвешенная сумма средней скорости выполнения команд из каждого класса[5].

Набор Гибсона отражает подход своего времени, когда вычислительные мощности ещё измерялись в kIPS. Для коммерческих задач разрабатывались альтернативные рейтинги, например, ADP mix, не включавший операции с плавающей точкой. Первые такие методики ещё не были столь системными, однако сама идея создания эталонных наборов, имитирующих прикладные задачи, позднее — «синтетический тест», осталась.

Два варианта VAX MIPS

Компьютер VAX-11/780, выпущенный в 1977 году, позиционировался как первый миникомпьютер, способный исполнять миллион команд System/370 в секунду. Он быстро стал распознаваемой отправной точкой для референса MIPS в двух тестах:

  • В 1980 году для Whetstone, синтетического теста с фокусом на целочисленных операциях, появился показатель «VAX MIPS» как усреднение по трём сугубо целочисленным тестам в Whetstone. Изначально тесты задавались как 42 оператора на ALGOL 60 (124 инструкции KDF9), но к 1980 году был переписан на Fortran.
  • В более общем целочисленном тесте Dhrystone показатель MIPS также был привязан к VAX. Новый эталон «DMIPS» определялся как число выполненных итераций основного цикла теста Dhrystone за секунду, где один DMIPS соответствовал 1757 итерациям — результату VAX-11/780.

Другие смеси инструкций

zMIPS — внутренний показатель производительности IBM для оценки своих мэйнфреймов семейств zSeries, IBM System z9 и IBM System z10.

WMOPS (Weighted Million Operations Per Second, взвешенный миллион операций в секунду) — подобная метрика, используемая для оценки эффективности аудиокодеков.

Прочие факторы, влияющие на IPS

Реальная производительность процессоров в MIPS сильно зависит от языка и качества компилятора: некоторые компиляторы генерируют эффективный код, а другие — нет. В отчёте Whetstone приводится таблица MWIPS для разных компиляторов, интерпретаторов и языков — от первых компиляторов для BASIC (1982, CPU 8088/87 на 4,8 МГц: 0,01 MWIPS) до современных языков высокого уровня (на Intel Core 2 Duo 2,4 ГГц: от 9,7 MWIPS на интерпретаторе BASIC, до 2403 MWIPS в актуальном C/C++-компиляторе).

Хронология производительности (IPS)

Примеры CPU

Процессор / система Dhrystone MIPS или MIPS, и частота Инструкций за такт Инструкций за такт на ядро Год Примечания
UNIVAC I 0,002 MIPS при 2,25 МГц 0,0008 0,0008 1951

[6]

IBM 7030 ("Stretch") 1,200 MIPS при 3,30 МГц 0,364 0,364 1961 [7][8]
CDC 6600 10,00 MIPS при 10,00 МГц 1 1 1965 [9][10]
Intel 4004 0,092 MIPS при 0,740 МГц
(не Dhrystone)
0,124 0,124 1971 [11]
IBM System/370 Model 158 0,640 MIPS при 8,696 МГц 0,0736 0,0736 1972 [12]
Intel 8080 0,290 MIPS при 2,000 МГц
(не Dhrystone)
0,145 0,145 1974 [13]
Cray 1 160,0 MIPS при 80,00 МГц 2 2 1975 [14]
MOS Technology 6502 0,430 MIPS при 1,000 МГц 0,43 0,43 1975 [15]


Результаты мультипроцессорных систем

Процессор / система Dhrystone MIPS или MIPS, и частота Инструкций за такт Инструкций за такт на ядро Год Примечания
LINKS-1 Computer Graphics System (257 процессоров) 642,5 MIPS при 10 МГц 2,5 0,25 1982 [16]

Примечания