Integer programming approaches to simultaneous scheduling and

Integer programming
approaches to simultaneous
scheduling and register
allocation on the C6X
Andrew Gilpin, Rebecca Hutchinson
April 12, 2005
Project Outline
• Formulate scheduling as an ILP.
• Sanity check formulation using CPLEX
to solve.
• Translate Pegasus format to ILP;
translate CPLEX solution back to
Pegasus.
• Formulate and incorporate register
allocation into the ILP and translation.
ILP Formulation
(examples of basic constraints)
ILP Formulation
(examples of dealing with the crosspath)
Modeling implications in ILP
Implementation Progress
• Formulation complete, implementation
halfway done
• Taking advantage of new technology
– Latest version of CPLEX allows “warmstarts”
– Allows us to use list-scheduling solution to
“seed” the ILP, hopefully yielding faster
solve times
• Hopefully we can extend this model to
include register allocation as well
Proposed evaluation
• Compare schedule lengths of our
algorithm to schedule sizes from
Leuper’s algorithm
– Test data: functions in test.c
• Also compare compile times
– We expect to be slower, but how much?
• Compare running times in simulator
References
• Wilken, Liu, and Heffernan. “Optimal Instruction
Scheulding Using Integer Programming.” PLDI 2000.
• Chang, Chen, and King. “Using Integer Linear
Programming for Instruction Scheduling and Register
Allocation in Multi-issue Processors.” Computers and
Mathematics with Applications, Vol 34(9):1-14.
• Goodwin and Wilken. “Optimal and Near-optimal
Global Register Allocation Using 0-1 Integer
Programming.” Software-Practice and Experience,
Vol 26(8), 929-965, August 1996.
• Texas Instruments: TMS320C62xx CPU and
Instruction Set Reference Guide, www.ti.com/sc/c6x,
1998