Gibt es einen Compiler-Hinweis für GCC, der die Verzweigungsvorhersage zwingt, immer einen bestimmten Weg einzuschlagen?
Gibt es für Intel-Architekturen eine Möglichkeit, den GCC-Compiler anzuweisen, Code zu generieren, der die Verzweigungsvorhersage immer auf eine bestimmte Weise in meinem Code erzwingt? Unterstützt die Intel-Hardware dies überhaupt? Was ist mit anderen Compilern oder Hardware?
Ich würde dies in C ++ - Code verwenden, wo ich den Fall kenne, dass ich schnell laufen möchte, und mich nicht um die Verlangsamung kümmere, wenn der andere Zweig genommen werden muss, selbst wenn er kürzlich diesen Zweig genommen hat.
for (;;) {
if (normal) { // How to tell compiler to always branch predict true value?
doSomethingNormal();
} else {
exceptionalCase();
}
}
Als Folgefrage für Evdzhan Mustafa, kann der Hinweis nur einen Hinweis angeben, wenn der Prozessor zum ersten Mal auf den Befehl stößt, alle nachfolgenden Verzweigungsvorhersagen funktionieren normal?