An Integer Linear Programming Model of Software Pipelining for the MIPS R8000 Processor

In parallelizing the code for high-performance processors, software pipelining of innermost loops is of fundamental importance. In order to benefit from software pipelining, two separate tasks need to be performed: (i) software pipelining proper (find the rate-optimal legal schedule), and (ii) register allocation (allocate registers to the found schedule). Software pipelining and register allocation can be formulated as an integer linear programming (ILP) problem, aiming to produce optimal schedules. In this paper, we discuss the application of the integer linear programming to software pipelining on the MIPS R8000 superscalar microprocessor. Some of the results were presented in the PLDI96 [14], where they were compared to the MIPSpro software pipeliner. In this paper we further extend the ILP model for the MIPS R8000 by including memory optimization and present the entire model in detail.

[1]  Alexandre E. Eichenberger,et al.  Optimum modulo schedules for minimum register requirements , 1995 .

[2]  Guang R. Gao,et al.  Scheduling and mapping: software pipelining in the presence of structural hazards , 1995, PLDI '95.

[3]  Joseph A. Fisher,et al.  Instruction-level parallelism : a special issue of The journal of supercomputing , 1993 .

[4]  Guang R. Gao,et al.  Minimizing register requirements under resource-constrained rate-optimal software pipelining , 1994, Proceedings of MICRO-27. The 27th Annual IEEE/ACM International Symposium on Microarchitecture.

[5]  Kent D. Wilken,et al.  Optimal and Near-Optimal Global Register Allocation Using 0-1 Integer Programming , 1996, Software, Practice & Experience.

[6]  Peter M. Kogge,et al.  The Architecture of Pipelined Computers , 1981 .

[7]  Alexandre E. Eichenberger,et al.  Optimum modulo schedules for minimum register requirements , 1995, ICS '95.

[8]  B. Ramakrishna Rau,et al.  Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing , 1981, MICRO 14.

[9]  Guang R. Gao,et al.  A novel framework of register allocation for software pipelining , 1993, POPL '93.

[10]  Ken Kennedy,et al.  Automatic Data Layout Using 0-1 Integer Programming , 1994, IFIP PACT.

[11]  Kent D. Wilken,et al.  Optimal and Near‐optimal Global Register Allocation Using 0–1 Integer Programming , 1996, Softw. Pract. Exp..

[12]  Erik R. Altman,et al.  Optimal software pipelining with function unit and register constraints , 1996 .

[13]  Guang R. Gao,et al.  Software pipelining showdown: optimal vs. heuristic methods in a production compiler , 1996, PLDI '96.