previous up next index
Previous: The MagicEight Programming Model Up: My Thesis Next: Stream Mechanism

MagicEight Program Elements

The task token is the basic unit of execution in the MagicEight architecture. It contains the tag of the function being called, the data the function is being called to process, and where the output goes. Non-constant input parameters of the task and its output are represented by the tag of a stream and the appropriate context (multidimensional volume) of the stream to process.

The function referenced by each task token is an object representing an ``instruction sequence'' of an algorithm, with multiple machine implementations. It defines the input and output parameters that a particular function expects, the stream parameter data access patterns used, and information about different implementations of the function. The implementation-specific information includes which machine it runs on, statistics about how fast it runs on that machine, and the tag of the code object with the actual ``instructions'' for that machine. The information contained in the function object is used to properly schedule a task applying this function.

The code objects are typically specified in an imperative manner such as C -- to take advantage of modern compilers (especially on VLIW processors) -- and are pre-compiled into extended cross-platform libraries. Specialized processors are supported as well by these libraries. An interface routine is provided for each accelerated function which configures the specialized processor as needed, then takes the function parameters and writes them to the specialized processor. The reconfiguration time for a specialized processor is considered by the scheduling algorithm, as it may be considerable in some cases (e.g. FPGAs).



wad@media.mit.edu