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