Switched Memory Architectures
and the
Generic Reconfigurable Affine Interconnection Lattice (GRAIL)
A Switched Memory Architecture (SMA) is a domain specific architecture
designed for direct hardware implementation of a class of compute-intensive
programs called Affine Control Loops (ACLs). An SMA is essentially, a
multi-dimensional grid of processors or processing elements (PEs), each one
consisting of (i) a functional unit that implements a data path to
execute the operations in the loop body, (ii) a control unit and (iii)
a set of memory banks to store the results of the computations. The
PEs are interconnected through a special interconnection network called the
GRAIL (Generic Reconfigurable Affine Interconnection Lattice).
Here is a three minute clip describing a
specific three-dimensional GRAIL. After seeing the clip you may have a number
of questions/comments, such as the following.
- Can I get the demo program? Yes, it is available for free
download (as is). It requires the QT library, and we have tested it on
Windows XP, Linux (both 32-bit and 64-bit) and a (Power PC) Mac (running OS
X). These following binaries (which may need some standard libraries) are
available for
for direct download.
You are also welcome to
the sources.
- What is the specific interconnection (i.e., the
source-to-destination mapping) that this demo GRAIL achieves? We
suggest that you could play around with the demo tool and figure it out for
yourself, but here's the spoiler.
- What can it do? The GRAIL is a generic interconnection
architecture. In the demo, we fixed a number of parameters:
- The number of dimensions of the architecture (two) and hence the
number of dimensions of the interconnection (three). In general, the
interconnect topology could have an arbitrary number of dimensions.
- The number of wires along each dimension. The demo has the minimum:
two perpendicular to the processor plane (for input and output), and one
in each of the other dimensions. This decision in turn, impacts the
number of stages (four stages from three switches ("bends") in each route.
However, other choices are possible.
- The initial configuration of the switches. In general, any of the
switches could be on or off, subject to write conflict constraints (as in
any crossbar).
- What can it do in general? The GRAIL is generic in the
following ways.
- It is capable of implementing ANY source to destination mapping
speccified as an affine function.
- In addition, it is possible to to deduce the settings of the switches
based on a program specification describing the precise dependencies (if a
program is an affine control loop, then all dependencies are affine
functions of program parameters and surrounding loop indices).
- Finally, since the dependencies in the program may change as the
computation proceeds, the GRAIL has a mechanism for dynamic reconfiguration
(the demo has this capability too, and you may have already played with it).
- Where can I find out more?
- We have
a paper
in LCTES 2008 (the copyright is now with ACM, but we could email
you a copy for your personal use if you don't have access to the
ACM Digital Library).
- We have patented the SMA/GRAIL technology. You may also contact us
by email