Postpass Code Optimization of Pipeline Constraints

Pipeline interlocks are used in a pipelined architecture to prevent the execution of a machine instruction before its operands are available. An alternative to this complex piece of hardware is to rearrange the instructions at compile time to avoid pipeline interlocks. This problem is called code reorganization and is studied. The basic problem of reorganization of machine-level instructions at compile time is shown to be np-complete. A heuristic algorithm is proposed, and its properties and effectiveness are explored. Empirical data from MIPs, a VLSI processor design, are given. The impact of code reorganization techniques on the rest of a compiler system is discussed. 30 references.

[1]  Gene McDaniel,et al.  An Instruction Fetch Unit for a High-Performance Personal Computer , 1984, IEEE Transactions on Computers.

[2]  John L. Hennessy,et al.  Symbolic Debugging of Optimized Code , 1982, TOPL.

[3]  William A. Wulf Compilers and Computer Architecture , 1981, Computer.

[4]  MARIO TOKORO,et al.  Optimization of Microprograms , 1981, IEEE Transactions on Computers.

[5]  Thomas R. Gross,et al.  Code generation and reorganization in the presence of pipeline constraints , 1982, POPL '82.

[6]  Joseph Allen Fisher,et al.  The Optimization of Horizontal Microcode within and Beyond Basic Blocks: an Application of Processor Scheduling with Resources , 2018 .

[7]  Martin Hopkins,et al.  An overview of the PL.8 compiler , 1982, SIGP.

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

[9]  David A. Patterson,et al.  The case for the reduced instruction set computer , 1980, CARN.

[10]  Peter M. Kogge,et al.  The Architecture of Pipelined Computers , 1981 .

[11]  Jeffrey D. Ullman,et al.  NP-Complete Scheduling Problems , 1975, J. Comput. Syst. Sci..

[12]  George Radin,et al.  The 801 minicomputer , 1982, ASPLOS I.

[13]  Norman P. Jouppi,et al.  The MIPS Machine , 1982, COMPCON.

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

[15]  David W. Anderson,et al.  The IBM System/360 model 91: machine philosophy and instruction-handling , 1967 .

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

[17]  James C. Beatty An axiomatic approach to code optimization for expressions , 1972, JACM.

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

[19]  James W. Rymarczyk Coding guidelines for pipelined processors , 1982, ASPLOS I.

[20]  Alfred V. Aho,et al.  Principles of Compiler Design (Addison-Wesley series in computer science and information processing) , 1977 .

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

[22]  Peter J. Denning,et al.  ACM president's letter: computer architecture: some old ideas that haven't quite made it yet , 1981, CACM.

[23]  Martin Hopkins,et al.  An overview of the PL.8 compiler , 1982, SIGPLAN '82.

[24]  Ware Myers Computer Graphics: Reaching the User , 1981, Computer.

[25]  Ken E. Davies,et al.  Real-Time Signal Processor Software Support , 1982, IBM J. Res. Dev..

[26]  Steven R. Vegdahl Phase coupling and constant generation in an optimizing microcode compiler , 1982, MICRO 15.

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