Compiler generation techniques for embedded processors and their application to HW/SW codesign

Due to the advancing semiconductor technology it is becoming possible within ten years to fabricate a highly complex and high performance VLSI that includes more than hundred million transistors on a single silicon chip [1]. Using such a technology, so-called systems-on-a-chip, that includes CPU cores, DSPs, memory blocks (RAM and ROM), application specific hardware modules, FPGA blocks, as well as analog and radio frequency blocks, as shown Figure 1. Systems-on-a-chip will be suitable for embedded applications, such as consumer electronics products that perform sophisticated data and information processing, telecommunication equipment that perform movie picture and audio transmission, control systems for industrial manufacturing, automobile, and avionics.

[1]  Peter Marwedel,et al.  Tree-based mapping of algorithms to predefined structures , 1993, Proceedings of 1993 International Conference on Computer Aided Design (ICCAD).

[2]  Luciano Lavagno,et al.  Hardware-software co-design of embedded systems: the POLIS approach , 1997 .

[3]  Masaharu Imai,et al.  An integer programming approach to instruction implementation method selection problem , 1992, Proceedings EURO-DAC '92: European Design Automation Conference.

[4]  A. Alomary,et al.  An ASIP instruction set optimization algorithm with functional module sharing constraint , 1993, Proceedings of 1993 International Conference on Computer Aided Design (ICCAD).

[5]  Ing-Jer Huang,et al.  Synthesis of Instruction Sets for Pipelined Microprocessors , 1994, 31st Design Automation Conference.

[6]  Sanjay M. Krishnamurthy,et al.  A brief survey of papers on scheduling for pipelined processors , 1990, SIGP.

[7]  Luciano Lavagno,et al.  Hardware-Software Co-Design of Embedded Systems , 1997 .

[8]  Gert Goossens,et al.  Code Generation for Embedded Processors , 1995 .

[9]  Jean-Michel Berge Hardware - Software Codesign and Co-Verification , 1997 .

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

[11]  B. Ramakrishna Rau,et al.  Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing , 1981, MICRO 14.

[12]  A. Alomary,et al.  PEAS-I: A hardware/software co-design system for ASIPs , 1993, Proceedings of EURO-DAC 93 and EURO-VHDL 93- European Design Automation Conference.

[13]  John R. Ellis,et al.  Bulldog: A Compiler for VLIW Architectures , 1986 .

[14]  Rolf Ernst,et al.  A path-based technique for estimating hardware runtime in HW/SW-cosynthesis , 1995 .

[15]  Clifford Liem,et al.  Retargetable Compilers for Embedded Core Processors , 1997, Springer US.

[16]  Edwin Hsing-Mean Sha,et al.  Rotation scheduling: a loop pipelining algorithm , 1997, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[17]  Scott A. Mahlke,et al.  A comparison of full and partial predicated execution support for ILP processors , 1995, Proceedings 22nd Annual International Symposium on Computer Architecture.

[18]  Masaharu Imai,et al.  An integrated design environment for application specific integrated processor , 1991, [1991 Proceedings] IEEE International Conference on Computer Design: VLSI in Computers and Processors.

[19]  Thomas R. Gross,et al.  Postpass Code Optimization of Pipeline Constraints , 1983, TOPL.

[20]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[21]  John Cocke,et al.  A methodology for the real world , 1981 .

[22]  Krishna Subramanian,et al.  Enhanced modulo scheduling for loops with conditional branches , 1992, MICRO 1992.

[23]  Christopher W. Fraser,et al.  A Retargetable C Compiler: Design and Implementation , 1995 .

[24]  Scott A. Mahlke,et al.  Effective compiler support for predicated execution using the hyperblock , 1992, MICRO 25.

[25]  Hiroyuki Tomiyama,et al.  Embedded System Design Using Soft-Core Processor and Valen-C , 1998, J. Inf. Sci. Eng..

[26]  Scott A. Mahlke,et al.  Characterizing the impact of predicated execution on branch prediction , 1994, Proceedings of MICRO-27. The 27th Annual IEEE/ACM International Symposium on Microarchitecture.

[27]  Richard M. Stallman,et al.  Using and Porting GNU CC , 1998 .

[28]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[29]  Pierre G. Paulin,et al.  Flexware: A flexible firmware development environment for embedded systems , 1994, Code Generation for Embedded Processors.

[30]  Masaharu Imai,et al.  A new HW/SW partitioning algorithm for synthesizing the highest performance pipelined ASIPs with multiple identical FUs , 1996, Proceedings EURO-DAC '96. European Design Automation Conference with EURO-VHDL '96 and Exhibition.

[31]  Preston Briggs,et al.  Register allocation via graph coloring , 1992 .

[32]  Joseph A. Fisher,et al.  Trace Scheduling: A Technique for Global Microcode Compaction , 1981, IEEE Transactions on Computers.

[33]  Giovanni De Micheli,et al.  Hardware-software cosynthesis for digital systems , 1993, IEEE Design & Test of Computers.

[34]  Giovanni De Micheli,et al.  Synthesis and simulation of digital systems containing interacting hardware and software components , 1992, [1992] Proceedings 29th ACM/IEEE Design Automation Conference.

[35]  Andrew W. Appel Modern Compiler Implementation in ML: Basic Techniques , 1997 .

[36]  Wen-mei W. Hwu,et al.  The benefit of predicated execution for software pipelining , 1993, [1993] Proceedings of the Twenty-sixth Hawaii International Conference on System Sciences.

[37]  David Bernstein,et al.  Scheduling expressions on a pipelined processor with a maximal delay of one cycle , 1989, TOPL.

[38]  Rolf Ernst,et al.  Codesign of Embedded Systems: Status and Trends , 1998, IEEE Des. Test Comput..

[39]  Masaharu Imai,et al.  A hardware/software partitioning algorithm for designing pipelined ASIPs with least gate counts , 1996, DAC '96.

[40]  Utpal Banerjee,et al.  Loop Transformations for Restructuring Compilers: The Foundations , 1993, Springer US.

[41]  Masaharu Imai,et al.  A hardware/software codesign method for pipelined instruction set processor using adaptive database , 1995, ASP-DAC '95.

[42]  T. C. May,et al.  Instruction-set matching and selection for DSP and ASIP code generation , 1994, Proceedings of European Design and Test Conference EDAC-ETC-EUROASIC.

[43]  Anne Elisabeth Haxthausen,et al.  LYCOS: the Lyngby Co-Synthesis System , 1997, Des. Autom. Embed. Syst..

[44]  Jianwen Zhu,et al.  Specification and Design of Embedded Systems , 1998, Informationstechnik Tech. Inform..

[45]  Ahmed Amine Jerraya,et al.  Protocol selection and interface generation for HW-SW codesign , 1997, IEEE Trans. Very Large Scale Integr. Syst..

[46]  Clifford Liem,et al.  Compilation Techniques and Tools for Embedded Processor Architectures , 1997 .

[47]  Ing-Jer Huang,et al.  Synthesis of application specific instruction sets , 1995, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[48]  Nguyen Ngoc Binh,et al.  An instruction set optimization algorithm for pipelined ASIPs , 1995 .

[49]  Sharad Malik,et al.  Optimal code generation for embedded memory non-homogeneous register architectures , 1995 .

[50]  Ahmed Amine Jerraya,et al.  System-level synthesis , 1999 .

[51]  Masaharu Imai,et al.  A hardware/software partitioning algorithm for pipelined instruction set processor , 1995, Proceedings of EURO-DAC. European Design Automation Conference.

[52]  Yoshinori Takeuchi,et al.  A performance maximization algorithm to design ASIPs under the constraint of chip area including RAM and ROM sizes , 1998, Proceedings of 1998 Asia and South Pacific Design Automation Conference.