Z. Hu, P. Juang, K. Skadron, D.W. Clark, and M. Martonosi.
Univ. of Virginia Dept. of Computer Science Technical Report CS-2001-24, Oct. 2001.
Abstract
This paper shows that substantial reductions in leakage energy can be obtained by deactivating
groups of branch-predictor entries if they lie idle for a sufficiently long time. Decay techniques, first
introduced by Kaxiras et al. for caches, work by tracking accesses to cache lines and turning off power to
those that lie idle for a sufficiently long period of time (the decay interval). Once deactivated, these lines
essentially draw no leakage current. The key trick is in identifying opportunities where an item can be turned
off without incurring significant performance or power cost.
Branch predictors are, like caches, large array structures with significant leakage; as such, it is natural to consider applying decay techniques to them as well. Applying decay techniques to branch predictors is, however, not straightforward. The overhead for applying decay to individual counters in the predictor is prohibitive, so decay must be applied to groups of predictor entries. The most natural grouping is a row in the square data array used to implement the branch predictor, but then decay will only be successful if entire rows lie idle for sufficiently long periods of time. This paper shows that branch predictors do exhibit sufficient spatial and temporal locality to make decay effective for bimodal, gshare, and hybrid predictors, as well as the branch target buffer. In particular, decay is quite effective when applied intelligently to hybrid predictors, which use two predictors in parallel and are among the most accurate predictor organizations. Hybrid predictors are also especially amenable to decay, because inactive entries in one component can be left inactive if the other component is able to provide a prediction. Overall, this paper demonstrates that decay techniques apply more broadly than just to caches, but that careful policy and implementation make the difference between success and failure in building decay-based branch predictors.