Есть ли результаты теста производительности для использования вероятных / маловероятных подсказок? - PullRequest
8 голосов
/ 30 сентября 2011

gcc обладает вероятными / маловероятными подсказками , которые помогают компилятору генерировать машинный код с лучшим предсказанием переходов.

Есть ли данные о том, как правильное использование или неиспользование этих подсказок влияет на производительность реального кода в некоторых реальных системах?

Ответы [ 2 ]

4 голосов
/ 30 сентября 2011

Вопрос отличается, но ответ Питера Кордеса на этот вопрос дает четкий намек;). Современные процессоры игнорируют статические подсказки и используют динамическое предсказание ветвлений.

1 голос
/ 30 сентября 2011

Я не знаю какого-либо подробного анализа таких конкретных намеков.В любом случае, это будет очень специфично для процессора.В общем, если вы уверены в вероятности (например,> 90%), то, вероятно, стоит добавить такие аннотации, хотя улучшения будут сильно различаться в зависимости от конкретного случая использования.

Современные настольные ЦП имеют очень хороший прогноз ветвления.Если ваш код в любом случае находится на «горячем пути», динамический предсказатель ветвления быстро выяснит, что ветвь смещена сама по себе.Такие подсказки в основном полезны, чтобы помочь статическому предиктору, который срабатывает, если информация о динамическом ветвлении недоступна.

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

В PPC некоторые инструкции перехода имеют немного, чтобы предсказать их вероятность.Я не знаю, будет ли компилятор переставлять код тоже.

Я не знаю, как процессоры ARM предсказывают ветвления.Как устройство с низким энергопотреблением, оно может иметь менее сложное прогнозирование ветвлений, а статическое прогнозирование может оказать большее влияние.

...