The effectiveness of using path history to predict the target addresses of indirect branches due
to virtual method invocations used in Java applications was investigated.
The influence of the various parameters such as number of history buffers, path length, hashing function
and the structure of the target buffers on the misprediction rates
was investigated. The XOR hashing scheme with a global path history and a 2-bit update policy
performed the best for almost all configurations. Also, it was found that the tagless target buffers
achieve a prediction rate as good as the tagged buffers without suffering from the area overhead for
tags and the increased access times associated with the associative buffers.
Using the branch target buffer based predictor
with an 8K buffer, misprediction rates of 4.9% and 23.4% were obtained for the
javac and richards benchmarks respectively. The misprediction rates reduce to 3.6% and
2.4% for the two benchmarks using the proposed path history based predictor.
The results show that the design of micro-architectural features such as the
branch predictor will influence the execution speed of Java code.