Ветка в классическом 5-ступенчатом трубопроводе

Я был бы признателен, если бы кто-нибудь мог ответить на мой вопрос, касающийся следующих упражнений (не домашней работы, делающей это для себя):

Нарисуйте временную диаграмму цикла конвейера для приведенного выше кода. Начните с первого lw перед циклом, запустите одну итерацию цикла и остановитесь на первом хранилище второй итерации.

Ну, я опустил "приведенный выше код", как вы можете видеть в таблице. "S" означает стойло. Ниже таблицы должен быть правильный ответ.

Вопрос: почему в 9-м цикле остановка для филиала? Это просто этап декодирования. Как я понимаю, ему пока не нужны значения операндов.

Буду признателен, если кто-нибудь может прокомментировать...

инструкция 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
--------------------------------------------------------------------------------
lw r3, 0(r2)   f | д | х | м | ш |   |   |   |   |    |    |    |    |    |    |
sw r3, 0(r2)     | f | д | х | м | ш |   |   |   |    |    |    |    |    |    |
sub r1, r3, r4   |   | f | д | х | м | ш |   |   |    |    |    |    |    |    |
lw r3, 0(r1)     |   |   | f | д | х | м | ш |   |    |    |    |    |    |    |
sw r1, 0(r3)     |   |   |   | f | д | с | х | м | ш |    |    |    |    |    |
subi r2, r2, 4   |   |   |   |   | f | с | д | х | м | ш | | | | | бнез р2, петля | | | | | | | f | с | д | х | м | ш |    |    |
lw r3, 0(r2)     |   |   |   |   |   |   |   |   | f  | д | х | м | ш |    |
sw r3, 0(r2)     |   |   |   |   |   |   |   |   |    | f  | д | х | м | ш | 

1 ответ

Википедия говорит, что классический 5-этапный конвейер предполагает, что ответвления разрешаются на этапе декодирования, если у них нет предсказания переходов или спекулятивного выполнения.

Другие вопросы по тегам