Branch Prediction ist eine Technik, die in der Computerarchitektur verwendet wird, um den Ablauf der Befehlsausführung zu verbessern, indem das Ergebnis eines Branchs (z. B. eine if-else-Entscheidung) erraten wird, bevor es sicher bekannt ist.

Arten der Branch Prediction

Es gibt verschiedene Methoden zur Zweigvorhersage, jede mit unterschiedlichen Ebenen der Komplexität und Genauigkeit, die häufigsten Arten sind statische Vorhersage und dynamische Vorhersage.

Statische vs. dynamische Vorhersage

Statische Vorhersage beruht auf festen Regeln, wie zum Beispiel immer Vorhersagen, dass ein Zweig genommen wird oder nicht genommen wird. Dynamische Vorhersage verwendet Hardware-Historie, um fundiertere Vermutungen basierend auf dem Verhalten von Zweigen in der Vergangenheit zu treffen.

Praktisches Beispiel für dynamische Vorhersage

Man denke an einen 2-Bit-Sättigungszähler, der für die dynamische Zweigvorhersage verwendet wird. Der Zähler kann vier Zustände haben: 00, 01, 10, 11. Die Zustände 00 und 01 sagen "nicht genommen" voraus, während 10 und 11 "genommen" vorhersagen. Der Zähler wird auf der Grundlage der tatsächlichen Zweigergebnisse aktualisiert.

Wenn der Zähler bei 10 steht und der Zweig genommen wird, geht er zu 11. Wenn der Zweig nicht genommen wird, bewegt er sich zu 01. Dieses System hilft, die Vorhersagegenauigkeit im Laufe der Zeit zu verbessern.

Berechnung der Vorhersagegenauigkeit

Die Genauigkeit der Vorhersage kann anhand des Prozentsatzes der korrekten Vermutungen über die Gesamtprognosen gemessen werden, beispielsweise wenn von 100 Zweigen 90 korrekt vorhergesagt werden, beträgt die Genauigkeit 90%.

  • Richtige Vorhersagen: 90
  • Vorhersagen insgesamt: 100
  • Genauigkeit = (richtig / insgesamt) × 100 = 90%