Abstract
In many embedded systems, the computational power of an instruction set processor is combined with hardware accelerators. Building such combined systems implies co-design of the software that runs on the processor and the hardware that accelerates the embedded application. During the co-design process, the application is partitioned into a software part (running on the processor) and a hardware part (running on the accelerator). In order to ease the iterative process of partitioning, we introduce a novel design methodology. In our methodology, the interface between hardware and software is transparent to the software designer, and is based on dynamic method interception. Because the interface is transparent and generated automatically, the initial all-software prototype of the system can more easily be refined and partitioned. We show that method interception is inexpensive, and we demonstrate method interception in a real-life application.
Using our methodology, embedded systems can be designed fast, reducing time-to-market, while still achieving a high run-time performance.
Similar content being viewed by others
References
Alpern B, Attanasio CR, Barton JJ, Burke MG, Cheng P, Choi JD, Cocchi A, Fink SJ, Grove D, Hind M, Hummel SF, Lieber D, Litvinov V, Mergen MF, Ngo T, Russel JR, Sarkar V, Serrano MJ, Shepherd JC, Smith SE, Sreedhar VC, Srinivasan H, Whaley J (2000) The Jalapeño virtual machine. IBM Syst J 39(1):211–238
Andrews D, Niehaus D, Jidin R, Finley M, Peck W, Frisbie M, Ortiz J, Komp E, Ashenden P (2004) Programming models for hybrid FPGA-CPU computational components: a missing link. IEEE Micro 24(4):42–53
Beck ACS, Carro L (2005) Dynamic reconfiguration with binary translation: breaking the ILP barrier with software compatibility. In: Proceedings of the 42nd annual design automation conference (DAC). ACM, New York, pp 732–737
Bertels P, Heirman W, D’Hollander E, Stroobandt D (2009) Efficient memory management for hardware accelerated java virtual machines. ACM Trans Des Automat Electron Syst (accepted)
Birrell AD, Nelson BJ (1984) Implementing remote procedure calls. ACM Trans Comput Syst 2(1):39–59
Blackburn SM, Garner R, Hoffman C, Khan AM, McKinley KS, Bentzur R, Diwan A, Feinberg D, Frampton D, Guyer SZ, Hirzel M, Hosking A, Jump M, Lee H, Moss JEB, Phansalkar A, Stefanović D, VanDrunen T, von Dincklage D, Wiedermann B (2006) The DaCapo benchmarks: Java benchmarking development and analysis. In: OOPSLA ’06: Proceedings of the 21st annual ACM SIGPLAN conference on object-oriented programing, systems, languages, and applications. ACM, New York, pp 169–190
Borg A, Gao R, Audsley N (2006) A co-design strategy for embedded Java applications based on a hardware interface with invocation semantics. In: Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems JTRES. ACM, New York, pp 58–67
Bruneel K, Stroobandt D (2008) Automatic generation of run-time parameterizable configurations. In: Kebschull U, Platzner M, Jonas T (eds) Proceedings of the international conference on field programmable logic and applications. Kirchhoff Institute for Physics, Heidelberg, pp 361–366
Cai L, Gajski D (2003) Transaction level modeling: an overview. In: Proceedings of the 1st IEEE/IFIP international conference on hardware/software codesign and system synthesis (CODES+ISSS). ACM, New York, pp 19–24
Cardoso JMP, Neto HC (1999) Macro-based hardware compilation of Java bytecodes into a dynamic reconfigurable computing system. In: Proceedings of the 7th annual IEEE symposium on field-programmable custom computing machines (FCCM). IEEE Comput Soc, Los Alamitos
Chiba S (2000) Load-time structural reflection in Java. In: Proceedings of the European conference on object-oriented programming (ECOOP). LNCS, vol 1850. Springer, Berlin, pp 313–336
Chiba S, Sato Y, Tatsubori M (2003) Using HotSwap for implementing dynamic AOP systems. In: Proceedings of the 1st workshop on advancing the state-of-the-art in run-time inspection (ASARTI)
De Micheli G, Gupta RK (1997) Hardware/software co-design. Proc IEEE 85(3):349–365
DeGroat J, Raman A, Younis B (2003) A design project for system design with SystemC. In: Proceedings of the 2003 international conference on microelectronics systems education (MSE). IEEE Comput Soc, Los Alamitos, p 108
Edwards M, Green P (2000) An object-oriented design method for reconfigurable computing systems. In: Proceedings of the conference on design, automation and test in Europe (DATE). ACM, New York, pp 692–696
Eles P, Peng Z, Kuchcinski K, Doboli A (1997) System level hardware/software partitioning based on simulated annealing and tabu search. Des Autom Embed Syst 2(1):5–32
Ernst R (1998) Codesign of embedded systems: Status and trends. IEEE Des Test Comput 15(2):45–54
Faes Ph, Christiaens M, Buytaert D, Stroobandt D (2005) FPGA-aware garbage collection in Java. In: Proceedings of the international conference on field programmable logic and applications (FPL). IEEE Press, New York, pp 675–680
Faes Ph, Minnaert B, Christiaens M, Bonnet E, Saeys Y, Stroobandt D, Van de Peer Y (2006) Scalable hardware accelerator for comparing DNA and protein sequences. In: InfoScale ’06: proceedings of the 1st international conference on scalable information systems. ACM, New York, p 33
Faes Ph, Christiaens M, Stroobandt D (2007) Mobility of data in distributed hybrid computing systems. In: Proceedings of the 21st international parallel and distributed processing symposium (IPDPS). IEEE Comput Soc, Los Alamitos, p 386
Fleischmann J, Buchenrieder K, Kress R (1999) Java driven codesign and prototyping of networked embedded systems. In: Proceedings of the 36th annual design automation conference (DAC). ACM, New York, pp 794–797
Fowler M (1999) Refactoring improving the design of existing code. Addison-Wesley, Reading
Gotoh O (1982) An improved algorithm for matching biological sequences. J Mol Biol 162(3):705–708
Ha Y, Vernalde S, Schaumont P, Engels M, Lauwereins R, De Man H (2002) Building a virtual framework for networked reconfigurable hardware and software objects. J Supercomput 21(2):131–144
Helaihel R, Olukotun K (1997) Java as a specification language for hardware/software systems. In: Proceedings of the international conference on computer-aided design (ICCAD). IEEE Comput Soc, Los Alamitos, pp 690–697
JSR-133: Java memory model and thread specification (2004) http://jcp.org/aboutJava/communityprocess/review/jsr133/index.html
Kühn A, Huss SA (2004) Dynamically reconfigurable hardware for object-oriented processing. In: Proceedings of the international conference on parallel computing in electrical engineering (PARELEC). IEEE Comput Soc, Los Alamitos, pp 181–186
Kumfert G, Leek J, Epperly T (2007) Babel remote method invocation. In: Proceedings of the 21st international parallel and distributed processing symposium (IPDPS). IEEE Comput Soc, Los Alamitos
Lattanzi E, Gayasen A, Kandemir M, Vijaykrishnan N, Benini L, Bogliolo A (2005) Improving Java performance using dynamic method migration on FPGAs. Int J Embed Syst 1(3):228–236
Lindholm T, Yellin F (1999) Java virtual machine specification, 2nd edn. Addison-Wesley, Reading. http://www.ic.uff.br/~cbraga/comp/vmspec/VMSpecTOC.doc.html
Lysecky R, Stitt G, Vahid F (2006) WARP processors. Trans Des Automat Electron Syst 11(3):659–681
Maebe J, Ronsse M, De Bosschere K (2002) Diota: dynamic instrumentation, optimization and transformation of applications. In: Compendium of workshops and tutorials held in conjunction with the international conference on parallel architectures and compilation techniques (PACT)
Maebe J, Buytaert D, Eeckhout L, De Bosschere K (2006) Javana: a system for building customized Java program analysis tools. ACM SIGPLAN Not 41(10):153–168
Mattos JCB, Wong S, Carro L (2006) The MOLEN FemtoJava engine. In: Proceedings of the IEEE 17th international conference on application-specific systems, architectures and processors (ASAP). IEEE Comput Soc, Los Alamitos, pp 19–22
McGhan H, O’Connor M (1998) PicoJava: A direct execution engine for Java bytecode. Computer 31(10):22–30
Mignolet JY, Nollet V, Coene P, Verkest D, Vernalde S, Lauwereins R (2003) Infrastructure for design and management of relocatable tasks in a heterogeneous reconfigurable system-on-chip. In: Proceedings of the conference on design, automation and test in Europe (DATE). IEEE Comput Soc, Los Alamitos, p 10986
Niemann R, Marwedel P (1997) An algorithm for hardware/software partitioning using mixed integer linear programming. Des Autom Embed Syst 2(2):165–193
Nollet V, Coene P, Verkest D, Vernalde S, Lauwereins R (2003) Designing an operating system for a heterogeneous reconfigurable SoC. In: Proceedings of the 17th international symposium on parallel and distributed processing (IPDPS). IEEE Comput Soc, Los Alamitos, p 174.1
Pugh W (1999) Fixing the Java memory model. In: Proceedings of the ACM conference on Java Grande (JAVA). ACM, New York, pp 89–98
Smith TF, Waterman MS (1981) Identification of common molecular subsequences. J Mol Biol 147(1):195–197
Standard Performance Evaluation Corporation (1998) Java virtual machine benchmarks (SPECjvm1998). http://www.spec.org/jvm98/
Standard Performance Evaluation Corporation (2008) Java virtual machine benchmarks (SPECjvm2008). http://www.spec.org/jvm2008/
Sun Microsystems (2002) The Java HotSpot virtual machine, version 1.4.1. Technical report
SystemC: user’s Guide Update for SystemC 2.0.1 (2002). Available from the Open SystemC Initiative (OSCI) at http://www.systemc.org/
SystemVerilog: Accellera’s extensions to Verilog, version 3.1. http://www.systemverilog.org/
Uhrig S, Maier S, Kuzmanov G, Ungerer T (2006) Coupling of a reconfigurable architecture and a multithreaded processor core with integrated real-time scheduling. In: Proceedings of the 20th international parallel and distributed processing symposium (IPDPS). IEEE Comput Soc, Los Alamitos
Vassiliadis S, Wong S, Gaydadjiev G, Bertels K, Kuzmanov G, Panainte EM (2004) The MOLEN polymorphic processor. IEEE Trans Comput 53(11):1363–1375
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Faes, P., Bertels, P., Van Campenhout, J. et al. Using method interception for hardware/software co-development. Des Autom Embed Syst 13, 223–243 (2009). https://doi.org/10.1007/s10617-009-9040-8
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10617-009-9040-8