Various techniques can be used to predict whether a branch will be taken or not. The most common techniques are:
- Predict never taken
- Predict always taken
- Predict by opcode
- Taken/not taken switch
- Branch history table.
The first three approaches are static; they do not depend on the execution history upto the time of the contitional branch instructions.
The later two approaches are dynamic- they depend on the execution history.