Improving Indirect Branch Prediction With Source- and Arity-based Classification and Cascaded Prediction
Karel Driesen, Urs Hölzle
Abstract:
Indirect branch prediction is likely to become more critical to program performance
because indirect branches occur more frequently in object-oriented programs. We study indirect
branch behavior in both procedural and object-oriented programs in order to build more accurate
predictor architectures. First we use a statically classifying hybrid predictor with a shared history
table and separate history buffers tuned for different branch classes. Opcode-based classification,
which classifies branches according to their source code origin, leads to only minor improvements
in prediction performance. Arity-based classification, which classifies branches according to the
number of different targets, obtains better performance, competitive with recently proposed dual-
path length hybrid predictors. Finally, we present cascaded branch predictors, which dynamically
classifies easily predicted branches using an inexpensive predictor. By preventing insertion of
these branches into a more powerful second stage predictor, cascaded prediction obtains prediction
rates equivalent to that of the previously best known indirect branch predictors, but at roughly half
the cost. Specifically, a cascaded predictor with a total of 288 history table entries achieves 89.3%
prediction accuracy.
Technical Report TRCS98-07, Computer Science Department, University of California, Santa Barbara, 15 March 1998
To get the PostScript file, click
here
(PDF is here).