Zurück zur Übersicht

Begriff

Branch Prediction

Hardware CPU Architecture S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Eine CPU ist wie ein Fließband (Pipeline). Sie arbeitet an 20 Befehlen gleichzeitig. Problem: Eine Kreuzung ("IF x > 0 THEN"). Die CPU weiß noch nicht, ob x > 0 ist (das wird noch berechnet). Soll sie warten? Nein, das würde das Fließband stoppen (Stall). Stattdessen rät sie: "Ich glaube, es geht links lang." Sie arbeitet auf Verdacht weiter (Speculative Execution). Wenn sie richtig lag: Super, keine Zeit verloren! Wenn sie falsch lag: Alles wegwerfen und den anderen Weg nehmen (Flush). Moderne CPUs raten mit >95% Genauigkeit richtig (dank KI-ähnlichen Perceptrons im Chip).

Merksatz: Ein Mechanismus in modernen Prozessoren, der versucht, das Ergebnis von bedingten Sprüngen (Branches) vorherzusagen, um die Befehlspipeline effizient gefüllt zu halten und Leerlaufzeiten zu vermeiden.


Quick-Check

  1. Likely/Unlikely?
    In C++ als Attribut likely/unlikely oder im Kernel-Code als likely(). Das sagt dem Compiler: "Optimiere den Code so, dass der erwartete Pfad geradeaus läuft." Das hilft dem Instruction Cache, nicht zwingend dem Branch Predictor, der zur Laufzeit lernt.
  2. Spectre?
    Spectre nutzt Branch Prediction aus, um die CPU dazu zu bringen, spekulativ auf geheimen Speicher zuzugreifen. Man misst dann die Zeit (Cache Side Channel) und errät das Geheimnis.
  3. Static Prediction?
    Wenn die CPU keine Historie hat (erster Besuch): "Rückwärtssprünge (Loops) werden meist genommen. Vorwärtssprünge (Ifs) eher nicht."