EMZETT.
Login

Sprungvorhersage (Branch Prediction)

Kurz: Die Sprungvorhersage rät, welchen Weg ein Programm an einer Verzweigung nimmt, damit die CPU-Pipeline nicht auf das Ergebnis warten muss.

Genauer: Moderne CPUs holen und starten Befehle lange vor dem Ergebnis der Bedingung. Rät die Vorhersage richtig, geht es ohne Pause weiter. Rät sie falsch, wird die Arbeit verworfen, und das kostet etwa 10 bis 20 Takte.

Im Detail

  • Einfachste Form: Ein Zähler pro Sprung merkt sich, ob er zuletzt genommen wurde.
  • Besser: Verlaufsbasierte Vorhersager nutzen die letzten Sprungergebnisse als Muster. Moderne CPUs treffen über 95 % der Sprünge.
  • Sichtbarer Effekt: Das Summieren der Werte über 128 in einem Feld ist schneller, wenn das Feld sortiert ist, weil das Sprungmuster dann vorhersehbar ist.
  • Gegenmittel im Code: Verzweigungsfreie Formulierungen (bedingte Zuweisungen), sortierte Daten, seltene Fälle aus der heißen Schleife nehmen.
  • Sicherheit: Spekulative Ausführung führte zu Lücken wie Spectre, die Software- und Mikrocode-Gegenmaßnahmen nötig machten.
  • Zusammenhang: Teil der Spekulation neben Out-of-Order-Ausführung.

Siehe auch: CPU-Aufbau