Я рассматриваю пять этапов MIPS-конвейера (ID, IF, EXE, MEM, WB) в H & P 3rd ed. и мне кажется, что решение филиала разрешено на этапе ID, так что, пока команда перехода достигает стадии EXE, вторая команда после ветви может быть выполнена правильно (может быть выбрана). Но это оставляет нам проблему, возможно, по-прежнему растрачивая 1-ю инструкцию вскоре после инструкции ветвления.Это правда, если мы всегда можем заполнить слот задержки, нет необходимости в предсказании ветвления?
Я также столкнулся с концепцией задержки задержки ветвления, что означает, что вы хотите заполнить 1-ю инструкцию вскоре после ветви с чем-то полезным, а также «безвредным», независимо от того, выполняется ли ветка или нет, инструкция выполняется по желанию и 1-я инструкция после ветвления не будет потрачена впустую.
Мой вопрос, прежде всего, это мое понимание правильное? Если это правильно, то проблема исходит из концепции предсказания ветвей, которая, кажется, пытается заполнить первую инструкцию инструкцией из предсказанного места, к которому идет программа. Но если мы всегда можем найти какую-то инструкцию для заполнения слота задержки ветвления, нам не нужна функция предсказания ветвления, правильно?