EE382C Embedded Software Systems - Single Appearance Schedules

Single appearance schedules implement the full repetition inherent in an SDF graph without requiring subroutines or code duplication. Connected consistent acyclic SDF graphs always have single appearance schedules. We can fire an actor that is initially enabled for all its repetitions, remove it from the graph, and repeat. For an arbitrarily connected consistent SDF graph, we can cluster the subgraph associated with each nontrivial strongly connected component. Clustering a strongly connected component into a single actor A never results in deadlock since there can be no cycle containing A. Since clustering all strongly connected components yields an acyclic graph, an arbitrarily connected consistent SDF graph has a valid single appearance schedule if and only if each strongly connected component has a valid single appearance schedule. [Bhattacharyya, Murthy, Lee; p. 85]

Given a single appearance schedule, we can reduce the buffer memory requirements by factoring out common factors in a schedule or loop. For example, (3(4A)(2B)) requires one-third of the buffering required by ((12A)(6B)) but also requires three times the loop initialization code. On a digital signal processor, the cost of a loop initialization is usually one pipeline flush. The key observation is that non-coprime schedules or loops result in higher buffer memory requirements than their factored counterparts. The schedule loops (3(4A)(2B)) and (10(7C)) are non-coprime since we could factor them into (6(2A)B) and (70C), respectively. The looped schedule (6AB)(3C) is non-coprime whereas (2A)(3B) is coprime. [Bhattacharyya, Murthy, Lee; pp. 70 and 82]

Note that reverse factoring may not yield an admissible schedule. Consider the homogeneous SDF graph with two nodes A and B shown in Figure 1 below. For this graph, (10AB) is a valid single appearance schedule; however, the reverse factored schedule (10A)(10B) terminates on the second invocation of A because there would be no tokens available on the input of A. [Bhattacharyya, Murthy, Lee; pp. 71] The same problem can exist in acyclic graphs, as shown in Figure 2.

     -------------    
    |             |   
    | 1           v  1
   ----          ---- 
  | A  |        | B  |
  |    |        |    |
   ----          ---- 
    ^ 1           |  1
    |             |   
     ----- D -----    
Figure 1: An example used to illustrate that reverse factoring is not always valid for single appearance schedules for non-acyclic graphs. The D on the feedback arc represents one token of delay. Reverse factoring the schedule (10 AB) yields (10 A)(10 B), which is not a valid schedule. [Figure 4.8 in Software Synthesis from Dataflow Graphs]

 ----  2      1  ----  1      1  ----
|    |          |    |          |    |
| A  | -------> | B  | -- D --> | C  |
|    |          |    |          |    |
 ----            ----            ----
Figure 2: An example used to illustrate that reverse factoring is not always valid for single appearance schedules for acyclic graphs. The D on the B-C arc represents one token of delay. Reverse factoring the schedule A (2 C B) yields A (2 C)(2 B), which is not a valid schedule.

Updated 04/19/04.