Control hazard
När pipelinen inte vet vilken instruktion som ska hämtas härnäst eftersom utfallet av ett hopp (en gren) ännu inte är klart. Hoppet kan tas eller inte — och tills det avgjorts vet CPU:n inte var den ska fortsätta hämta.
Problem: en djup pipeline hämtar nya instruktioner varje cykel, men ett villkorat hopp (if, loop) avgörs först flera steg senare. Att vänta på svaret skulle skapa en stor bubbla vid varje gren — och kod är full av grenar (var 5:e-10:e instruktion). Lösning: grenprediktion — gissa utfallet och hämta spekulativt längs den gissade vägen. Gissar prediktorn rätt (vilket den gör >95% av tiden i moderna CPU:er) flyter pipelinen utan avbrott; gissar den fel måste alla spekulativt hämtade instruktioner kastas (en "branch misprediction flush" — typiskt 15-20 bortslösade cykler). Det är därför grenprediktion är så avgörande för prestanda, och varför oförutsägbara grenar (datakänsliga if-satser) kostar. En av de tre hazard-typerna. Hör ihop med pipeline-stall och spekulativ exekvering.