@gron

Optimizing Indirect Branch Prediction Accuracy in Virtual Machine Interpreters

, , and . ACM Trans. Program. Lang. Syst., 29 (6): 37 (2007)
DOI: 10.1145/1286821.1286828

Abstract

Interpreters designed for efficiency execute a huge number of indirect branches and can spend more than half of the execution time in indirect branch mispredictions. Branch target buffers (BTBs) are the most widely available form of indirect branch prediction; however, their prediction accuracy for existing interpreters is only 2%--50%. In this article we investigate two methods for improving the prediction accuracy of BTBs for interpreters: replicating virtual machine (VM) instructions and combining sequences of VM instructions into superinstructions. We investigate static (interpreter build-time) and dynamic (interpreter runtime) variants of these techniques and compare them and several combinations of these techniques. To show their generality, we have implemented these optimizations in VMs for both Java and Forth. These techniques can eliminate nearly all of the dispatch branch mispredictions, and have other benefits, resulting in speedups by a factor of up to 4.55 over efficient threaded-code interpreters, and speedups by a factor of up to 1.34 over techniques relying on dynamic superinstructions alone.

Description

Optimizing indirect branch prediction accuracy in virtual machine interpreters

Links and resources

Tags

community

  • @gron
  • @dblp
@gron's tags highlighted