Code Transformations for Embedded Reconfigurable Computing Architectures

Embedded Systems permeate all aspects of our daily life, from the ubiquitous mobile devices (e.g., PDAs and smart-phones) to play-stations, settop boxes, household appliances, and in every electronic system, be it large or small (e.g., in cars, wrist-watches). Most embedded systems are characterized by stringent design constraints such as reduced memory and computing capacity, severe power and energy restrictions, weight and space limitations, most importantly, very short life spans and thus strict design cycles. Reconfiguration has emerged as a key technology for embedded systems as it offers the promise of increased system performance and component number reduction. Reconfigurable components can be customized or specialized (even dynamically) to the task at hand, thereby executing specific tasks more efficiently leading to possible reductions of the weight and power. In this article, we introduce and discuss compilation techniques for reconfigurable embedded systems. We present specific compiler techniques focusing on source-level code transformations highlighting their potential and the applicability of generative programming techniques to this compilation domain.

[1]  Paolo Ienne,et al.  Automatic application-specific instruction-set extensions under microarchitectural constraints , 2003, Proceedings 2003. Design Automation Conference (IEEE Cat. No.03CH37451).

[2]  Dinesh Bhatia,et al.  Temporal Partitioning and Scheduling Data Flow Graphs for Reconfigurable Computers , 1999, IEEE Trans. Computers.

[3]  Miguel P. Monteiro,et al.  Adding aspect-oriented features to MATLAB , 2006 .

[4]  Horácio C. Neto,et al.  An Enhanced Static-List Scheduling Algorithm for Temporal Partitioning onto RPUs , 1999, VLSI.

[5]  Scott Hauck,et al.  Reconfigurable Computing: The Theory and Practice of FPGA-Based Computation , 2007 .

[6]  Daniel D. Gajski,et al.  High ― Level Synthesis: Introduction to Chip and System Design , 1992 .

[7]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[8]  James R. Cordy,et al.  The TXL source transformation language , 2006, Sci. Comput. Program..

[9]  Pedro C. Diniz,et al.  Array Replication to Increase Parallelism in Applications Mapped to Configurable Architectures , 2005, LCPC.

[10]  Michael Wolfe,et al.  High performance compilers for parallel computing , 1995 .

[11]  João M. P. Cardoso On Combining Temporal Partitioning and Sharing of Functional Units in Compilation for Reconfigurable Architectures , 2003, IEEE Trans. Computers.

[12]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[13]  Rajesh Gupta,et al.  Hardware/software co-design , 1996, Proc. IEEE.

[14]  Giovanni De Micheli,et al.  Synthesis and Optimization of Digital Circuits , 1994 .

[15]  Alok N. Choudhary,et al.  A system for synthesizing optimized FPGA hardware from Matlab(R) , 2001, IEEE/ACM International Conference on Computer Aided Design. ICCAD 2001. IEEE/ACM Digest of Technical Papers (Cat. No.01CH37281).

[16]  Pedro C. Diniz,et al.  Coarse-grain pipelining on multiple FPGA architectures , 2002, Proceedings. 10th Annual IEEE Symposium on Field-Programmable Custom Computing Machines.

[17]  Pedro C. Diniz,et al.  A Data-Driven Approach for Pipelining Sequences of Data-Dependent Loops , 2007 .

[18]  Ricardo E. Gonzalez,et al.  Xtensa: A Configurable and Extensible Processor , 2000, IEEE Micro.

[19]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[20]  Eelco Visser,et al.  Stratego/XT 0.17. A language and toolset for program transformation , 2008, Sci. Comput. Program..

[21]  Maya Gokhale,et al.  Co-Synthesis to a Hybrid RISC/FPGA Architecture , 2000, J. VLSI Signal Process..

[22]  Majid Sarrafzadeh,et al.  Instruction generation for hybrid reconfigurable systems , 2001, ICCAD 2001.

[23]  Pedro C. Diniz,et al.  Compiling for reconfigurable computing: A survey , 2010, CSUR.

[24]  Russell Tessier,et al.  FPGA Architecture: Survey and Challenges , 2008, Found. Trends Electron. Des. Autom..

[25]  Alok N. Choudhary,et al.  Precision and error analysis of MATLAB applications during automated hardware synthesis for FPGAs , 2001, Proceedings Design, Automation and Test in Europe. Conference and Exhibition 2001.

[26]  Ranga Vemuri,et al.  An Integrated Partitioning and Synthesis System for Dynamically Reconfigurable Multi-FPGA Architectures , 1998, IPPS/SPDP Workshops.

[27]  Tarek A. El-Ghazawi,et al.  The Promise of High-Performance Reconfigurable Computing , 2008, Computer.

[28]  Philip Wadler Call-by-Value Is Dual to Call-by-Name - Reloaded , 2005, RTA.

[29]  Pierre-Etienne Moreau,et al.  Tom: Piggybacking Rewriting on Java , 2007, RTA.

[30]  Ranga Vemuri,et al.  Combined temporal partitioning and scheduling for reconfigurable architectures , 1999, Optics East.

[31]  Pedro C. Diniz,et al.  Compilation Techniques for Reconfigurable Architectures , 2008 .

[32]  Vicki H. Allan,et al.  Software pipelining , 1995, CSUR.

[33]  Mary W. Hall,et al.  Custom data layout for memory parallelism , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[34]  Majid Sarrafzadeh,et al.  Instruction generation for hybrid reconfigurable systems , 2001, IEEE/ACM International Conference on Computer Aided Design. ICCAD 2001. IEEE/ACM Digest of Technical Papers (Cat. No.01CH37281).

[35]  Minh N. Do,et al.  Youn-Long Steve Lin , 1992 .