Heap Access Optimizations for a Hardware-Accelerated Java Virtual Machine

Joonas Tyystjärvi1,  Tero Säntti2,  Juha Plosila3

1Turku Centre for Computer Science, 2Department of Information Technology, University of Turku, 3Academy of Finland, Research Council for Natural Sciences and Engineering

Abstract

The REALJava virtual machine consists of a software partition running on a general-purpose CPU and a hardware partition containing one or more Java co-processor units. The co-processor units execute most of the bytecode, while the software partition handles complex instructions and tasks such as class loading, input and output and memory management. The software partition and the co-processors communicate using a general communication channel such as a bus.

By far the most common instructions executed in the software partition are heap accesses. Because executing instructions on software is relatively slow, code-improving transformations which reduce the number of interrupts generated and the amount of communication can have a large impact on performance. An improvement on an existing technique called supersequence transformation is presented which makes the technique more general and reduces the amount of communication required between the partitions and the number of interrupts generated. The improved technique is shown to improve performance over the original in many programs.