Strategies for dynamic memory allocation in hybrid architectures

Hybrid architectures combining the strengths of general-purpose processors with application-specific hardware accelerators can lead to a significant performance improvement. Our hybrid architecture uses a Java Virtual Machine as an abstraction layer to hide the complexity of the hardware/software interface between processor and accelerator from the programmer. The data communication between the accelerator and the processor often incurs a significant cost, which sometimes annihilates the original speedup obtained by the accelerator. This article shows how we minimise this communication cost by dynamically chosing an optimal data layout in the Java heap memory which is distributed over both the accelerator and the processor memory. The proposed self-learning memory allocation strategy finds the optimal location for each Java object's data by means of runtime profiling. The communication cost is effectively reduced by up to 86% for the benchmarks in the DaCapo suite (51% on average).

[1]  Brandon Harris,et al.  Accelerator design for protein sequence HMM search , 2006, ICS '06.

[2]  Frank Vahid,et al.  Warp Processors , 2006, ACM Trans. Design Autom. Electr. Syst..

[3]  Stamatis Vassiliadis,et al.  The MOLEN polymorphic processor , 2004, IEEE Transactions on Computers.

[4]  Stamatis Vassiliadis,et al.  The Molen compiler for reconfigurable processors , 2007, TECS.

[5]  Stamatis Vassiliadis,et al.  Multimedia Execution Hardware Accelerator , 2001, J. VLSI Signal Process..

[6]  Luca Benini,et al.  Improving Java performance using dynamic method migration on FPGAs , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[7]  Andrew Borg,et al.  A co-design strategy for embedded Java applications based on a hardware interface with invocation semantics , 2006, JTRES '06.

[8]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[9]  Martin Schoeberl,et al.  A Java processor architecture for embedded real-time systems , 2008, J. Syst. Archit..