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
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.