ISSN 1000-1239 CN 11-1777/TP

Journal of Computer Research and Development ›› 2015, Vol. 52 ›› Issue (1): 66-82.doi: 10.7544/issn1000-1239.2015.20130970

Previous Articles     Next Articles

An Indirect Branch Prediction for Interpreters

Huang Mingkai, Liu Xianhua, Tan Mingxing, Xie Zichao,Cheng Xu   

  1. (Microprocessor Research & Development Center, Peking University, Beijing 100871) (Engineering Research Center of Microprocessor & System (Peking University), Ministry of Education, Beijing 100871)
  • Online:2015-01-01

Abstract: Interpreters are widely used in Java virtual machines, JavaScript execution engines and other managed runtime environments. Interpreters usually use indirect branches to dispatch bytecodes. Indirect branch mispredictions are becoming a critical limit of interpreters’ performance in modern multi-issue multi-stage pipeline microprocessors. This paper proposes a bytecode pointer guided indirect (BGI) branch prediction for interpreters. The key idea is to use interpreter-specific bytecode pointer value to distinguish different indirect branch occurrences. It can improve the prediction accuracy of indirect branches in interpreters, so as to improve the performance of interpreters. Microprocessors usually use BTB to predict branch target addresses. BTB can’t accurately predict the rapidly changing branch target addresses of indirect branches in interpreters because it stores only one target address for one indirect branch. Our technique requires software-hardware cooperation, where interpreter software is augmented with specialized hint instructions to indicate bytecode pointers, and then the branch predictor makes use of the bytecode pointer value to store different target addresses of one indirect branch in different entries of BTB at runtime, so as to improve the prediction accuracy. Experimental results show that it improves the performance by 347% for Java interpreter and by 8.3% for JavaScript interpreter over the most commonly used BTB prediction, and it improves the performance by 21.9% for Java interpreter over the specialized indirect branch predictor TTC.

Key words: interpreter, indirect branch prediction, software-hardware cooperation, hint instruction, bytecode pointer

CLC Number: