On a typical x86 processor, instruction execution is divided into several stages. Different hardware components handle different stages, allowing multiple instructions to be processed simultaneously. This technique is called pipelining.

 However, when a branch occurs, the next instruction depends on the result of the previous one, preventing efficient pipelining. The processor either waits or predicts the outcome, potentially mispredicting and stalling the pipeline.