Java as a specification language for hardware-software systems
ICCAD '97 Proceedings of the 1997 IEEE/ACM international conference on Computer-aided design
Multimedia Execution Hardware Accelerator
Journal of VLSI Signal Processing Systems - Parallel VLSI architectures for image and video processing
Hardware-Software Cosynthesis for Digital Systems
IEEE Design & Test
Hardware-Software Cosynthesis for Microcontrollers
IEEE Design & Test
The MOLEN Polymorphic Processor
IEEE Transactions on Computers
Proceedings of the 42nd annual Design Automation Conference
Proceedings of the 41st annual Design Automation Conference
Scalable hardware accelerator for comparing DNA and protein sequences
InfoScale '06 Proceedings of the 1st international conference on Scalable information systems
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
JTRES '06 Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems
Accelerator design for protein sequence HMM search
Proceedings of the 20th annual international conference on Supercomputing
The Molen compiler for reconfigurable processors
ACM Transactions on Embedded Computing Systems (TECS)
Efficient measurement of data flow enabling communication-aware parallelisation
IFMT '08 Proceedings of the 1st international forum on Next-generation multicore/manycore technologies
Scalable, Wavelet-Based Video: From Server to Hardware-Accelerated Client
IEEE Transactions on Multimedia
Hi-index | 0.00 |
Application-specific hardware accelerators can significantly improve a system's performance. In a Java-based system, we then have to consider a hybrid architecture that consists of a Java Virtual Machine running on a general-purpose processor connected to the hardware accelerator. In such a hybrid architecture, data communication between the accelerator and the general-purpose processor can incur a significant cost, which may even annihilate the original performance improvement of adding the accelerator. A careful layout of the data in the memory structure is therefore of major importance to maintain the acceleration performance benefits. This article addresses the reduction of the communication cost in a distributed shared memory consisting of the main memory of the processor and the accelerator's local memory, which are unified in the Java heap. Since memory access times are highly nonuniform, a suitable allocation of objects in either main memory or the accelerator's local memory can significantly reduce the communication cost. We propose several techniques for finding the optimal location for each Java object's data, either statically through profiling or dynamically at runtime. We show how we can reduce communication cost by up to 86% for the SPECjvm and DaCapo benchmarks. We also show that the best strategy is application dependent and also depends on the relative cost of remote versus local accesses. For a relative cost higher than 10, a self-learning dynamic approach often results in the best performance.