Time-constrained code compaction for DSPs

This paper addresses instruction-level parallelism in code generation for digital signal processors (DSPs). In the presence of potential parallelism, the task of code generation includes code compaction, which parallelizes primitive processor operations under given dependency and resource constraints. Furthermore, DSP algorithms in most cases are required to guarantee real-time response. Since the exact execution speed of a DSP program is only known after compaction, real-time constraints should be taken into account during the compaction phase. While previous DSP code generators rely on rigid heuristics for compaction, we propose a novel approach to exact local code compaction based on an integer programming (IP) model, which handles time constraints. Due to a general problem formulation, the IP model also captures encoding restrictions and handles instructions having alternative encodings and side effects and therefore applies to a large class of instruction formats. Capabilities and limitations of our approach are discussed for different DSPs.

[1]  Kurt Keutzer,et al.  Storage assignment to decrease code size , 1995, PLDI '95.

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

[3]  Alexander Aiken,et al.  A Development Environment for Horizontal Microcode , 1986, IEEE Trans. Software Eng..

[4]  Christopher W. Fraser,et al.  Engineering a simple, efficient code-generator generator , 1992, LOPL.

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

[6]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

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

[8]  Randal E. Bryant,et al.  Symbolic Manipulation of Boolean Functions Using a Graphical Representation , 1985, 22nd ACM/IEEE Design Automation Conference.

[9]  Helmut Emmelmann Code Selection by Regularly Controlled Term Rewriting , 1991, Code Generation.

[10]  Peter Marwedel,et al.  OSCAR: optimum simultaneous scheduling, allocation and resource binding based on integer programming , 1994, EURO-DAC '94.

[11]  Eduardo Pelegrí-Llopart,et al.  Optimal code generation for expression trees: an application BURS theory , 1988, POPL '88.

[12]  Catherine H. Gebotys,et al.  Optimal VLSI Architectural Synthesis , 1992 .

[13]  Gary William Grewal,et al.  An integrated approach to retargetable code generation , 1994, Proceedings of 7th International Symposium on High-Level Synthesis.

[14]  Sharad Malik,et al.  Memory bank and register allocation in software synthesis for ASIPs , 1995, Proceedings of IEEE International Conference on Computer Aided Design (ICCAD).

[15]  Rainer Leupers,et al.  Instruction set extraction from programmable structures , 1994, EURO-DAC '94.

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

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

[18]  Bruce D. Shriver,et al.  Some Experiments in Local Microcode Compaction for Horizontal Machines , 1981, IEEE Transactions on Computers.

[19]  Peter Marwedel,et al.  Verification of Hardware Descriptions by Retargetable Code Generation , 1989, 26th ACM/IEEE Design Automation Conference.

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

[21]  Alfred V. Aho,et al.  Optimal Code Generation for Expression Trees , 1976, J. ACM.

[22]  B. Wess Automatic instruction code generation based on trellis diagrams , 1992, [Proceedings] 1992 IEEE International Symposium on Circuits and Systems.

[23]  Nikil D. Dutt,et al.  A Unified code generation approach using mutation scheduling , 1994, Code Generation for Embedded Processors.

[24]  Jochen A. G. Jess,et al.  Conflict Modelling and Instruction Scheduling in Code Generation for In-House DSP Cores , 1995, 32nd Design Automation Conference.

[25]  Rainer Leupers,et al.  Algorithms for address assignment in DSP code generation , 1996, ICCAD 1996.

[26]  Rainer Leupers,et al.  A BDD-based frontend for retargetable compilers , 1995, Proceedings the European Design and Test Conference. ED&TC 1995.