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.

222<br />

amount of time that must be spent matching bytecode sequences against the code<br />

stream within the class file at runtime.<br />

10.2.7 Testing Additional Computational Environments<br />

The multicode work presented in this thesis considered only one virtual machine<br />

executing on one computing platform. This test environment must be expanded<br />

in order to determine how wide ranging the benefits of multicodes are. Additional<br />

platforms that should be tested include desktop and server platforms with virtual<br />

machines that make use of a JIT compiler, possibly in conjunction with an interpreter.<br />

Examining smaller computing environments will also be interesting. While multicodes<br />

shrink code size by reducing the number of opcodes present in the code stream,<br />

the number of distinct opcodes increases, requiring a larger virtual machine. Conducting<br />

a study to determine where the balance between these competing factors lies<br />

will have interesting results with respect to the Java instruction set and the design of<br />

future instruction sets for resource constrained environments.<br />

Finally, it would be interesting to consider a hardware implementation of multicodes.<br />

Trade-offs that would need to be considered include the performance of the<br />

chip compared to the complexity of its implementation, its size and the amount of<br />

power it consumes. Future work in this area could also examine the idea of using field<br />

programmable devices that dynamically modify themselves to support the instruction<br />

set in use by the application currently being executed.<br />

10.2.8 Handling Parallelism<br />

The profiling framework implemented as part of both the despecialization and multicode<br />

work is not currently thread-safe. Consequently, multi-threaded applications<br />

cannot be profiled. This limitation prevented 227 mtrt from being considered from<br />

the SPEC JVM98 Benchmark Suite and made it impossible to consider the benchmarks<br />

in the newer Java Grande Parallel Benchmark Suite [99, 100]. This limitation<br />

does not just impact the ability of multicodes to be applied to a select set of benchmarks.<br />

It must be overcome in order to profile many of the real world applications<br />

that are executed by “typical” users.

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

Saved successfully!

Ooh no, something went wrong!