Instruction scheduling for complex pipelines

  • M. Anton Ertl
  • Andreas Krall
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 641)


We designed heuristics for applying the list scheduling algorithm to processors with complex pipelines. On these processors the pipeline can stall due to resource contention (structural hazards) in addition to the usual data hazards. Conventional heuristics consider only data hazards. Our heuristics reduce structural hazards, too. Code with much instruction-level parallelism is optimized to avoid structural hazards, sequential code is scheduled for reducing data hazards. Embedded in a postpass strategy our scheduler removes 60 %–100 % of the removable stalls from conventionally scheduled code.


Selection Function Basic Block Parallel Code Register Allocation Instruction Schedule 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. [BEH91]
    David G. Bradlee, Susan J. Eggers, and Robert R. Henry. Integrating register allocation and instruction scheduling for RISCs. In Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 122–131, 1991.Google Scholar
  2. [BHE91]
    David G. Bradlee, Robert R. Henry, and Susan J. Eggers. The Marion system for retargetable instruction scheduling. In Proceedings of the SIGPLAN '91 Conference on Programming Language Design and Implementation, pages 229–240, Toronto, 1991.Google Scholar
  3. [BK92]
    Greg Blanck and Steve Krueger. The SuperSPARC microprocessor. In COMPCON: Digest of Papers, pages 136–141, 1992.Google Scholar
  4. [DA92]
    Keith Diefendorff and Michael Allen. Organization of the Motorola 88110 superscalar RISC microprocessor. IEEE Micro, pages 40–63, April 1992.Google Scholar
  5. [EK91]
    M. Anton Ertl and Andreas Krall. Optimal instruction scheduling using constraint logic programming. In Programming Language Implementation and Logic Programming (PLILP), pages 75–86, Passau, 1991. Springer, LNCS 528.Google Scholar
  6. [GH88]
    James R. Goodman and Wei-Chung Hsu. Code scheduling and register allocation in large basic blocks. In International Conference on Supercomputing, pages 442–452, 1988.Google Scholar
  7. [GM86]
    Phillip B. Gibbons and Steve S. Muchnick. Efficient instruction scheduling for a pipelined architecture. In Proceedings of the SIGPLAN '86 Symposium on Compiler Construction, pages 11–16, 1986.Google Scholar
  8. [HG83]
    John Hennessy and Thomas Gross. Postpass code optimization of pipeline constraints. ACM Transactions on Programming Languages and Systems, 5(3):422–448, July 1983.Google Scholar
  9. [Kas90]
    Uwe Kastens. Übersetzerbau. R. Oldenbourg Verlag, München, 1990.Google Scholar
  10. [LDSM80]
    David Landskov, Scott Davidson, Bruce Shriver, and Pattrick W. Mallet. Local microcode compaction techniques. ACM Computing Surveys, 12(3):261–294, September 1980.Google Scholar
  11. [Mot90]
    Motorola, Inc. MC88100 RISC Microprocessor User's Manual, second edition, 1990.Google Scholar
  12. [SKAH91]
    Mark Smotherman, Sanjay Krishnamurthy, P. S. Aravind, and David Hunnicutt. Efficient DAG construction and heuristic calculation for instruction scheduling. In MICRO-24, 24th Annual Intl. Symp. on Microarchitecture, pages 93–102, 1991.Google Scholar
  13. [War90]
    Henry S. Warren, Jr. Instruction scheduling for the IBM RISC System/6000 processor. IBM Journal of Research and Development, 34(1):85–92, January 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • M. Anton Ertl
    • 1
  • Andreas Krall
    • 1
  1. 1.Institut für ComputersprachenTechnische Universität WienWien

Personalised recommendations