Циклов на инструкцию

редактировать

В компьютерной архитектуре, циклов на инструкцию (иначе тактов на инструкцию, тактов на инструкцию или CPI ) - один из аспектов процессора производительность: среднее количество тактовых циклов на инструкцию для программы или фрагмента программы. Это мультипликативный обратный инструкций за цикл.

Содержание
  • 1 Определение
  • 2 Пояснение
  • 3 Примеры
    • 3.1 Пример 1
    • 3.2 Пример 2
  • 4 См. Также
  • 5 Ссылки
Определение

Среднее количество циклов на инструкцию в данном процессе определяется следующим образом:

CPI = Σ i (IC i) (CC i) IC {\ displaystyle CPI = {\ frac {\ Sigma _ {i} (IC_ {i}) (CC_ {i})} {IC}}}{\ displaystyle CPI = {\ frac {\ Sigma _ {i} (IC_ {i}) (CC_ {i})} {IC}}}

где IC i {\ displaystyle IC_ {i }}{\ displaystyle IC_ {i}} - количество инструкций для данного типа инструкций. i {\ displaystyle i}i, CC i {\ displaystyle CC_ {i}}{\ displaystyle CC_ {i}} - часы- циклов для этого типа команды, а IC = Σ i (IC i) {\ displaystyle IC = \ Sigma _ {i} (IC_ {i})}{\ displaystyle IC = \ Sigma _ {i} (IC_ {i})} - общее количество команд. Суммирование сумм по всем типам инструкций для данного процесса тестирования.

Пояснение

Предположим, что классический конвейер RISC со следующими пятью этапами:

  1. Цикл выборки инструкций (IF).
  2. Инструкция цикл декодирования / выборки регистра (ID).
  3. Цикл выполнения / эффективного адреса (EX).
  4. Доступ к памяти (MEM).
  5. Цикл обратной записи (WB).

Каждый этап требует одного тактового цикла, и инструкция проходит через этапы последовательно. Без конвейерной обработки в многоцикловом процессоре новая инструкция выбирается на этапе 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).

Примеры

Пример 1

Для многоциклового MIPS существует пять типов инструкций:

Если программа имеет:

  • 50% инструкций загрузки
  • 25% сохраненных инструкций
  • 15% инструкций R-типа
  • 8% инструкций перехода
  • 2% инструкций перехода

тогда CPI:

CPI = 5 × 50 + 4 × 25 + 4 × 15 + 3 × 8 + 3 × 2 100 = 4,4 {\ displaystyle {\ text {CPI}} = {\ frac {5 \ times 50 + 4 \ times 25 + 4 \ times 15 + 3 \ times 8 + 3 \ times 2} {100}} = 4,4}{ \ displaystyle {\ text {CPI}} = {\ frac {5 \ times 50 + 4 \ times 25 + 4 \ times 15 + 3 \ times 8 + 3 \ times 2} {100}} = 4,4}

Пример 2

Для выполнения программы тестирования был использован процессор 400 МГц со следующим и тактовым циклом count:

Instruction TYPEInstruction countТактовым циклом
Целочисленная арифметика450001
Передача данных320002
Плавающая точка150002
Управляющая передача80002

Определите эффективный CPI, MIPS (Миллионы инструкций в секунду) скорость и время выполнения этой программы.

ИПЦ = 45000 × 1 + 32000 × 2 + 15000 × 2 + 8000 × 2 100000 = 155000 100000 = 1,55 {\ displaystyle {\ text {CPI}} = {\ frac {45000 \ times 1 + 32000 \ times 2 +15000 \ times 2 + 8000 \ times 2} {100000}} = {\ frac {155000} {100000}} = 1,55}{\ text {CPI }} = {\ frac {45000 \ times 1 + 32000 \ times 2 + 15000 \ times 2 + 8000 \ times 2} {100000}} = {\ frac {155000} {100000}} = 1,55

400 МГц = 400, 000, 000 Гц {\ displaystyle 400 \, {\ text {MHz}} = 400 000 000 \, {\ text {Hz}}}{\ displaystyle 400 \, {\ text {MHz}} = 400000000 \, {\ text {Hz}}}

с: MIPS ∝ 1 / CPI {\ displaystyle {\ text {MIPS}} \ propto 1 / {\ text {CPI}} }{\ displaystyle {\ text {MIPS}} \ propto 1 / {\ text {CPI}}} и MIPS ∝ тактовая частота {\ displaystyle {\ text {MIPS}} \ propto {\ text {тактовая частота}}}{\ displaystyle {\ text {MIPS}} \ propto {\ text {тактовая частота}}}

Эффективная производительность процессора = MIPS = тактовая частота CPI × 1 1 миллион = 400 000 000 1,55 × 1000000 = 400 1,55 = 258 MIPS {\ displaystyle {\ text {Эффективная производительность процессора}} = {\ text {MIPS}} = {\ frac {\ text {тактовая частота}} { \ text {CPI}}} \ times {\ frac {1} {\ text {1 миллион}}} = {\ frac {400 000 000} {1,55 \ times 1000000}} = {\ frac {400} {1,55}} = 258 \, {\ text {MIPS}}}{\ displaystyle {\ text {Эффективная производительность процессора}} = {\ text {MIPS}} = {\ frac {\ text {тактовая частота}} {\ text {CPI}}} \ times {\ frac {1} {\ text {1 миллион}}} = {\ frac {400 000 000} {1,55 \ times 1000000}} = {\ frac {4 00} {1.55}} = 258 \, {\ text {MIPS}}}

Следовательно:

Время выполнения (T) = CPI × количество команд × время часов = CPI × частота счета команд = 1,55 × 100000 40 0 × 1000000 = 1,55 4000 = 0,0003875 сек = 0,3875 мс {\ displaystyle {\ text {Время выполнения}} (T) = {\ text {CPI}} \ times {\ text {Количество инструкций}} \ times {\ text { clock time}} = {\ frac {{\ text {CPI}} \ times {\ text {Количество инструкций}}} {\ text {frequency}}} = {\ frac {1,55 \ times 100000} {400 \ times 1000000 }} = {\ frac {1.55} {4000}} = 0.0003875 \, {\ text {sec}} = 0.3875 \, {\ text {ms}}}{\ displaystyle {\ text {Время выполнения}} (T) = {\ text {CPI}} \ times {\ text {Количество инструкций}} \ times { \ text {clock time}} = {\ frac {{\ text {CPI}} \ times {\ text {Instruction Count}}} {\ text {frequency}}} = {\ frac {1,55 \ times 100000} {400 \ times 1000000}} = {\ frac {1.55} {4000}} = 0.0003875 \, {\ text {sec}} = 0.3875 \, {\ text {ms}}}

См. также
Список литературы
Последняя правка сделана 2021-05-16 12:28:19
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте