Minimum Register Instruction Scheduling: A New Approach for Dynamic Instruction Issue Processors
Modern superscalar architectures with dynamic scheduling and register renaming capabilities have introduced subtle but important changes into the tradeoffs between compile-time register allocation and instruction scheduling. In particular, it is perhaps not wise to increase the degree of parallelism of the static instruction schedule at the expense of excessive register pressure which may result in additional spill code. To the contrary, it may even be beneficial to reduce the register pressure at the expense of constraining the degree of parallelism of the static instruction schedule. This leads to the following interesting problem: given a data dependence graph (DDG) G, can we derive a schedule S for G that uses the least number of registers ?
In this paper, we present a heuristic approach to compute the near-optimal number of registers required for a DDG G (under all possible legal schedules). We propose an extended list-scheduling algorithm which uses the above number of required registers as a guide to derive a schedule for G that uses as few registers as possible. Based on such an algorithm, an integrated approach for register allocation and instruction scheduling for modern superscalar architectures can be developed.
KeywordsList Schedule Minimum Register Register Allocation Instruction Schedule List Scheduler
Unable to display preview. Download preview PDF.
- 1.A. V. Aho, R. Sethi, and J. D. Ullman. Compilers —Principles, Techniques, and Tools. Addison-Wesley Publishing Co., Reading, MA, corrected edition, 1988.Google Scholar
- 2.D. Berson, R. Gupta, and M. L. Soffa. URSA: A Unified ReSource Allocator for registers and functional units in VLIW architectures. In Proc. of the Conf. on Parallel Architectures and Compilation Techniques, PACT’ 98, Paris, France, June 1998.Google Scholar
- 3.D. Berson, R. Gupta, and M. L. Soffa. Integrated instruction scheduling and register allocation techniques. In Proc. of the Eleventh International Workshop on Languages and Compilers for Parallel Computing, LNCS, Springer Verlag, Chapel Hill, NC, Aug. 1998.Google Scholar
- 4.D. G. Bradlee, S. J. Eggers, and R. R. Henry. Integrating register allocation and instruction scheduling for RISCs. In Proc. of the Fourth Intl. Conf. on Architectural Support for Programming Languages and Operating Systems, pages 122–131, Santa Clara, CA, Apr. 1991.Google Scholar
- 5.P. Briggs, K. D. Cooper, and L. Torczon. Rematerialization. In Proc. of the ACM SIGPLAN’ 92 Conf. on Programming Language Design and Implementation, pages 311–321, San Francisco, CA, June 1992.Google Scholar
- 6.G. J. Chaitin. Register allocation and spilling via graph coloring. In Proc. of the SIGPLAN’ 82 Symp. on Compiler Construction, pages 98–105, Boston, MA, June 1982.Google Scholar
- 7.P. P. Chang, D. M. Lavery, S. A. Mahlke, W. Y. Chen, and W. W. Hwu The importance of prepass code scheduling for superscalar and superpipelined processors IEEE Transactions on Computers, 44(3):353–370, March 1995.Google Scholar
- 8.L. George and A. W. Appel. Iterated register coalescing. In Conf. Record of the 23rd ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pages 208–218, St. Petersburg, FL, Jan. 1996.Google Scholar
- 9.P. B. Gibbons and S. S. Muchnick. Efficient instruction scheduling for a pipelined architecture. In Proc. of the SIGPLAN’ 86 Symp. on Compiler Construction, pages 11–16, Palo Alto, CA, June 1986.Google Scholar
- 11.J. R. Goodman and W-C. Hsu. Code scheduling and register allocation in large basic blocks. In Conf. Proc., 1988 Intl. Conf. on Supercomputing, pages 442–452, St. Malo, France, July 1988.Google Scholar
- 12.R. Govindarajan, C. Zhang, and G. R. Gao. Minimum register instruction scheduling: A new approach for dynamic instruction issue processors. CAPSL Technical Memo, Dept. of Electrical and Computer Engg., University of Delaware, Newark, DE, July 1999.Google Scholar
- 13.Madhavi G. Valluri and R. Govindarajan. Evaluating register allocation and instruction scheduling techniques in out-of-order issue processors. in Proc. of the Conf. on Parallel Architectures and Compilation Techniques, PACT’ 99, Newport Beach, CA, Oct., 1999.Google Scholar
- 14.S.S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, Inc., San Francisco, CA, 1997.Google Scholar
- 15.C. Norris and L. L. Pollock. Register allocation over the Program Dependence Graph. In Proc. of the ACM SIGPLAN’ 94 Conf. on Programming Language Design and Implementation, pages 266–277, Orlando, FL, June 20–24, 1994.Google Scholar
- 16.C. Norris and L. L. Pollock. An experimental study of several cooperative register allocation and instruction scheduling strategies. In Proc. of the 28th Ann. Intl. Symp. on Microarchitecture, pages 169–179, Ann Arbor, MI, Nov. 1995.Google Scholar
- 17.S. S. Pinter. Register allocation with instruction scheduling: A new approach. In Proc. of the ACM SIGPLAN’ 93 Conf. on Programming Language Design and Implementation, pages 248–257, Albuquerque, NM, June 1993.Google Scholar
- 18.J.E. Smith and G. Sohi. The microarchitecture of superscalar processors. Proc. of the IEEE, 83(12):1609–1624, Dec. 1995.Google Scholar
- 19.Raúl Silvera, Jian Wang, Guang R. Gao, and R. Govindarajan. A register pressure sensitive instruction scheduler for dynamic issue processors. In Proc. of the Conf. on Parallel Architectures and Compilation Techniques, PACT’ 97, pages 78–89, San Francisco, CA, June 1997.Google Scholar
- 20.H. S. Warren, Jr. Instruction scheduling for the IBM RISC System/6000 processor. IBM Jl. of Research and Development, 34(1):85–92, Jan. 1990.Google Scholar