학술논문

FPGA-aware garbage collection in Java
Document Type
Conference
Source
International Conference on Field Programmable Logic and Applications, 2005. Field programmable logic and applications Field Programmable Logic and Applications, 2005. International Conference on. :675-680 2005
Subject
Components, Circuits, Devices and Systems
Java
Hardware
Virtual machining
Memory management
Impedance
Functional programming
Object oriented programming
Waste management
Bridges
Computer architecture
Language
ISSN
1946-147X
1946-1488
Abstract
During codesign of a system, one still runs into the impedance mismatch between the software and hardware worlds. This paper identifies the different levels of abstraction of hardware and software as a major culprit of this mismatch. For example, when programming in high-level object-oriented languages like Java, one has disposal of objects, methods, memory management, that facilitates development but these have to be largely abandoned when moving the same functionality into hardware. As a solution, this paper presents a virtual machine, based on the Jikes Research Virtual Machine, that is able to bridge the gap by providing the same capabilities to hardware components as to software components. This seamless integration is achieved by introducing an architecture and protocol that allow reconfigurable hardware and software to communicate with each other in a transparent manner i.e. no component of the design needs to be aware whether other components are implemented in hardware or in software. Further, in this paper we present a novel technique that allows reconfigurable hardware to manage dynamically allocated memory. This is achieved by allowing the hardware to hold references to objects and by modifying the garbage collector of the virtual machine to be aware of these references in hardware. We present benchmark results that show, for four different, well-known garbage collectors and for a wide range of applications, that a hardware-aware garbage collector results in a marginal overhead and is therefore a worthwhile addition to the developer's toolbox.