13.10.2014 Views

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

130<br />

performance is not immediately obvious. One possibility would be the introduction of<br />

a new specialized bytecode to handle reads of integer instance fields. Such a bytecode<br />

would improve the performance of simple Java Virtual Machine’s such as Kaffe by<br />

reducing the number of checks that must be performed during a field access. However,<br />

it is unclear whether the introduction of such a bytecode would have any value in other<br />

virtual machines that perform more aggressive optimizations. The profile distribution<br />

may also be useful because it has identified those types that are encountered with<br />

greatest frequency, and as a result, warrant the greatest amount of attention during<br />

optimization.<br />

6.3 Conclusion<br />

This chapter described some results generated by profiling and analyzing 23 benchmarks.<br />

The information gathered during profiling included both the opcode executed<br />

and its operands. Additional information was also collected for some bytecodes.<br />

Evaluating the profile data revealed many interesting patterns related to the selection<br />

of current specialized bytecode. For example, it was observed that there are many<br />

general purpose load bytecodes executed with greater frequency than the specialized<br />

load bytecodes defined by the Java Virtual Machine Specification. This pattern was<br />

also observed for store bytecodes and constant loading bytecodes. Of these three categories,<br />

the specialized constant loading bytecodes were used with greatest frequency<br />

compared to the general purpose bytecodes in this category. Specialized bytecodes<br />

accounted for half of the 20 most executed bytecodes constant loading bytecodes<br />

compared to only one quarter of the 20 most executed store bytecodes. The analysis<br />

performed revealed that specialized constant loading bytecodes showed the greatest<br />

utility because of design choices made for the Java Virtual Machine that limit the<br />

utility of some specialized load and store bytecodes and the fact that there is asymmetry<br />

in the selection of specialized constant loading bytecodes, allowing them to<br />

more accurately reflect the behaviour of the applications executed.<br />

Based on these results, it is recommended that changes be made to the Java Virtual<br />

Machine Specification in order to improve the utility of specialized bytecodes.<br />

While the work presented in previous chapters showed that specialized bytecodes<br />

appear to have little utility, this is at least in part due to the fact that the values<br />

selected for specialization during the design process are not the values executed with<br />

greatest frequency. Selecting new specialized bytecodes that reflect the behaviour of<br />

the applications being executed could improve their utility considerably. In particu-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!