Skip to main content

Phase Ordering of Register Allocation and Instruction Scheduling

  • Conference paper

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

Abstract

Register allocation and instruction scheduling are often separated due to the complexity of each. But if register allocation is performed before scheduling, it may introduce artificial data precedence, keeping the instruction scheduler from doing its best job. On the other hand, waiting until after scheduling to perform register allocation may produce impossible schedules. In this paper we present a unified approach to instruction scheduling and global (beyond basic blocks) register allocation.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Cocke J and Markstein V. The evolution of RISC technology at IBM. IBM J. Research and Development 34: 1 (January 1990), pp. 4–11.

    Article  Google Scholar 

  2. Hennessy JL and Patterson DA. Computer Architecture A Quantitative Approach. Morgan Kaufmann Publishers, Inc., San Mateo, Calif., 1990.

    Google Scholar 

  3. Colwell RP, Nix RP, O’Donnell JJ, Papworth DB, and Rodman PK. A VLIW architecture for a trace scheduling compiler. In Proc. 2 nd Intl. Conf Architectural Support for Programming Languages and Operation Systems (ASPLOS II) (Palo Alto, October 1987 ). ACM, New York, 1987, pp. 180–192.

    Google Scholar 

  4. Colwell RP, Hall WE, Joshi CS, Papworth DB, Rodman PK, and Tomes JE. Architecture and implementation of a VLIW supercomputer. In Proc. IEEE Supercomputing ‘80 Conference, IEEE, New York, 1990, pp. 910–919.

    Chapter  Google Scholar 

  5. Chaitin GJ, Auslander MA, Chandra AK, Cocke J, Hopkins ME, and Markstein PW. Register allocation via coloring. Comput. Lang. 6, 1 (January 1981), pp. 47–57.

    Article  Google Scholar 

  6. Chaitin GJ. Register allocation and spilling via graph coloring. In Proc. ACM SIGPLAN ‘82 Symp. Compiler Construction (Boston, June 1982 ). ACM, New York, 1982, pp. 98–105.

    Google Scholar 

  7. Bernstein D, Goldin DQ, Golumbic MC, Krawczyk H, Mansour Y, Nahshon I, and Pinter RY. Spill code minimization techniques for optimizing compilers. In Proc. ACM SIGPLAN ‘89 Conf. Programming Language Design and Implementation (Portland, June 1989 ). ACM, New York, 1989, pp. 258–263.

    Google Scholar 

  8. Briggs P, Cooper KD, Kennedy K, and Torczon L. Coloring heuristics for register allocation. In Proc. ACM SIGPLAN ‘89 Cont. Programming Language Design and Implementation (Portland, June 1989 ). ACM, New York, 1989, pp. 275–284.

    Google Scholar 

  9. Chow FC and Hennessy JL. The priority-based coloring approach to register allocation. ACM Trans. Program. Lang Syst. 12, 4 (October 1990), pp. 501–536.

    Article  Google Scholar 

  10. Fisher JA. The optimization of horizontal microcode within and beyond basic blocks: An application of processor scheduling with resources. Ph.D. Thesis, New York Univ., New York, N.Y., 1979.

    Google Scholar 

  11. Fisher JA., Ellis JR, Ruttenberg JC, and Nicolau A. Parallel processing: A smart compiler and a dumb machine. In Proc. ACM SIGPLAN’84 Symp. Compiler Construction (Montreal, June 1984 ). ACM, New York, 1984, pp. 37–47.

    Google Scholar 

  12. Nicolau A. Parallelism, memory anti-aliasing and correctness for trace scheduling compilers. Ph.D. Thesis, Yale Univ., New Haven, Conn., 1984.

    Google Scholar 

  13. Ellis JR. Bulldog A Compiler for VLIW Architectures. MIT Press, Cambridge, MA, 1986. Also Ph.D. Thesis, Yale Univ., New Haven, Conn., February 1985.

    Google Scholar 

  14. Charlesworth AE. An approach to scientific array processing: the architectural design of the AP-120B/FPS164 family. IEEE Computer 14: 9 (September 1981), pp. 18–27.

    Article  Google Scholar 

  15. Rau BR and Glaeser CD. Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing. In Proc. 14 th Annual MicroprogrammingWorkshop (October 1981). IEEE, 1981, pp. 183–198.

    Google Scholar 

  16. Aiken A and Nicolau A. Optimal loop parallelization. In Proc. ACM SIGPLAN ‘88 Conf Programming Language Design and Implementation (Atlanta, June 88 ). ACM, New York, 1988, pp. 308–317.

    Google Scholar 

  17. Aiken A. Compaction-based parallelization. Ph.D. Thesis, Cornell Univ, Ithaca, N.Y., 1988.

    Google Scholar 

  18. Lam M. Software Pipelining: An effective scheduling technique for VLIW machines. In Proc. ACM SIGPLAN ‘88 Conf. Programming Language Design and Implementation (Atlanta, June 1988 ). ACM, New York, 1988, pp. 318–328.

    Google Scholar 

  19. Dehnert JC, Hsu PY, and Bratt JP. Overlapped loop support in the Cydra 5. In Proc. 3 rd Intl. Conf. Architectural Support for Programming Languages and Operation Systems (ASPLOS III) (Boston, April 1989 ). ACM, New York, 1989, pp. 26–39.

    Google Scholar 

  20. Uniejewski J. SPEC Benchmark Suite: Designed for today’s advanced systems. SPEC Newsletter 1,1 (Fall 1989 ).

    Google Scholar 

  21. Cmelik RF, Kong SI, Ditzel DR, and Kelly EJ. An analysis of MIPS and SPARC instruction set utilization on the SPEC benchmarks. In Proc. 4 th Intl. Conf. Architectural Support for Programming Languages and Operating Systems (ASPLOS IV) (Santa Clara, April 1991 ). ACM, New York, 1991, pp. 290–302.

    Google Scholar 

  22. McMahon FH. The Livermore Fortran Kernels: A computer test of the numerical performance range. Tech. Report UCRL-53745, University of California, Lawrence Livermore National Laboratory, December 1986.

    Google Scholar 

  23. Feo it An analysis of the computational and parallel complexity of the Livermore Loops. Parallel Computing 7(1988), pp. 163–185.

    Google Scholar 

  24. Callahan D and Koblenz B. Register allocation via hierarchical graph coloring. In Proc. ACM SIGPLAN ‘81 Conf Programming Language Design and Implementation (Toronto, June 91 ). ACM, New York, 1991, pp. 192–203.

    Google Scholar 

  25. Briggs P, Cooper K, and Torczon L. Aggressive live range splitting. Tech. report, Rice Univ., Houston, Tex., 1991.

    Google Scholar 

  26. Bradlee DG, Eggers SJ, and Henry RR. Integrating register allocation and instruction scheduling for RISCs. In Proc. 4th Intl. Conf. Architectural Support for Programming Languages and Operating Systems (ASPLOS IV) (Santa Clara, April 1991 ). ACM, New York, 1991. pp. 122–131.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag London

About this paper

Cite this paper

Freudenberger, S.M., Ruttenberg, J.C. (1992). Phase Ordering of Register Allocation and Instruction Scheduling. In: Giegerich, R., Graham, S.L. (eds) Code Generation — Concepts, Tools, Techniques. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3501-2_9

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-3501-2_9

  • Publisher Name: Springer, London

  • Print ISBN: 978-3-540-19757-7

  • Online ISBN: 978-1-4471-3501-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics