18 lines
1.9 KiB
Markdown
18 lines
1.9 KiB
Markdown
#### Структура ВТВ.
|
||
|
||
Эффективное предсказание переходов требует наличие цели перехода на ранней стадии конвейера, можно использовать доп. сумматоры на стадии ID, чтобы цель могла быть выбрана, но будет 1 такт простоя. Проблему решает буфер целей перехода (Branch Target Buffer - ВТВ).
|
||
|
||
**ВТВ** - аппаратный механизм, снижающий число тактов простоя при корректно предсказанном переходе до 0.
|
||
**ВТВ** - буфер целей перехода, доп. набор логики, который располагается на стадии IF и который помогает предсказывать переходы.
|
||
Цель: переходы без простоев.
|
||
Если мы угадали с помощью ВТВ, значит после выполнения IF мы знаем адрес следующей инструкции.
|
||
|
||
**Простейший вариант** - когда в ВТВ хранится целевой адрес. Вид ВТВ:
|
||
|
||
| Адрес перехода | Цель перехода, если он предсказан выполняющимся. | Бит валидности |
|
||
| :-- | :-- | :-- |
|
||
| ... | ... | ... |
|
||
|
||
Бит валидности - признак актуальности строки.
|
||
Кэш полностью ассоциативный. Адрес текущей инструкции ищется в первом столбце. Если он там есть, тогда текущая инструкция - условный переход, причем выполняющийся. Тогда считываем адрес из второго столбца.
|