Нужна помощь в расчете ИПЦ для mips конвейера с пересылкой - PullRequest
0 голосов
/ 09 июня 2019

Здравствуйте, у меня есть домашнее задание, которое я задал в классе по структуре компьютера. У меня есть процессор MIP с конвейером и кодом, и мне нужно рассчитать CPI процессора. Я знаю, что после lw я получу остановку, если я что-то вычислю, а после ветвления будет какая-то остановка, также я рассчитал частоту каждой инструкции.

Как мне рассчитать ИПЦ? Я знаю, как сделать это для многоциклов, но не для конвейера.

был бы очень признателен за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 09 июня 2019

В контексте конвейера ЦП потенциально может читать и запускать инструкцию на каждом цикле. Таким образом, поскольку CPI связан с пропускной способностью выполнения, без каких-либо данных или опасности управления, создающей задержку, мы бы посчитали, что каждая инструкция занимает цикл.
Это, очевидно, неправильно, поскольку для выполнения инструкции требуется несколько циклов, но программа с N >> 1 инструкциями займет N циклов, и мы можем считать, что количество циклов на инструкцию равно 1.

Теперь, что происходит, когда у нас происходит остановка из-за задержки доступа к памяти, задержки перехода или чего-то еще? Из-за этого срыва у нас больше не будет 1 инструкции за цикл. Во время остановки конвейер будет заморожен или будет получена неправильная инструкция, и общий результат - потеря процессора для процессора.
По этой причине мы считаем, что инструкция, которая создает 1 цикл, останавливается за последние 2 цикла, что касается вычисления CPI. Точно так же, если есть остановка с двумя циклами, мы считаем, что инструкция - это 3 цикла и так далее.

Предположим, что 50% инструкций ld создают срыв, ld без опасности будет иметь «длительность» 1 цикла, а при срыве «duration» - 2 цикла, поэтому у нас в среднем 1,5 цикла для лд.
Предположим также, что из-за задержки ветвления ветвления составляют 2 цикла.
Если другие инструкции состоят из 1 цикла, 20% команд являются ld, а другие 20% являются ветвями, у нас есть
ИПЦ = 0,20 * 1,5 + 0,20 * 2 + 0,6 * 1 = 1,3 цикла на инструкцию.

...