50.9.1. ОТЛОЖЕННЫЕ ПЕРЕХОДЫ
(X - инструкция перехода)
(A,B - инструкции плсде перехода когда он выполнен).
Условный переход сбрасывает конвеер при своем выполнении.
Можно ли как-нибудь минимизировать это влияние?
Да, для этого служат отложенные переходы (Delayed branches).
Они используются на RISC процессорах (например HP-PA).
Идея:
Выполняется переход (но не происходит сброса конвеера,
а начинается предвыборка с уже нового адресса, а команды
которые сидят в конвеере выполняются независимо от того
будет переход или нет:
(Если нам нечего поставить то можем окно отложенного
перехода заполнить командами NOP (No Operation))
Пример HP-PA
LDW 0x20(r30), r2
COMI B, >10,r2,main+80
LDW 0x24(r30), r3 // выполняестся в оюбом случае
// был выполнен переход или нет
+----------+
| ... |
+----------+
| условный |
| переход |
+----------+ ---+
| команды | | окно отложенного перехода
| | | (эти команды выполнятся по любому)
+----------+ ---+
| ... |
+----------+
Переход не выполнен:
Переход выполнен:
Как мы видем конвеер не стоит.
Index Prev Next