CAM8: a Parallel, Uniform, Scalable Architecture for Cellular Automata
Experimentation
CAM8 is the latest product of over a decade of Cellular Automata (CA)
machine and modeling research by the Information Mechanics group at
the MIT Lab for Computer Science. CAM8 is a parallel, uniform,
scalable architecture offering unprecedented performance in the
fine-grained modeling of spatially-extended systems. It provides a
general-purpose instrument for the systematic exploration of a new
band of the computational spectrum. We have provided hardware, in the
form of CAM8, and software, in the form of a programming environment
based on Forth, for experimentation in this realm. Preliminary forms
of documentation for the hardware and software are available.
The Official CAM8 Brochure
We have put together a short brochure
of applications that have been implemented on CAM8. It should provide a
good starting point for people who are wondering what the real power of
a cellular automata machine is!
ARPA Project Summary
Most of our CAM8 funding has been provided by ARPA. Our current CAM8 ARPA
project is titled CAM8:
Moving Towards Ultimate Computation.
The STEP Technical
Reference (in postscript form) provides an overview of CAM8 from the
STEP chips (ASICs) that embody its bit-slice architecture to the CBus that
inconnects CAM8 modules. Shown below is a CBus backplane along with one
module.
CAM8 uses a Sun workstation, which runs
the STEP control software, as a host. The programming environment is based
on a commercially available Forth interpreter for Sun
computers. The STEP
program is a Forth interpreter that has been extended and modified to support
primitives for programming the CAM8 hardware. We now have more
documentation available to help you get
started with your CAM8 programming. There is a growing Frequently
Asked Questions document as well as a list of basic
key commands and Forth words for using CAM8. Commands
for changing directories while inside the STEP software are provided
through the key interpreter. For those that have a bit more experience
programming CAM8 we have hints on using advanced features such as subcells,
the field compiler
and allocating
large numbers of LUTs. The standard distribution of demonstration experiments is available online, as are the latest working versions of all demonstrations.
There is a SunOS device
driver for the SBus interface card that connects CAM8 to the workstation.
The device driver has been tested with both sun4c and sun4m architecture
machines.
We have written an X-Windows utility, called XCAM
, that allows users to display the VGA output from CAM8 in a window on
the host workstation. It is based on the popular TCL
interpreter and TK
Motif-like widget toolkit. XCAM
allows users to capture images and save them to disk in Portable Pixmap
(PPM) format or Postscript format. We use the PBMPLUS toolkit to provide
this functionality. XCAM
also has the ability to dump an image directly to the XV program for further
processing and saving in a number of popular formats. We plan to use PPM
as our basic format and provide a program for converting between PPM and
pattern files
(the native image format for CAM8).
We are in the process of creating a library of C routines that will
be used to program CAM8. A library of routines (StepLib) for low-level
control of the CAM8 hardware is almost complete. When finished this library
will form the basis of a C programming environment for CAM8. It will also
allow us to use other extendable or embedable public domain interpreters.
Currently the publicly released version of the library consists only of
the PipeComm
communication package. We use as PipeComm
a basis for communication between the STEP software and external utlities
(such as XCAM).
PipeComm uses
UNIX pipes for a two-way, handshaking communication channel where the external
program acts as a recipient of requests from the STEP software. This package
will be extended to use Berkley UNIX sockets and improved so that it can
be used as a generalized communication protocol in the CAM8 programming
environment.
MIT Laboratory for Computer Science
Information Mechanics Group
Cambridge, MA 02139