6 An Optimized Code Generation Approach for Complex Instruction Set PDSPs

A programmable digital signal processor (PDSP) is a special-purpose microprocessor with specialized architecture and instruction set for implementing DSP algorithms. Typical architectural features include multiple memory partitions (onchip, off-chip, data memory, program memory, etc.), multiple (generally pipelined) arithmetic and logic units (ALUs), nonuniform register sets, and extensive hardware numeric support [1,2]. Single-chip PDSPs have become increasingly popular for real-time DSP applications [3,4]. The newest introductions from several manufacturers offer peak computing power approaching that of supercomputer systems of only a few years ago. However, to fully utilize the available computing power, the software designer must face the difficult task of programming in low-level assembly language. High-level languages (HLLs) are attractive to software designers because they simplify the task of programming. Unlike assembly language, HLL programs are readable, maintainable, and portable to other processors. All of these features contribute to increase productivity and reduce development cost. An HLL compiler translates the instructions present in an HLL program into assembly instructions, more easily understood by the processor. Commercially available HLL compilers for PDSPs have existed for many years [5]. Unfortunately, the performance of those compilers is still acceptable only to a few noncritical applications. The reason is twofold. First, the majority of those com-

[1]  Patricia K. Lawlis,et al.  Ada outperforms assembly: a case study , 1992, TRI-Ada '92.

[2]  Jayaram Bhasker,et al.  An optimizer for hardware synthesis , 1990, IEEE Design & Test of Computers.

[3]  Michael Wolfe,et al.  The Tiny Loop Restructuring Research Tool , 1991, ICPP.

[4]  Utpal Banerjee,et al.  Dependence analysis for supercomputing , 1988, The Kluwer international series in engineering and computer science.

[5]  Stephen C. Johnson A portable compiler: theory and practice , 1978, POPL.

[6]  Dawson R. Engler,et al.  DCG: an efficient, retargetable dynamic code generation system , 1994, ASPLOS VI.

[7]  Henry Massalin Superoptimizer: a look at the smallest program , 1987, ASPLOS 1987.

[8]  R. G. G. Cattell,et al.  A Survey and Critique of Some Models of Code Generation , 1977 .

[9]  David Alex Lamb Construction of a peephole optimizer , 1981, Softw. Pract. Exp..

[10]  John G. Barnes Programming in Ada (2nd ed.) , 1984 .

[11]  G. Carter,et al.  Graphic oriented signal processing language-GOSPL , 1987, ICASSP '87. IEEE International Conference on Acoustics, Speech, and Signal Processing.

[12]  E.A. Lee Programmable DSP architectures. II , 1989, IEEE ASSP Magazine.

[13]  Christoph M. Hoffmann,et al.  Pattern Matching in Trees , 1982, JACM.

[14]  John So,et al.  Implementation of fast Fourier transform algorithms with the TMS32020 , 1987 .

[15]  D. Brand,et al.  Technology Adaptation in Logic Synthesis , 1986, 23rd ACM/IEEE Design Automation Conference.

[16]  Craig Chambers,et al.  Making pure object-oriented languages practical , 1991, OOPSLA 1991.

[17]  Christopher W. Fraser,et al.  The Design and Application of a Retargetable Peephole Optimizer , 1980, TOPL.

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

[19]  S. M. Dunn,et al.  A compiler that easily retargets high level language programs for different signal processing architectures , 1989, International Conference on Acoustics, Speech, and Signal Processing,.

[20]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[21]  D. Genin,et al.  System design, optimization and intelligent code generation for standard digital signal processors , 1989, IEEE International Symposium on Circuits and Systems,.

[22]  Michael Wolfe,et al.  Optimizing supercompilers for supercomputers , 1989, ICS.

[23]  Edward A. Lee,et al.  Direct synthesis of optimized DSP assembly code from signal flow block diagrams , 1992, [Proceedings] ICASSP-92: 1992 IEEE International Conference on Acoustics, Speech, and Signal Processing.

[24]  R. M. Tomasulo,et al.  An efficient algorithm for exploiting multiple arithmetic units , 1995 .

[25]  W. M. McKeeman,et al.  Peephole optimization , 1965, CACM.

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

[27]  Andrew S. Tanenbaum,et al.  A practical tool kit for making portable compilers , 1983, Commun. ACM.

[28]  Alfred V. Aho,et al.  Code generation using tree matching and dynamic programming , 1989, ACM Trans. Program. Lang. Syst..

[29]  David W. Krumme,et al.  A practical method for code generation based on exhaustive search , 1982, SIGPLAN '82.

[30]  C. Burrus,et al.  DFT/FFT and Convolution Algorithms: Theory and Implementation , 1991 .

[31]  Robert Giegerich A Formal Framework for the Derivation of Machine-Specific Optimizers , 1983, TOPL.

[32]  David R. Chase,et al.  An improvement to bottom-up tree pattern matching , 1987, POPL '87.

[33]  John Barnes,et al.  Programming in ADA , 1989 .

[34]  Helnye Azaria,et al.  An optimizing compiler for an SPAP architecture using AI tools , 1992, Computer.

[35]  H.M. Ahmed,et al.  Recent advances in DSP systems , 1991, IEEE Communications Magazine.

[36]  D. Gregory,et al.  SOCRATES: A System for Automatically Synthesizing and Optimizing Combinational Logic , 1986, 23rd ACM/IEEE Design Automation Conference.

[37]  Ray Simar,et al.  Implementation of FIR/IIR filters with the TMS32010/TMS32020 , 1987 .

[38]  Monica S. Lam,et al.  A Loop Transformation Theory and an Algorithm to Maximize Parallelism , 1991, IEEE Trans. Parallel Distributed Syst..

[39]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[40]  P. P. Chakrabarti,et al.  Heuristic Search Through Islands , 1986, Artif. Intell..

[41]  A. Davis,et al.  The application of high-level languages to single-chip digital signal processors , 1988, ICASSP-88., International Conference on Acoustics, Speech, and Signal Processing.

[42]  Monica S. Lam,et al.  RETROSPECTIVE : Software Pipelining : An Effective Scheduling Technique for VLIW Machines , 1998 .

[43]  Steven W. K. Tjiang,et al.  Sharlit—a tool for building optimizers , 1992, PLDI '92.

[44]  Richard E. Korf,et al.  Planning as Search: A Quantitative Approach , 1987, Artif. Intell..

[45]  David A. Padua,et al.  Advanced compiler optimizations for supercomputers , 1986, CACM.

[46]  Panos E. Papamichalis,et al.  Digital signal processing applications with the TMS320 family; Vol. 1 , 1987 .

[47]  Richard I. Hartley,et al.  Tree-height minimization in pipelined architectures , 1989, 1989 IEEE International Conference on Computer-Aided Design. Digest of Technical Papers.

[48]  George W. Ernst,et al.  GPS : a case study in generality and problem solving , 1971 .

[49]  Barr and Feigenbaum Edward A. Avron,et al.  The Handbook of Artificial Intelligence , 1981 .

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

[51]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[52]  A. L. Wendt An optimizing code generator generator , 1990 .

[53]  D Bursky DSPs expand role as cost drops and speed increases , 1991 .

[54]  K. W. Leary,et al.  DSP/C: a standard high level language for DSP and numeric processing , 1990, International Conference on Acoustics, Speech, and Signal Processing.

[55]  Alfred V. Aho,et al.  Code Generation for Expressions with Common Subexpressions , 1977, J. ACM.

[56]  Andrew S. Tanenbaum,et al.  Using Peephole Optimization on Intermediate Code , 1982, TOPL.

[57]  Akihiro Hirano,et al.  A knowledge-based compiler enhancing DSP internal parallelism , 1991, 1991., IEEE International Sympoisum on Circuits and Systems.

[58]  R.B. Lake,et al.  Programs for digital signal processing , 1981, Proceedings of the IEEE.

[59]  Jan M. Rabaey,et al.  DSP specification using the Silage language , 1990 .

[60]  Christopher W. Fraser,et al.  A code generation interface for ANSI C , 1991, Softw. Pract. Exp..