Алгоритм предсказания переходов при предвыборке кода работает следующим образом: en.wikipedia.org ru.wikipedia.org
- Предсказатель ветвления пытается угадать, будет ли с наибольшей вероятностью выполнен условный переход или нет. en.wikipedia.org Затем извлекается ветвь, которая считается наиболее вероятной, и выполняется умозрительно. en.wikipedia.org
- Если позже обнаруживается, что предположение было неверным, то умозрительно выполненные или частично выполненные инструкции отбрасываются, и конвейер запускается заново с правильной ветвью, что приводит к задержке. en.wikipedia.org
Существует два основных метода предсказания переходов: ru.wikipedia.org
- Статическое предсказание. ru.wikipedia.org Это самый простой метод, он не полагается на информацию о динамической истории выполнения кода. en.wikipedia.org Вместо этого он предсказывает результат перехода, основываясь исключительно на инструкции перехода. en.wikipedia.org
- Динамическое предсказание. ru.wikipedia.org Динамические методы, широко используемые в современных процессорах, подразумевают анализ истории ветвлений. ru.wikipedia.org
Например, при динамическом предсказании анализируется таблица истории переходов, которая содержит младшие значимые биты адреса инструкции и соответствующую им вероятность условного перехода. ru.wikipedia.org Таблица обновляется после каждого перехода. ru.wikipedia.org Алгоритм изменяет выбор ветвления, если результат условия отклонился два раза от предыдущих результатов. ru.wikipedia.org