Branch prediction foretells the outcome of conditional branch instructions.
Excellent branch handling techniques are essential for today's and for future microprocessors.
The task of high performance branch handling consists of the following requirements:
- an early determination of the branch outcome (the so-called branch resolution),
- buffering of the branch target address in a BTAC after its first calculation and an immediate reload of the PC after a BTAC match,
- an excellent branch predictor (i.e. branch prediction technique) and speculative execution mechanism,
- often another branch is predicted while a previous branch is still unresolved, so the processor must be able to pursue two or more speculation levels,
- and an efficient rerolling mechanism when a branch is mispredicted (minimizing the branch misprediction penalty).