В компьютерной архитектуре, циклов на инструкцию (иначе тактов на инструкцию, тактов на инструкцию или CPI ) - один из аспектов процессора производительность: среднее количество тактовых циклов на инструкцию для программы или фрагмента программы. Это мультипликативный обратный инструкций за цикл.
Среднее количество циклов на инструкцию в данном процессе определяется следующим образом:
где - количество инструкций для данного типа инструкций. , - часы- циклов для этого типа команды, а - общее количество команд. Суммирование сумм по всем типам инструкций для данного процесса тестирования.
Предположим, что классический конвейер RISC со следующими пятью этапами:
Каждый этап требует одного тактового цикла, и инструкция проходит через этапы последовательно. Без конвейерной обработки в многоцикловом процессоре новая инструкция выбирается на этапе 1 только после того, как предыдущая инструкция завершается на этапе 5, поэтому количество тактовых циклов, необходимых для выполнения инструкция - пять (CPI = 5>1). В этом случае процессор называется субскалярным. При конвейерной обработке новая инструкция выбирается каждый такт за счет использования параллелизма на уровне инструкций, поэтому, поскольку теоретически можно иметь пять инструкций на пяти этапах конвейера одновременно (одна инструкция на этап), другая инструкция будет завершать этап 5 за каждый такт, и в среднем количество тактов, необходимых для выполнения инструкции, равно 1 (CPI = 1). В этом случае процессор называется скалярным.
Для процессора с одним исполнительным блоком наилучший достижимый CPI равен 1. Однако с процессором с несколькими исполнительными блоками можно достичь еще лучших значений CPI (CPI < 1). In this case, the processor is said to be суперскаляр. Чтобы получить лучшие значения CPI без конвейерной обработки, количество исполнительных блоков должно быть больше, чем количество этапов. Например, с шестью исполнительными блоками шесть новых инструкций выбираются на этапе 1 только после шести предыдущих инструкций. завершаются на этапе 5, поэтому в среднем количество тактов, необходимых для выполнения инструкции, составляет 5/6 (CPI = 5/6 < 1). To get better CPI values with pipelining, there must be at least two execution units. For example, with two executions units, two new instructions are fetched every clock cycle by exploiting instruction-level parallelism, therefore two different instructions would complete stage 5 in every clock cycle and on average the number of clock cycles it takes to execute an instruction is 1/2 (CPI = 1/2 < 1).
Для многоциклового MIPS существует пять типов инструкций:
Если программа имеет:
тогда CPI:
Для выполнения программы тестирования был использован процессор 400 МГц со следующим и тактовым циклом count:
Instruction TYPE | Instruction count | Тактовым циклом |
---|---|---|
Целочисленная арифметика | 45000 | 1 |
Передача данных | 32000 | 2 |
Плавающая точка | 15000 | 2 |
Управляющая передача | 8000 | 2 |
Определите эффективный CPI, MIPS (Миллионы инструкций в секунду) скорость и время выполнения этой программы.
с: и
Следовательно: