Summary
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.
Projects
- Feature Selection
- Feature Specialization
- Hardware - Software Intercommunication
People
Papers
- 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
Support
Waiting to be funded!
Please mail Comments/Suggestions to
Ranjesh or Srinivas at { jranjes , sbeerav } at parl.clemson.edu