
5. List Scheduling
All the scheduling algorithms we discussed till now were heuristics based on time constants, in terms of number of control steps. Now we discuss another heuristic scheduling algorithm which is resource constrained—List Scheduling.
Unlike ASAP, ALAP or FDS scheduling, which process operations individually in a fixed order, list scheduling handles each control step individually (in increasing order). List scheduling works by trying to schedule “maximum” number of operations in the control step, subject to resource constraints and data dependency. During the scheduling process, list scheduling uses a ready list (hence the name) to keep track of data-ready operations subject to data dependency. The ready list in a control step comprises those unscheduled operations that can be scheduled into the current control step without violating the data dependency (i.e., those operations whose immediate predecessors have been scheduled into earlier control steps). As long as there are operations in the ready list that meet the resource constraints, operations are chosen from that list and scheduled into the current control step. If more than one operation from ready list can be scheduled in a control step, but violates resource constraints, then choice among the ready operations is made by a priority function. One common priority function is “ALAPi - ASAPi ” (i.e., range where the operation can be scheduled). Operations with smaller ranges (i.e., smaller mobility) are given higher priority, since there are fewer possible control steps into which those operations can be scheduled, and since delaying them to a later control step would more likely increase the overall length of the schedule.
Algorithm for list scheduling is given in Algorithm 4.