Самый распространённый способ, которым разработчики случайно убивают пропускную способность, — попытка слишком хитро использовать безветвленное программирование.
Если ветвление предсказывается правильно в 99% случаев, процессор выполняет его практически бесплатно.
А когда вы принудительно заменяете ветвление на cmov, чтобы его избежать, исполнительным блокам приходится вычислять обе стороны и ждать разрешения зависимостей по данным.
Вы ничего не оптимизировали. Вы просто вручную добавили аппаратную задержку.
👉 @Cpportal
Если ветвление предсказывается правильно в 99% случаев, процессор выполняет его практически бесплатно.
А когда вы принудительно заменяете ветвление на cmov, чтобы его избежать, исполнительным блокам приходится вычислять обе стороны и ждать разрешения зависимостей по данным.
Вы ничего не оптимизировали. Вы просто вручную добавили аппаратную задержку.
👉 @Cpportal