Abstract
An algorithm for integrating instruction scheduling and register allocation must support mechanisms for detecting excessive register and functional unit demands and applying reductions for lessening these demands. The excessive demands for functional units can be detected by identifying the instructions that can execute in parallel, and can be reduced by scheduling some of these instructions sequentially. The excessive demands for registers can be detected on-the-fly while scheduling by maintaining register pressure values or may be detected prior to scheduling using an appropriate representation such as parallel interference graphs or register reuse dags. Reductions in excessive register demands can be achieved by live range spilling or live range splitting. However, existing integrated algorithms that are based upon mechanisms other than register reuse dags do not employ live range splitting. In this paper, we demonstrate that for integrated algorithms, register reuse dags are more effective than either on-the-fly computation of register pressure or interference graphs and that live range splitting is more effective than live range spilling. Moreover the choice of mechanisms greatly impacts on the performance of an integrated algorithm.
Supported in part by NSF Grants CCR-9402226 and CCR-9808590 to the Univ. of Pittsburgh.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
David A. Berson, Unification of register allocation and instruction scheduling in compilers for fine grain architectures. Ph.D. Thesis, Dept. of Computer Science, University of Pittsburgh, Pittsburgh, PA, November 1996.
David A. Berson, Rajiv Gupta, and Mary Lou Soffa. GURRR: A global unified resource requirements representation. In Proc. of ACM Workshop on Intermediate Representations, Sigplan Notices, vol. 30, pages 23–34, April 1995.
David A. Berson, Rajiv Gupta, and Mary Lou Soffa. Resource Spackling: A framework for integrating register allocation in local and global schedulers. In Proc. of IFIP WG 10.3 Working Conference on Parallel Architectures and Compilation Techniques, pages 135–146, 1994.
David A. Berson, Rajiv Gupta, and Mary Lou Soffa. URSA: A Unified ReSource Allocator for registers and functional units in VLIW architectures. In Proc. of IFIP WG 10.3 Working Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism, pages 243–254, 1993.
Preston Briggs. Register allocation via graph coloring. Ph.D. Thesis, Dept. of Computer Science, Rice University, Houston, TX, April 1992. 257
David Bradlee, Susan Eggers, and Robert Henry. Integrating register allocation and instruction scheduling for riscs. In Proceedings of ASPLOS, April 1991.
Claude-Nicholas Fiechter, PDG C Compiler. Technical Report, Dept. of Computer Science, University of Pittsburgh, Pittsburgh, PA, 1993.
G. J. Chaitin, M. A. Auslander, A. K. Chandra, J. Cocke, M. E. Hopkins, and P. W. Markstein. Register allocation via coloring. Computer Languages, 6(1):47–58, 1981.
F. Chow and J. Hennessy. Register allocation by priority-based coloring. ACM Trans. Prog. Lang. and Systems, 12(4):501–536, 1990.
Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. The program dependence graph and its use in optimization. ACM Trans. Prog. Lang. and Systems, 9(3):319–349, 1987.
James R. Goodman and Wie-Chung Hsu. Code scheduling and register allocation in large basic blocks. In Proc. of ACM Supercomputing Conf., pages 442–452, 1988.
Cindy Norris and Lori L. Pollock. Register allocation over the program dependence graph. In Proc. of Sigplan’ 94 Conf. on Programming Language Design and Implementation, pages 266–277, 1994.
Cindy Norris and Lori L. Pollock. An experimental study of several cooperative register allocation and instruction scheduling strategies. Proceedings of MICRO-28, Nov. 1995.
Cindy Norris and Lori L. Pollock. A scheduler-sensitive global register allocator. Proceedings of Supercomputing’93, pages 804–813, Portland, Oregon, 1993.
Shlomit S. Pinter. Register allocation with instruction scheduling: A new approach. In Proc. of Sigplan’ 93 Conf. on Programming Language Design and Implementation, pages 248–257, 1993.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Berson, D.A., Gupta, R., Soffa, M.L. (1999). Integrated Instruction Scheduling and Register Allocation Techniques. In: Chatterjee, S., et al. Languages and Compilers for Parallel Computing. LCPC 1998. Lecture Notes in Computer Science, vol 1656. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48319-5_16
Download citation
DOI: https://doi.org/10.1007/3-540-48319-5_16
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66426-0
Online ISBN: 978-3-540-48319-9
eBook Packages: Springer Book Archive