В компьютерной архитектуре количество циклов на инструкцию (также известное как количество тактов на инструкцию , количество тактов на инструкцию или CPI ) является одним из аспектов производительности процессора : среднее количество тактов на инструкцию для программы или фрагмента программы. [1] Это мультипликативная обратная величина количества инструкций на цикл .
Среднее значение числа циклов на инструкцию в данном процессе ( CPI ) определяется следующим средневзвешенным значением :
Где — количество инструкций для данного типа инструкций , — такты для этого типа инструкций, — общее количество инструкций. Суммирование суммирует все типы инструкций для данного процесса бенчмаркинга.
Предположим, что имеется классический RISC-конвейер со следующими пятью этапами:
Каждый этап требует одного такта, и инструкция проходит через этапы последовательно. Без конвейеризации , в многоцикловом процессоре , новая инструкция извлекается на этапе 1 только после того, как предыдущая инструкция завершается на этапе 5, поэтому количество тактов, необходимых для выполнения инструкции, равно пяти (CPI = 5 > 1). В этом случае процессор называется субскалярным . С конвейеризацией новая инструкция извлекается на каждом такте, используя параллелизм на уровне инструкций , поэтому, поскольку теоретически можно иметь пять инструкций на пяти этапах конвейера одновременно (одна инструкция на этап), другая инструкция завершит этап 5 на каждом такте, и в среднем количество тактов, необходимых для выполнения инструкции, равно 1 (CPI = 1). В этом случае процессор называется скалярным .
При использовании процессора с одним исполнительным блоком наилучшее достижимое значение CPI равно 1. Однако при использовании процессора с несколькими исполнительными блоками можно достичь еще лучших значений CPI (CPI < 1). В этом случае процессор называется суперскалярным . Чтобы получить лучшие значения CPI без конвейеризации, количество исполнительных блоков должно быть больше количества стадий. Например, при использовании шести исполнительных блоков шесть новых инструкций извлекаются на стадии 1 только после того, как шесть предыдущих инструкций завершатся на стадии 5, поэтому в среднем количество тактов, необходимых для выполнения инструкции, составляет 5/6 (CPI = 5/6 < 1). Чтобы получить лучшие значения CPI с конвейеризацией, должно быть не менее двух исполнительных блоков. Например, при использовании двух исполнительных блоков две новые инструкции выбираются в каждом такте за счет использования параллелизма на уровне инструкций, поэтому две различные инструкции завершат этап 5 в каждом такте, а в среднем количество тактов, необходимых для выполнения инструкции, составляет 1/2 (CPI = 1/2 < 1).
Для многоциклового MIPS существует пять типов инструкций:
Если в программе есть:
тогда ИПЦ равен:
[2] Для выполнения тестовой программы использовался процессор с тактовой частотой 400 МГц со следующим набором инструкций и количеством тактовых циклов :
Определите эффективную скорость CPI, MIPS (миллионов инструкций в секунду) и время выполнения для этой программы.
так как: и
Поэтому: