Ветка в классическом 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-этапный конвейер предполагает, что ответвления разрешаются на этапе декодирования, если у них нет предсказания переходов или спекулятивного выполнения.