Virtual machine technology allows for the reuse of applications and code over various heterogeneous platforms. A virtual machine simply adds another layer of abstraction between the application and the native hardware. A major drawback of an application running on a virtual machine, however, is that the performance is below that of an application targeted for a native platform. Previous work has dealt with improving the performance of a virtual machine through hardware support using field programmable gate arrays (FPGAs). With the growing capacities of FPGAs it is becoming possible to provide higher levels of hardware support. This work examines the Java virtual machine (JVM), by implementing it in hardware, using a network-on-chip (NoC) design methodology. A subset of the JVM instructions are implemented in a hardware engine, with the more complex operations performed in software, and this hardware engine is replicated numerous times within the FPGA. By having several JVM instances execute in hardware concurrently, multiple applications and/or threads can simultaneously benefit from hardware implementation
[1]
Frank Yellin,et al.
The Java Virtual Machine Specification
,
1996
.
[2]
Kenneth B. Kent,et al.
The co-design of virtual machines using reconfigurable hardware
,
2003
.
[3]
Fayez Gebali,et al.
The JAFARDD processor: a Java architecture based on a Folding Algorithm, with Reservation stations, Dynamic translation, and Dual processing
,
2010,
IEEE Trans. Consumer Electron..
[4]
Steve Wilson,et al.
Java Platform Performance - Strategies and Tactics
,
2000
.
[5]
Axel Jantsch,et al.
Networks on chip
,
2003
.
[6]
Sujit Dey,et al.
Using a Soft Core in a SoC Design: Experiences with picoJava
,
2000,
IEEE Des. Test Comput..
[7]
Jean-Pierre Deschamps,et al.
Floating‐Point Unit
,
2006
.
[8]
Toshiaki Yasue,et al.
Overview of the IBM Java Just-in-Time Compiler
,
2000,
IBM Syst. J..