Problem Description

Adaptive computing systems constitute a new class of computing and communication systems which are composed of configurable hardware capable of system-level adaptation and to adapt to variable precision computation requirements One can visualize such systems to consist of field-programmable gate arrays and field-programmable interconnect chips. However, purely FPGA-based systems are usually unsuitable for complete algorithm implementation. In most computations there is a large amount of code that is executed relatively rarely, and attempting to map all of these functions into reprogrammable logic would be very logic-inefficient. Also, reconfigurable logic is much slower than a processor's built-in functional units for standard computations such as floating point and complex integer arithmetic, variable length shifts, and others.

The solution to this dilemma is to combine the advantages of both microprocessor based embedded systems (distributed and heterogeneous), specialized processors such as DSP processors, and FPGA resources into a single system. The microprocessors are used to support the bulk of the functionality required to implement an algorithm, while the reconfigurable logic is used to accelerate only the most critical computation kernels of the program. This would make a typical adaptive computing system a heterogeneous array of embedded processors, DSP processors and FPGAs.

A key question that needs to be addressed is how to map a given computation on such a heterogeneous architecture without expecting the application programmer to get into the low level details of the architecture or forcing him/her to understand the finer issues of mapping the applications on such a distributed heterogeneous platform. Recently, high-level languages such as MATLAB have become very popular to prototype algorithms in domains such as signal and image processing, the same domains which are the primary users of embedded systems. MATLAB provides a very high level language abstraction to express computations in a functional style which is not only intuitive but also concise.

The objective of the MATCH (MATlab Compiler for Heterogeneous computing systems) compiler project is to explore new ways, leveraging recent advancements in compiler technologies, to bridge the gap between high level programming interfaces and the flexibility of the low level control provided by the adaptive computing systems. Towards this end we are implementing and evaluating an experimental prototype of a software system that will take MATLAB descriptions of various embedded systems applications in signal and image processing, and automatically map them on to an adaptive computing environment consisting of field-programmable gate arrays, embedded processors and digital signal processors built from commercial off-the-shelf components.