Phased Scheduling of Stream Programs
- Michal Karczmarek ,
- Bill Thies ,
- Saman Amarasinghe
Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES 2003). San Diego, CA |
As embedded DSP applications become more complex, it is increasingly important to provide high-level stream abstractions that can be compiled without sacrificing efficiency. In this paper, we describe scheduler support for StreamIt, a high-level language for signal processing applications. A StreamIt program consists of a set of autonomous filters that communicate with each other via FIFO queues. As in Synchronous Data ow (SDF), the input and output rates of each filter are known at compile time. However, unlike SDF, the stream graph is represented using hierarchical structures, each of which has a single input and a single output. We describe a scheduling algorithm that leverages the structure of StreamIt to provide a flexible tradeoff between code size and buer size. The algorithm describes the execution of each hierarchical unit as a set of phases. A complete cycle through the phases represents a single steady-state execution. By varying the granularity of a phase, our algorithm provides a continuum between single appearance schedules and minimum latency schedules. We demonstrate that a minimal latency schedule is effective in decreasing buer requirements for some applications, while the phased representation mitigates the associated increase in code size.