As a result of resource limitations, state in branch predictors is frequently shared between uncorrelated branches. This interference can significantly limit prediction accuracy. In current predictor designs, the branches sharing prediction information are determined by their branch addresses and thus branch groups are arbitrarily chosen during compilation.
This feasibility study explores a more analytic and systematic approach to classify branches into "clusters" with similar behavioral characteristics. We present several ways to incorporate this cluster information as an additional information source in branch predictors.
Our profile-based results demonstrate that cluster information is useful in various branch prediction schemes. When "clustered indexing" is applied, the same performance can be obtained with 2-8 times less hardware budget. For small predictor budgets, clustered indexing is very cost-effective, e.g. the misprediction rate in an 8 Kib gshare is reduced 12.3% on average for SPEC CPU2000 INT. For large budgets up to 4 Mib, clustered indexing reduces the number of mispredictions by 3-5%, or stated otherwise only half the hardware budget is required to obtain the same performance as the original gshare scheme.