Source code arrangement of embedded Java virtual machine for NAND flash memory

Embedded Java and NAND flash memories play important roles in mobile devices. In this paper, we proposed a systematic method to optimize embedded Java virtual machines executed in NAND flash memories (XIP) with limited RAM buffer. Our approach is efficient in reducing cache misses generated by the virtual machine. The experimental simulation showed the refining approach reduces 51% of execution time and 53% of power consumptions in the case with 8 KB RAM buffer. Because of the nature of interpreters, the shape of the control flow graph (CFG) of Java virtual machine is unique. Our approach constructed an indirect CFG by capturing dynamic bytecode traces. The Indirect CFG helped the refining process to rearrange bytecode handlers within the source codes of Java virtual machine. The arrangement algorithm picks the most relevant program fragments and put them into NAND flash pages. This approach helps to reduce read access to NAND flash memories.