На каком этапе строительства принимается отраслевое решение? - PullRequest
0 голосов
/ 28 сентября 2018

На каком этапе конвейера RISC принимается решение филиала?Это в «Декодировании» или «Выполнении» или других этапах?Предположим, что конвейер состоит из 5 этапов - «IF», ​​«ID», «EX», «MEM» и «WB».

1 Ответ

0 голосов
/ 29 сентября 2018

Ранний MIPS оценивал условия ветвления с помощью специального исполнительного блока на этапе декодирования, поэтому ему требовался только 1 цикл цикла (который он заполняет 1 слотом задержки ветвления: Что такое слоты точки задержки? ).

Источник: Классический RISC Википедии (5-ступенчатый конвейер) статья

Декодирование инструкции

(4-й абзац) Если декодированная инструкция была ветвью или переходом, целевой адрес ветви или перехода вычислялся параллельно со считыванием файла регистра.Условие ветвления вычисляется после считывания файла регистра, и если выполняется ветвление или если инструкция является переходом, предиктору ПК на первом этапе назначается цель ветвления, а не вычисленный увеличенный ПК.

Следует отметить, что некоторые архитектуры использовали ALU на этапе выполнения за счет небольшого уменьшения пропускной способности команд.

Также: Какова роль EXстадия ветвления в конвейерной MIPS w Forwarding?

Для этого потребуется, чтобы входные данные были готовы раньше, чем обычно, однако, поэтому придется останавливаться, если ветвление происходит в результате slt или другогоинструкция, которая все еще находится в стадии EX, пока эта в ID.Или это? Как MIPS I перенаправляет из EX в ID для филиалов без остановок?


Другие источники (например, эти слайды: http://home.deib.polimi.it/santambr/dida/phd/wonderland/2014/doc/PDF/4_BranchHazard_StaticPrediction_V0.pdf) говорит "Результат филиала и целевой адрес филиала"готовы в конце этапа EX (3-й этап) "к классической инструкции MIPS beq. Это было бы частью" некоторых архитектур "того, что говорится в Википедии, но неясно, верно ли это для реального MIPS I (R2000).

Многие дискуссии о MIPS на самом деле касаются гипотетических 5-этапных конвейеров RISC, подобных MIPS, а не реального MIPS R2000 или классического Stanford MIPS CPU, на котором был основан R2000 (но это был aполная переработка ). Поэтому трудно понять, применимо ли что-либо, касающееся «MIPS», к R2000 (gcc -march=mips1) или для упрощенной обучающей версии MIPS.


Разные архитектуры могут делать разные выборы , например, останавливать или использовать прогноз ветвления + умозрительное извлечение / декодирование, если это необходимо, пока они ожидают, что результат ветвления будет готов к тому, чтокогда-либо этап производит это.

И возможно даже спекулятивное выполнение (но все еще в порядке, так что неправильная спекуляция может быть обнаружена прежде, чем она достигнет обратной записи или MEM.Вам не нужны спекулятивные магазины, записанные в кеш.)

...