While altering the scope of instruction scheduling has a rich heritage in compiler literature, instruction scheduling algorithms have received little coverage in recent times. The widely held belief is that greedy heuristic techniques such as list scheduling are “good” enough for most practical purposes. The evidence supporting this belief is largely anecdotal with a few exceptions. In this paper we examine some hard evidence in support of list scheduling. To this end we present two alternative algorithms to list scheduling that use randomization: randomized backward forward list scheduling, and iterative repair. Using these alternative algorithms we are better able to examine the conditions under which list scheduling performs well and poorly. Specifically, we explore the efficacy of list scheduling in light of available parallelism, the list scheduling priority heuristic, and number of functional units. While the generic list scheduling algorithm does indeed perform quite well overall, there are important situations which may warrant the use of alternate algorithms.
[1]
Monte Zweben,et al.
Scheduling and rescheduling with iterative repair
,
1993,
IEEE Trans. Syst. Man Cybern..
[2]
Eugene C. Freuder,et al.
Learning to improve constraint-based scheduling
,
1994
.
[3]
Edward G. Coffman,et al.
Computer and job-shop scheduling theory
,
1976
.
[4]
Carla E. Brodley,et al.
Learning to Schedule Straight-Line Code
,
1997,
NIPS.
[5]
John R. Ellis,et al.
Bulldog: A Compiler for VLIW Architectures
,
1986
.
[6]
Bruce D. Shriver,et al.
Local Microcode Compaction Techniques
,
1980,
CSUR.
[7]
Sanjay M. Krishnamurthy,et al.
A brief survey of papers on scheduling for pipelined processors
,
1990,
SIGP.
[8]
Philip Schielke,et al.
Issues in Instruction Scheduling
,
1998
.
[9]
Brian W. Kernighan,et al.
An Effective Heuristic Algorithm for the Traveling-Salesman Problem
,
1973,
Oper. Res..