@PeterCordes TAGE использует (частичные) теги, а BTB часто (частично) помечают (для обеспечения ассоциативности). В случае пропуска BTB может возникнуть подозрение на то, что ответвление выполнено (статический прогноз может быть сделан в то же время, когда целевой адрес будет доступен). Кстати, теплые ветви могут быть достаточно частыми как класс и индивидуально достаточно статически смещенными, чтобы сделать статическое предсказание полезным. (Процессор SPEC известен своими небольшими размерами веток; даже в gcc может быть не так много активных веток, как в некотором общем коде. Тесты руководствуются продуктами.)

т Я знаю, что Intel внедрила несколько статических механизмов прогнозирования ветвлений в эти годы:80486 возраст: всегда не принимается

Pentium4 возраст: назад взяты / вперед не взяты

Новые процессоры, такие как Ivy Bridge, Haswell, становятся все более неосязаемыми.

Эксперимент Мэтта Джи здесьИ, похоже, Intel больше не хочет об этом говорить, потому что последний материал, который я нашел в Документе Intel, был написан около десяти лет назад..

Я знаю, что статическое предсказание ветвления (гораздо?) Менее важно, чем динамическое, но в довольно многих ситуациях ЦП будет полностью потерян, и программисты (с компилятором) обычно являются лучшим руководством. Конечно, эти ситуации обычно не являются узким местом производительности, потому что, как только ветвь часто выполняется, динамический предиктор ее фиксирует.

Поскольку в своем документе Intel больше не указывает четко механизм динамического прогнозирования, встроенный_expect () GCC не может сделать ничего, кроме как удалить маловероятную ветвь с горячего пути.

Я не знаком с дизайном ЦП и не знаю, какой именно механизм Intel использует в настоящее время для своего статического предиктора, но я все же чувствую, что лучшим механизмом для Intel должно быть четкое документирование его ЦП, куда я планирую перейти в случае сбоя динамического предиктора , вперед или назад », потому что обычно программист является лучшим гидом в то время.

Обновить:

Я обнаружил, что упомянутые вами темы постепенно выходят за рамки моих знаний. Здесь задействованы некоторые механизмы динамического прогнозирования и внутренние детали процессора, которые я не могу выучить в течение двух или трех дней. Поэтому позвольте мне временно прекратить ваше обсуждение и перезарядиться.
Любой ответ по-прежнему приветствуется, может быть, поможет больше людей
Основная причина, по которой статическое предсказание не одобряется в современных разработках (возможно, даже не присутствует), заключается в том, что статические предсказания

Ответы на вопрос(3)

Ваш ответ на вопрос