LINUX.ORG.RU

Как помочь процессору предсказать переходы?


1

2

всем привет, как нужно правильно организовывать ветвления в своих программах, чтобы процессор лучше предсказывал переходы? Знаю что в некоторых случаях лучше использовать битовое И, ИЛИ, вместо логического, а где-то наоборот, так вот в каких случаях использовать битовое, а в каких не стоит?

★★★

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

ilammy ★★★
()

Если кратко - избегать лишних ветвлений и сложных циклов. И организовать программу так, чтобы переход либо стабильно брался, либо нет, всё остальное сделает автоматика

frame ★★★
()

Вот поэтому у x86 столько костылей. Сначала выпустят процессор. Потом программеры начнут оптимизировать переходы под кэш. Потом, в новом проце не могут сделать (из-за совместимости) лучшую оптимизацию и лепят поверх старой. И так уже, кажись, семь поколений.

Какую проблему решаешь? 99% всё можно решить алгоритмически.

ziemin ★★
()
Последнее исправление: ziemin (всего исправлений: 1)
Ответ на: комментарий от ilammy

интеловских процах были специальные приблуды

Они и сейчас там есть, только не все кодят с учётом их наличия.

drSchur ★★★
()
Ответ на: комментарий от PolarFox

Круто, я думал спекулятивное исполнение такое нивелирует, тем более на тривиальном примере. Правда, у меня разница в 3 раза.

true_admin ★★★★★
()
Ответ на: комментарий от mv

Вот как раз под какую-нибудь встройку типа vortex86 смысл в оптимизациях есть. Ибо там embedded и индастриал во все поля.

Dark_SavanT ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.