Control hazard
Wanneer de pipeline niet weet welke instructie hierna moet worden opgehaald, omdat de uitkomst van een sprong (branch) nog niet bekend is. De sprong kan wel of niet worden genomen, en zolang dat niet vaststaat, weet de cpu niet waar hij verder moet ophalen.
Probleem: een diepe pipeline haalt elke cyclus nieuwe instructies op, maar een voorwaardelijke sprong (een if, een lus) wordt pas enkele stadia later beslist. Wachten op het antwoord zou bij elke sprong een grote bubble veroorzaken, en code zit vol sprongen (elke 5e tot 10e instructie). Oplossing: branch prediction, de uitkomst raden en speculatief langs het geraden pad ophalen. Raadt de voorspeller goed (in moderne cpu's meer dan 95% van de tijd), dan stroomt de pipeline ononderbroken door; raadt hij fout, dan moeten alle speculatief opgehaalde instructies worden weggegooid (een "branch misprediction flush", doorgaans 15 tot 20 verspilde cycli). Daarom is branch prediction zo cruciaal voor de prestaties, en daarom zijn onvoorspelbare sprongen (datagevoelige if-statements) duur. Een van de drie soorten hazards. Gerelateerd aan pipeline stall en branch prediction.