Using decision trees to improve program-based and profile-based static branch prediction

  • Authors:
  • Veerle Desmet;Lieven Eeckhout;Koen De Bosschere

  • Affiliations:
  • Department of Electronics and Information Systems, member HiPEAC, Ghent University, UGent, Belgium;Department of Electronics and Information Systems, member HiPEAC, Ghent University, UGent, Belgium;Department of Electronics and Information Systems, member HiPEAC, Ghent University, UGent, Belgium

  • Venue:
  • ACSAC'05 Proceedings of the 10th Asia-Pacific conference on Advances in Computer Systems Architecture
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Improving static branch prediction accuracy is an important problem with various interesting applications. First, several compiler optimizations such as code layout, scheduling, predication, etc. rely on accurate static branch prediction. Second, branches that are statically accurately predictable can be removed from the dynamic branch predictor thereby reducing aliasing. Third, for embedded microprocessors which lack dynamic branch prediction, static branch prediction is the only alternative. This paper builds on previous work done on evidence-based static branch prediction which uses decision trees to classify branches. We demonstrate how decision trees can be used to improve the Ball and Larus heuristics by optimizing the sequence of applying the heuristics and by discovering two new heuristics, namely one based on the postdomination relationship between the current basic block and its successor and one based on the dependency distance between the branch and its operand defining instruction. Experimental results indicate an increase in the number of instructions per mispredicted branch by 18.5% on average for SPECint95 and SPECint2000. In addition, we show that decision trees can improve profile-based static branch prediction by up to 11.7% by predicting branches that are unseen in the profile runs.