Clemson Reconfigurable Computing

PARL Home | RC Home | ACC | RCADE | ROAR

ROAR Projects

Run-time Reconfigurable
Java Virtual Machine


Reconfigurable Computing (RC) is a technology that makes use of programmable logic (FPGAs) in conjunction with a traditional microprocessor to accelerate general-purpose applications. Although the hardware resources in current FPGA devices are rapidly growing, a full-sized application will completely overwhelm even the largest available device. Consequently, only a portion of the application can be accelerated by the reconfigurable resources, and determining the optimal portion to map is difficult in practice and undecidable in general. But, because FPGAs are reconfigurable, researchers are investigating Run-Time Reconfigurable (RTR) systems which allow the FPGA to be reconfigured while the application is running. These novel architectures exploit the individual strengths of hardware and software by allowing the architecture to execute parts of a program in software and other parts in hardware. In this project we investigate how to translate and execute Java applications for this kind of architecture.

The primary goal of this project is to construct a functional and practical prototype demonstration of automatic RTR. This is accomplished via (1) a compiler that generates both a bytecode version and a hardware version of a class (plus a runtime interface) and (2) a modified Java Virtual Machine (JVM) which is capable of running (unmodified) Java programs on a reconfigurable architecture. The modified RTR JVM then uses an online algorithm to select most profitable hardware at runtime, automatically swapping in new hardware when the performance can be improved by doing so. The RTR-JVM is thus a means of automating reconfigurable computing. Such a machine affords the programmer a familiar and flexible environment to work in and automates the difficult task of determining a priori what portion of the application should be mapped to reconfigurable hardware.

Our general approach is to use Forge (Java to Verilog compiler from Xilinx,Inc.) to convert Java bytecodes into hardware descriptions which are then instantiated in our hardware infrastructure. An open source Java Virtual Machine, Kaffe, has been modified to select, install, and invoke hardware methods. We gather profiling statistics to determine how often a method is invoked and how often variables are being changed. This information is used to decide what methods to swap in and out of hardware at runtime. We are currently working with several applications such as a DES encrypter/decrypter, a Huffman encoder/decoder, and a longest common subsequence computation.


  • Feature Selection
  • Feature Specialization
  • Hardware - Software Intercommunication



  • A Java Virtual Machine for Reconfigurable Computing, SouthEast Conference '03
    Brian Greskamp, Ron Sass
  • A Survey of and Issues in Automatic Runtime Reconfiguration
    Srinivas R Beeravolu, Brian Greskamp, Ron Sass
  • Compiler and Run Time Support to Accelerate Java Applications on a Run Time Reconfigurable System, Work-in-progress, PACT 2003, New Orleans, LA.
    Srinivas R Beeravolu, Ron Sass


Waiting to be funded!

Please mail Comments/Suggestions to Ranjesh or Srinivas at { jranjes , sbeerav } at