27 lines
1.3 KiB
Markdown
27 lines
1.3 KiB
Markdown
![]() |
#### Алгоритм заполнения и использования ВТВ.
|
|||
|
|
|||
|
- **Адрес есть в ВТВ.**
|
|||
|
|
|||
|
Берем адрес перехода из буфера. На следующем такте проверяем, выполнился ли переход.
|
|||
|
|
|||
|
- **Угадали.**
|
|||
|
|
|||
|
Продолжаем выполнение, убираем запись из буфера.
|
|||
|
|
|||
|
- **Не угадали.**
|
|||
|
|
|||
|
Очищаем эту запись в ВТВ и отбрасываем результаты выполнения.
|
|||
|
|
|||
|
- **В таблице ВТВ не нашли наш адрес.**
|
|||
|
|
|||
|
Пытаемся спекулятивно выполнить со следующего адреса.
|
|||
|
|
|||
|
- **Перехода нет**
|
|||
|
|
|||
|
Продолжаем выполнение и результат сохраняется, запись из буфера убирается.
|
|||
|
|
|||
|
- **Переход есть.**
|
|||
|
|
|||
|
Результат отбрасывается, вычисляем новый адрес и на новом такте считываем новый адрес. Информацию о том, что переход состоялся записываем в ВТВ.
|
|||
|
Получается конструкция с запоминанием последнего результата выполнения перехода. Штраф ветвления - 2 такта.
|