Files

27 lines
1.3 KiB
Markdown
Raw Normal View History

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