Очередь команд Intel CPU обеспечивает статическое предсказание ветвления?

В томе 3 руководств Intel в нем содержится описание счетчика аппаратных событий:

BACLEAR_FORCE_IQ

Подсчитывает количество раз, когда BACLEAR был принудительно введен в очередь команд. IQ также отвечает за предоставление прогноза условной ветки направление на основе статической схемы и динамических данных, предоставляемых L2 Филиал. Если цель условной ветки не найдена в целевом массиве , а IQ предсказывает, что ветвь берется, тогда IQ заставит калькулятор адресов веток выпускать BACLEAR. Каждый BACLEAR, утверждаемый BAC, генерирует приблизительно 8 циклов пузырь в конвейере выборки команд.

Я всегда считал, что калькулятор адресов ветки выполняет алгоритм статического предсказания (когда буфер целевого буфера не содержит записи ветвления)?

Может ли кто-нибудь подтвердить, какие из этих двух верных? Я ничего не могу найти.

Ответ 1

Если целевая ветвь условной ветки не найдена в целевом массиве

Как его не найти? вы маскируете его с помощью битовой маски, чтобы найти индекс в таблице и получить следующую цель ветвления.

Хорошо, если после того, как вы прочитаете результат, проверьте, что адрес вызова не совпадает с тегом результата, результат "не получен".

В этот момент мы переходим ко второй части инструкции.

и IQ предсказывает, что ветвь взята

Таким образом, цель ветвления говорит "не принято", и IQ предсказывает, что это будет сделано, мы имеем противоречие.

Чтобы решить противоречие, IQ выигрывает, поскольку цель ветки просто "если мы прыгаем, мы прыгаем сюда", но IQ предсказывает, если мы прыгаем или не основываемся на гораздо большей логике.

Следовательно,

тогда IQ заставит Калькулятор адресов ветки выдавать BACLEAR. Каждый BACLEAR, утверждаемый BAC, генерирует приблизительно 8 циклический пузырь в конвейере выборки команд.

Что хорошо в трубопроводе на стадии 14-19. 8 циклов, если IQ может прочитать фактический адрес цели из инструкции (в сочетании с ПК), если значение нужно прочитать в регистре (возможно, еще не удалено), это может занять немного больше времени.