Files

35 lines
2.4 KiB
Markdown
Raw Normal View History

#### Статические методы обработки условных переходов.
**Задержанный/отложенный переход** - инструкция, след. после перехода (из слота задержки перехода) исполняется независимо от того, произошел переход или нет (введена частью ISA).
2025-01-15 15:19:34 +03:00
##### Предположение, что переход никогда не происходит.
Продолжается выполнение инструкций, начиная с инструкции, след. за инструкцией перехода, но состояние машины не меняется до тех пор, пока рез-тат перехода точно не определен. Если переход не произошел - состояние сохраняется, если произошел - рез-таты отбрасываются, фактически произошел простой.
2025-01-15 15:19:34 +03:00
###### Пример
Переход не произошел, нет простоя:
2025-01-15 15:19:34 +03:00
| Program | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| :-- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| I (untaken branch instruction) | 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 |
2025-01-15 15:19:34 +03:00
Переход произошел, простой:
| Program | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| :--------------------------- | :-: | :-: | :--: | :--: | :--: | :--: | :-: | :-: | :-: |
| I (taken branch instruction) | IF | ID | EX | MEM | WB | | | | |
| I+1 | | IF | - | - | - | - | | | |
| Branch target | | | IF | ID | EX | MEM | WB | | |
| Branch target +1 | | | | IF | ID | EX | MEM | WB | |
| Branch target +2 | | | | | IF | ID | EX | MEM | WB |
##### Предположение, что переход всегда происходит.
Продолжается выполнение инструкций, начиная с места перехода, ...
Труднее реализовать, чем предыдущий вариант.