Метод возврата
Метод возврата
Более хорошая и не на много более сложная схема состоит в том, чтобы прогнозировать условный переход как невыполняемый. При этом аппаратура должна просто продолжать выполнение программы, как если бы условный переход вовсе не выполнялся. В этом случае необходимо позаботиться о том, чтобы не изменить состояние машины до тех пор, пока направление перехода не станет окончательно известным. В некоторых машинах эта схема с невыполняемыми по прогнозу условными переходами реализована путем продолжения выборки команд, как если бы условный переход был обычной командой. Поведение конвейера выглядит так, как будто ничего необычного не происходит. Однако, если условный переход на самом деле выполняется, то необходимо просто очистить конвейер от команд, выбранных вслед за командой условного перехода и заново повторить выборку команд (Рисунок 5.14).
Невыполняемый условный переход | IF | ID | EX | MEM | WB | ||||
Команда i+1 | IF | ID | EX | MEM | WB | ||||
Команда i+2 | IF | ID | EX | MEM | WB | ||||
Команда i+3 | IF | ID | EX | MEM | WB | ||||
Команда i+4 | IF | ID | EX | MEM | WB | ||||
Выполняемый условный переход |
IF | ID | EX | MEM | WB | ||||
Команда i+1 | IF | ID | EX | MEM | WB | ||||
Команда i+2 | stall | IF | ID | EX | MEM | WB | |||
Команда i+3 | stall | IF | ID | EX | MEM | WB | |||
Команда i+4 | stall | IF | ID | EX | MEM |