next up previous contents
Next: Online Scheduled Routing Up: Operator Implementations Previous: Implementation Types

Meta-Implementations

  The compiler can also create meta-implementations out of existing implementations to support operators with data-dependent arguments. There are two basic ways to do this:[*]

Notice that the multiple-phase meta-implementation, in particular, may cause an explosion of possible phases that need to be stored in the processor's memory; the number of subphases accumulates as the product of the runtime value range of each operator's operand(s). For just two operators, each with one operand that can take on any of 256 values (for example), there are already 64K possible subphases for one phase. Accordingly, the compiler can be given a limit on the number of phases per node, so as not to overwhelm the node memory with phase data.

Choosing which subphase to load is fairly straightforward. Each load function is responsible for taking its argument and using it to generating an operator index (in the range 0...k-1 , where k is the number of subphases associated with the operator) and storing it in memory. Once all the operator indices have been generated for a phase, the last load function invoked aggregates them into a single subphase index used to pick one subphase from the set and issue the router command to start running that subphase.


next up previous contents
Next: Online Scheduled Routing Up: Operator Implementations Previous: Implementation Types
Back to Chris Metcalf's home page