На MIPS R2000, классическом MIPS I, вокруг которого спроектирован ISA, 1 слот задержки ветвления достаточно , чтобы скрыть задержку ветвления, оценивая условие на этапе ID по этой причине. Как MIPS I пересылать из EX в ID для филиалов без остановки? . Способность проверять условия ветвления с низкой задержкой внутри стадии конвейера, которая сначала выполняет другие действия, объясняет, почему условные ветки MIPS ограничены eq
/ ne
и / или проверяют бит знака для x<0
, а не произвольно x<y
.
Вкл. Это правда, если мы всегда можем заполнить интервал задержки, нет необходимости предсказывать переходы? Пол Клейтон отвечает, что да, заполнение интервала задержки ветвления в asm делает переходПрогноз бесполезен на ранних MIPS. Так что это еще одно доказательство того, что настоящий коммерческий MIPS R2000 работал именно так. Прогнозирование ветвлений необходимо только в том случае, если вы удлиняете конвейер, как они это сделали для следующего поколения MIPS R4000. И тогда у вас есть прогноз ветвления, а не ожидание, что компиляторы будут статически заполнять задержку ветвления.
Но в любом случае, один слот задержки ветвления достаточно сложен для надежного заполнения компиляторами , ив ретроспективе это багаж для будущих реализаций, которые используют предсказание ветвления вместо зависимости от интервала задержки, чтобы скрыть задержку ветвления. Особенно суперскалярные реализации.
Создание этого архитектурного бремени обременяет все будущие процессоры с ним, если они хотят быть двоично-совместимыми. Таким образом, даже если ранние процессоры MIPS имели 2 цикла задержки ветвления, некоторые предвидения и соображения затрат / выгод вполне разумны для архитектурного представления только 1 цикла.