Scheduling instructions by direct placement

  • Robert Griesemer
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 641)


This paper presents a simple and efficient method for instruction scheduling within basic blocks. An implementation proved to be extremely small while producing results comparable to other more complicated techniques. The algorithm is of quadratic complexity in the number of instructions but a linear run-time is achieved in practice. Because no (code) look-ahead is needed, the algorithm is even suitable for one-pass compilers.


Basic Block Syntax Tree Register Allocation Instruction Schedule Intermediate Code 
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. [Aus82]
    Auslander, M., Hopkins, M., “An Overview of the PL.8 Compiler”, Proc. ACM SIGPLAN '82 Symposium on Compiler Construction, June 1982.Google Scholar
  2. [Bra91]
    Bradlcc, D.G., Eggers, S.J., Henry, R.R., “Integrating Register Allocation and Instruction Scheduling for RISCs”, Proc. ACM Conference on Architectural Support for Progranuning Languages and Operating Systems, April 1991.Google Scholar
  3. [Cra88]
    CRAY Y-MP Computer Systems Functional Description Manual, Cray Research Inc., Publication HR-4001,1988.Google Scholar
  4. [Cre90]
    Crelier, R., OP2: A Portable Oberon Compiler, Computersysteme ETH Zürich, Tech. Report No. 125, Feb. 1990.Google Scholar
  5. [Dav84]
    Davidson, J.W., Fraser, C.W., “Register Allocation and Exhaustive Peephole Optimization”, Software — Practice and Experience, (14) 9, Sept. 1984.Google Scholar
  6. [Dav86]
    Davidson, J.W., “A Retargetable Instruction Reorganize”, Proc. ACM SIGPLAN '86 Symposium on Compiler Construction, June 1986.Google Scholar
  7. [Dec92]
    Preliminary Alpha Architecture Handbook (Special Announcement Edition), Digital Equipment Corporation, Feb. 1992.Google Scholar
  8. [Don79]
    Dongarra, J.J., Hinds, A.R., “Unrolling Loops in FORTRAN”, Software — Practice and Experience, (9) 3, March 1979.Google Scholar
  9. [Fre74]
    Freiburghouse, R.A., “Register Allocation Via Usage Counts”, Communications of the ACM, (17) 11, Nov. 1974.Google Scholar
  10. [Gib86]
    Gibbons, P.B., Muchnick, S.S., “Efficient Instruction Scheduling for a Pipelined Architecture”, Proc. ACM SIGPLAN '86 Symposium on Compiler Construction, June 1986.Google Scholar
  11. [Gro83]
    Gross, T., Code Optimization of Pipeline Constraints, Tech. Report No. 83-255, Computer Systems Lab, Stanford Univ., Dec. 1983.Google Scholar
  12. [Hee88]
    Heeb, B., Design of the Processor-Board for the Ceres-2 Workstation, Computersysteme ETH Zürich, Tech. Report No. 93, Nov. 1988.Google Scholar
  13. [Hen83]
    Hennessy, J., Gross, T., “Postpass Code Optimization of Pipeline Constraints”, ACM Transactions on Programming Languages and Systems, (5) 3, July 1983.Google Scholar
  14. [Kan87]
    Kane, G., MIPS R2000 RISC Architecture, Prentice Hall, 1987.Google Scholar
  15. [Rob89]
    Robbins, K.A., Robbins, S., The Cray X-MP/Model 24 — A Case Study in Pipelined Architecture and Vector Processing, Lecture Notes in Computer Science No. 374, Springer 1989.Google Scholar
  16. [Sun87]
    The SPARC Architecture Manual, Sun Microsystems Inc., 1987.Google Scholar
  17. [Wir88]
    Wirth, N., “The Programming Language Oberon”, Software — Practice and Experience, (18) 7, July 1988 and Computersysteme ETH Zürich, Tech. Report No. 143, Nov. 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Robert Griesemer
    • 1
  1. 1.Institute for Computer Systems Swiss Federal Institute of TechnologyETH ZurichSwitzerland

Personalised recommendations