Branchvoorspelling is een techniek die wordt gebruikt in computerarchitectuur om de stroom van instructieuitvoering te verbeteren door het resultaat van een tak (zoals een if-else beslissing) te raden voordat het zeker bekend is. Dit helpt bij het verminderen van vertragingen veroorzaakt door het wachten op de werkelijke branch beslissing, waardoor de efficiëntie van de processor wordt verhoogd.

Soorten branchevoorspelling

Er zijn verschillende methoden van branchvoorspelling, elk met verschillende niveaus van complexiteit en nauwkeurigheid. De meest voorkomende types zijn statische voorspelling en dynamische voorspelling.

Statische vs. dynamische voorspelling

Statische voorspelling is gebaseerd op vaste regels, zoals altijd voorspellen dat een branch zal worden genomen of niet genomen. Dynamische voorspelling gebruikt hardware geschiedenis om meer geïnformeerde gissingen te maken op basis van verleden gedrag van branches.

Praktisch voorbeeld van dynamische voorspelling

De teller kan vier standen hebben: 00, 01, 10, 11. States 00 en 01 voorspellen 'niet genomen', terwijl 10 en 11 'genomen' voorspellen. De tellerupdates gebaseerd op de werkelijke resultaten van de branche.

Als de teller op 10 staat en de tak wordt genomen, dan verschuift hij naar 11. Als de tak niet wordt genomen, verschuift hij naar 01. Dit systeem helpt de nauwkeurigheid van de voorspellingen te verbeteren.

Berekening van nauwkeurigheid van de predictie

De nauwkeurigheid van de voorspelling kan worden gemeten aan de hand van het percentage correcte gissingen ten opzichte van de totale voorspellingen. Bijvoorbeeld, als van de 100 takken, 90 correct worden voorspeld, is de nauwkeurigheid 90%.

  • Correcte voorspellingen: 90
  • Totaal voorspellingen: 100
  • Nauwkeurigheid = (Correct/Totaal) × 100 = 90%