Arch: chore
This commit is contained in:
@ -1,26 +1,16 @@
|
||||
#### Алгоритм заполнения и использования ВТВ.
|
||||
|
||||
- **Адрес есть в ВТВ.**
|
||||
|
||||
Берем адрес перехода из буфера. На следующем такте проверяем, выполнился ли переход.
|
||||
|
||||
- **Угадали.**
|
||||
|
||||
Продолжаем выполнение, убираем запись из буфера.
|
||||
|
||||
- **Не угадали.**
|
||||
|
||||
Очищаем эту запись в ВТВ и отбрасываем результаты выполнения.
|
||||
|
||||
Берем адрес перехода из буфера. На следующем такте проверяем, выполнился ли переход.
|
||||
- **Угадали.**
|
||||
Продолжаем выполнение, убираем запись из буфера.
|
||||
- **Не угадали.**
|
||||
Очищаем эту запись в ВТВ и отбрасываем результаты выполнения.
|
||||
- **В таблице ВТВ не нашли наш адрес.**
|
||||
Пытаемся спекулятивно выполнить со следующего адреса.
|
||||
- **Перехода нет**
|
||||
Продолжаем выполнение и результат сохраняется, запись из буфера убирается.
|
||||
- **Переход есть.**
|
||||
Результат отбрасывается, вычисляем новый адрес и на новом такте считываем новый адрес. Информацию о том, что переход состоялся записываем в ВТВ.
|
||||
|
||||
Пытаемся спекулятивно выполнить со следующего адреса.
|
||||
|
||||
- **Перехода нет**
|
||||
|
||||
Продолжаем выполнение и результат сохраняется, запись из буфера убирается.
|
||||
|
||||
- **Переход есть.**
|
||||
|
||||
Результат отбрасывается, вычисляем новый адрес и на новом такте считываем новый адрес. Информацию о том, что переход состоялся записываем в ВТВ.
|
||||
Получается конструкция с запоминанием последнего результата выполнения перехода. Штраф ветвления - 2 такта.
|
||||
|
Reference in New Issue
Block a user