Table 4.7 Branch management techniques. |
|
Approach | What It Does | Cost | Effect on Branch Delay (Taken Branch) | Effect on Branch Prediction |
Speedup | | | | |
Early CC set | Determine outcome of tested condition early | Nil | Can save up to a cycle | None |
Delayed branch | " | Small | " | None |
Branch adder | Determine target address early | Small | Generally saves a cycle | None |
Prediction | | | | |
Static: | Use branch opcode or test to predict outcome | Small | None | 6070% accurate |
Dynamic: | | | | |
History | Records outcome of each branch | Some increase in I-cache size | None | 7090+% accurate |
Branch table buffer | Stores last target inst for each branch in a special associative table | Can be significant for large tables | Can reduce to zero | 7090+% accuracy; depends on size and application |