Существуют два основных метода предсказания переходов в конвейере: статический и динамический. ru.ruwiki.ru bigor.bmstu.ru
Статический метод работает по схеме, заложенной в процессор. bigor.bmstu.ru Считается, что переходы по одним условиям вероятнее всего произойдут, а по другим — нет. bigor.bmstu.ru Некоторые примеры статического предсказания:
- Тривиальное статическое предсказание. ru.ruwiki.ru В конвейер всегда загружаются инструкции, расположенные после инструкции условного перехода. ru.ruwiki.ru Принимается предположение о том, что условный переход никогда не выполнится. ru.ruwiki.ru
- Статическое предсказание, реализованное в современных процессорах. ru.ruwiki.ru Если инструкция перехода выполняет переход назад (на младшие адреса), в конвейер загружаются инструкции, расположенные по адресу перехода. ru.ruwiki.ru Если инструкция перехода выполняет переход вперёд (на старшие адреса), в конвейер загружаются инструкции, расположенные после инструкции перехода. ru.ruwiki.ru
Динамический метод опирается на предысторию вычислительного процесса. bigor.bmstu.ru Для каждого конкретного случая перехода накапливается статистика поведения, и переход предсказывается, основываясь именно на ней. bigor.bmstu.ru Некоторые примеры динамического предсказания:
- Счётчик с насыщением или бимодальный счётчик. ru.ruwiki.ru ru.wikipedia.org Анализируется таблица истории переходов. ru.ruwiki.ru Таблица содержит младшие значимые биты адреса инструкции и соответствующую им вероятность условного перехода. ru.ruwiki.ru Таблица обновляется после каждого перехода. ru.ruwiki.ru
- Адаптивный двухуровневый предсказатель. ru.ruwiki.ru Для первого уровня выполняется история последних k ветвлений, второго уровня k указывает на таблицу шаблонов. ru.ruwiki.ru
- Локальное предсказание перехода. ru.ruwiki.ru Каждый условный переход в области имеет собственную историю переходов. ru.ruwiki.ru Шаблоны переходов могут быть общими или отдельными. ru.ruwiki.ru
- Глобальное предсказание перехода. ru.ruwiki.ru Глобальное предсказание переходов не хранит истории отдельно для каждого перехода, а использует общую историю. ru.ruwiki.ru Любые закономерности в переходах сказываются на этой истории, но историю могут загрязнять нерелевантные записи. ru.ruwiki.ru
- Гибридный предсказатель. ru.ruwiki.ru Может выбирать результаты наиболее успешных предсказателей на основе истории либо использовать мажоритарную функцию нечётного количества предсказателей. ru.ruwiki.ru
- Предсказатель для цикла. ru.ruwiki.ru Может использовать счётчик цикла для отсчёта количества переходов в начало цикла. ru.ruwiki.ru
- Предсказание косвенных переходов. ru.ruwiki.ru Косвенный переход может иметь больше двух ветвлений. ru.ruwiki.ru Новейшие процессоры имеют возможность выбора более двух условий, используя двухуровневый адаптивный предсказатель. ru.ruwiki.ru