Integrating Program Optimizations and Transformations with the Scheduling of Instruction Level Parallelism

Code optimizations and restructuring transformations are typically applied before scheduling to improve the quality of generated code. However, in some cases, the optimizations and transformations do not lead to a better schedule or may even adversely affect the schedule. In particular, optimizations for redundancy elimination and restructuring transformations for increasing parallelism are often accompanied with an increase in register pressure. Therefore their application in situations where register pressure is already too high may result in the generation of additional spill code. In this paper we present an integrated approach to scheduling that enables the selective application of optimizations and restructuring transformations by the scheduler when it determines their application to be beneficial. The integration is necessary because information that is used to determine the effects of optimizations and transformations on the schedule is only available during instruction scheduling. Our integrated scheduling approach is applicable to various types of global scheduling techniques; in this paper we present an integrated algorithm for scheduling superblocks.

[1]  Rajiv Gupta,et al.  GURRR: a global unified resource requirements representation , 1995 .

[2]  Rajiv Gupta,et al.  Region Scheduling: An Approach for Detecting and Redistributing Parallelism , 1990, IEEE Trans. Software Eng..

[3]  Alexandru Nicolau,et al.  Mutation Scheduling: A Unified Approach to Compiling for Fine-Grain Parallelism , 1994, LCPC.

[4]  Joseph A. Fisher,et al.  Trace Scheduling: A Technique for Global Microcode Compaction , 1981, IEEE Transactions on Computers.

[5]  Bernhard Steffen,et al.  Optimal code motion: theory and practice , 1994, TOPL.

[6]  Yale N. Patt,et al.  Checkpoint repair for out-of-order execution machines , 1987, ISCA '87.

[7]  Bernhard Steffen,et al.  Partial dead code elimination , 1994, PLDI '94.

[8]  Lori L. Pollock,et al.  A scheduler-sensitive global register allocator , 1993, Supercomputing '93. Proceedings.

[9]  C. Norris,et al.  A schedular-sensitive global register allocator , 1993, Supercomputing '93.

[10]  Edward S. Davidson,et al.  Highly concurrent scalar processing , 1986, ISCA 1986.

[11]  Shlomit S. Pinter,et al.  Register allocation with instruction scheduling: a new approach , 1996, Journal of Programming Languages.

[12]  Scott A. Mahlke,et al.  Using profile information to assist classic code optimizations , 1991, Softw. Pract. Exp..

[13]  Kemal Ebcioglu,et al.  VLIW compilation techniques in a superscalar environment , 1994, PLDI '94.

[14]  Rajiv Gupta,et al.  Resource Spackling: A Framework for Integrating Register Allocation in Local and Global Schedulers , 1994, IFIP PACT.