Skip to main content
Log in

Experiences with Cooperating Register Allocation and Instruction Scheduling

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

Compile-time reordering of low level instructions is successful in achieving large increases in performance of programs on fine grain parallel machines. However, because of the interdependences between instruction scheduling and register allocation, a lack of cooperation between the scheduler and register allocator can result in generating code that contains excess register spills and/or a lower degree of parallelism than actually achievable. This paper describes a strategy for providing cooperation between register allocation and both global and local instruction scheduling. We experimentally compare this strategy with other cooperative and uncooperative scenarios.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

REFERENCES

  1. J. L. Hennessy and Thomas Gross, Postpass Code Optimization of Pipeline Constraints, ACM Trans. Progr. Lang. Syst. 5(3):422–448 (July 1983).

    Google Scholar 

  2. P. B. Gibbons and S. S. Muchnick, Efficient Instruction Scheduling for a Pipelined Architecture, Proc. SIGPLAN Symp. Compiler Construction (June 1986).

  3. S. Weiss and J. E. Smith, A Study of Scalar Compilation Techniques for Pipelined Supercomputers, Second Int'l. Conf. Architectural Support for Progr. Lang. Oper. Syst. (October 1987).

  4. S. Abraham and K. Padmanabhan, Instruction Reorganization for Variable-Length Pipelined Microprocessor, Proc. Int'l. Conf. Computer Design, New York (October 1988).

  5. David Bernstein, An Improved Approximation Algorithm for Scheduling Pipelined Machines, Int'l. Conf. Parallel Processing, St. Charles, Illinois (August 1988).

  6. Steven J. Beaty, Lookahead Scheduling, Proc. 25th Int'l. Symp. Microarchitecture, Portland, Oregon, pp. 256–259 (1992).

  7. Rajiv Gupta and Mary Lou Soffa, Region Scheduling: An Approach for Detecting and Redistributing Parallelism, IEEE Trans. Software Engineering 16(4):421–431 (April 1990).

    Google Scholar 

  8. Monica Lam, Software Pipelining: An effective Scheduling Technique for VLIW Machines, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation, Atlanta, Georgia (June 1988).

  9. David Bernstein and Michael Rodeh, Global Instruction Scheduling for Superscalar Machines, Proc. SIGPLAN '91 Conf. Progr. Lang. Design and Implementation, Toronto, Canada (June 1991).

  10. J. A. Fisher, Trace Scheduling: A Technique for Global Microcode Compaction, IEEE Trans. Computers 30(7):478–490 (July 1981).

    Google Scholar 

  11. Philip H. Sweany and Steven J. Beaty, Dominator-Path Scheduling—A Global Scheduling Method, Proc. 25th Int'l. Symp. Microarchitecture, Portland, Oregon, pp. 260–263 (1992).

  12. Wei Chung Hsu, Charles N. Fisher, and James R. Goodman, On the Minimization of Loads/Stores in Local Register Allocation, IEEE Trans. Software Engineering 15(10):1252–1260 (1989).

    Google Scholar 

  13. Frederick Chow and John Hennessy, The Priority-Based Coloring Approach to Register Allocation, ACM Trans. Progr. Lang. Syst. 12(4) (October 1990).

  14. Gregory Chaitin, Marc Auslander, Ashok K. Chandra, John Cocke, Martin E. Hopkins, and Peter W. Markstein, Register Allocation via Coloring, Computer Languages 6:47–57 (January 1981).

    Google Scholar 

  15. David Callahan and Brian Koblenz, Register Allocation via Hierarchical Graph Coloring, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation, Toronto, Canada, pp. 192–203 (June 1991).

  16. Todd A. Proebsting and Charles N. Fisher, Probabilistic Register Allocation, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation, San Francisco, California, pp. 300–310 (June 1992).

  17. Preston Briggs, Keith D. Cooper, and Linda Torczon, Rematerialization, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation (June 1992).

  18. Laurie J. Hendren, Guang R. Gao, Erik R. Altman, and Chandrika Mukerji, A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs, Int'l. Workshop on Compiler Construction, Paderdorn, Germany (October 1992).

  19. Cindy Norris and Lori L. Pollock, Register Allocation Over the Program Dependence graph, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation (June 1994).

  20. P. Kolte and Mary Jean Harrold, Load/Store Range Analysis for Global Register Allocation, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation (June 1993).

  21. Rajiv Gupta, Mary Lou Soffa, and Tim Steele, Register Allocation via Clique Separators, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation, Portland, Oregon (June 1989).

  22. David W. Wall, Register Allocation at Link Time, SIGPLAN Notices 21(7):264–275 (July 1986).

    Google Scholar 

  23. Peter Steenkiste and John Hennessy, A Simple Interprocedural Register Allocation Algorithm and Its Effectiveness for LISP, AC Trans. Progr. Lang. Syst. (January 1989).

  24. James R. Goodman and Wei-Chung Hsu, Code Scheduling and Register Allocation in Large Basic Blocks, Int'l. Conf. Supercomputing, Orlando, Florida, pp. 442–452 (November 1988).

  25. David G. Bradlee, Susan J. Eggers, and Robert R. Henry, Integrating Register Allocation and Instruction Scheduling for RISCs, Fourth Int' l. Conf. Architectural Support for Progr. Languages and Oper. Syst., Santa Carla, California, pp. 122–131 ( April 1991).

  26. Cindy Norris and Lori L. Pollock, A Scheduler-Sensitive Global Register Allocator, Supercomputing Proc. Portland, Oregon (November 1993).

  27. S. S. Pinter, Register Allocation with Instruction Scheduling: A New Approach, Proc. SIGPLAN Conf. Progr. Lang. Design and Implementation (June 1993).

  28. S. M. Freudenberger and J. C. Ruttenberg, Phase Ordering of Register Allocation and Instruction Scheduling, Code Generation—Concepts, Tools, Techniques: Proc. Int' l. Workshop on Code Generation (May 1992).

  29. K. Ebcioglu and A. Nicolau, A Global Resource-Constrained Parallelization Technique, Proc. ACM SIGARCH ICS-89: Int'l. Conf. Supercomputing, Crete, Greece (1989).

  30. David A. Berson, Rajiv Gupta, and Mary Lou Soffa, URSA: A Unified Resource Allocator for REgisters and Functional Units in VLIW Architectures, IFIP Working Conf. Architectures and Compilation Techniques for Fine and Medium Grain Parallelism, Orlando, Florida ( January 1993).

  31. David A. Berson, Rajiv Gupta, and Mary Lou Soffa, Resource Spackling: A Framework for Integrating Register Allocation in Local and Global Schedulers, PACT '94: Int'l. Conf. Parallel Architectures and Compilation Techniques, Montreal, Canada (August 1994).

  32. Cindy Norris and Lori L. Pollock, Register Allocation Sensitive Region Scheduling, PACT '95: Int'l. Conf. Parallel Architectures and Compilation Techniques, Limassol, Cyprus (June 1995).

  33. Cindy Norris, Cooperative Register Allocation and Instruction Scheduling, Ph.D. Thesis, University of Delaware (May 1995).

  34. S. Novack and A. Nicolau, Mutation Scheduling: A Unified Approach to Compiling for Fine-Grain Parallelism, Languages and Compilers for Parallel Computing, Springer-Verlag, pp. 16–30 (1994).

  35. Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren, The Program Dependence Graph and Its Use in Optimization, ACM Trans. Progr. Lang. Syst. 9(3):319–349 (1987).

    Google Scholar 

  36. K. J. Ottenstein, An Intermediate Program form Based on a Cyclic Data-Dependence Graph, Technical Report 81–1, Department of Computer Science, Michigan Tech. University (1981).

  37. W. Baxter and H. R. Bauer, III, The Program Dependence Graph and Vectorization, Proc. 16th Ann. ACM SIGACT/SIGPLAN Symp. Principles of Progr. Lang., Austin, Texas (1989).

  38. J. Warren, A Hierarchical Basis for Reordering Transformations, Proc. 11th Ann. ACM Symp. Principles of Progr. Lang., pp. 272–282 (1984).

  39. M. J. Wolfe, Research Monographs in Parallel and Distributed Computing, MIT Press (1989).

  40. F. E. Allen, M. Burke, P. Charles, R. Cytron, and J. Ferrante, An Overview of the PTRAN Analysis System for Multiprocessing, J. Parallel and Distributed Computing 5:617–640 (1988).

    Google Scholar 

  41. V. H. Allan, J. Janardhan, R. M. Lee, and M. Srinivas, Enhanced Region Scheduling on a Program Dependence Graph, Proc. 25th Int'l. Symp. Microarchitecture, Portland, Oregon, pp. 72–80 (1992).

  42. A. Aiken and A. Nicolau, A Development Environment for Horizontal Microcode, IEEE Trans. Software Engineering 14(5):584–594 (May 1988).

    Google Scholar 

  43. Jayashree Janardhan, Enhanced Region Scheduling for Instruction Level Parallelism, Utah State University Master's Thesis (1992).

  44. Ron Cytron, Jeanne Ferrante, Barry Rosen, and Mark Wegman, Efficiently Computing Static Single Assignment Form and the Control Dependence Graph, ACM Trans. Progr. Lang. Syst. 13(4):451–490 (October 1991).

    Google Scholar 

Download references

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Norris, C., Pollock, L.L. Experiences with Cooperating Register Allocation and Instruction Scheduling. International Journal of Parallel Programming 26, 241–283 (1998). https://doi.org/10.1023/A:1018738112639

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1018738112639

Navigation