Как вызвать провал конвейера?

Как вызывать провал конвейера на современном процессоре?
Было несколько идей, но я не уверен в них:
1. В условный оператор if запихать кучу условий (например, if(A&0&B&C.....), где A,B,C - какие-то операции). Предполагал, что в процессор произойдет загрузка всех операций, но после второй будет произведен сброс конвейера. Тем самым будет простой размером примерно с количество ступеней конвейера.
2. С помощью расширения GCC __builtin_expect направить процессор на ложную ветку if-else. Предполагал, что в процессор будет произведена загрузка операций, которые не будут выполнены. Конвейер будет сброшен.

Собственно, сабж.
  • Вопрос задан
  • 848 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы