Friday, February 04, 2005

First Entry...

3 Feb 2005

Why a Blog?

Well, why not? Seriously, our "regular newsletters" have been less than regular so far. Writing periodic summaries of interesting, important developments is a challenge, mainly in terms of choosing what to include and what to skip. More and more these days, many people dislike email, so how do we decide what to email people about, given everything that has been happening Cell Matrix-wise?


With a blog, on the other hand, one is somewhat freed from those decisions. By making daily entries in a running journal, we may achieve a more complete picture of Cell Matrix developments, while allowing people to browse these developments at their own pace, at times of their own choosing.


What is cellmatrix.blogspot.com?

This blog is a running account of Cell Matrix-related developments, activities, ideas, thoughts, and so on. One goal is to keep interested parties informed on what is happening, what we're working on, what's in the works. Another is to provide a way for others to contribute their ideas, thoughts, questions, and so on. A third goal is to produce a written journal of this adventure that is the Cell Matrix research and development effort.


What this blog is not:

Among other things, this blog is not intended as a tutorial on the Cell Matrix. cellmatrix.com is the place to find technical materials, overviews, and so on related to the Cell Matrix architecture. We plan to increase the amount of tutorial material available on cellmatrix.com in the coming months. In the meantime, we're always happy to answer questions about the Cell Matrix, so if you have questions, please ask!


This blog is also not an attempt to summarize everything that's happened so far in this effort. There is too much in the past, and frankly, the most interesting stuff is yet to come. We'll thus be focusing on what is happening now, and what is planned in the future.


Having said that, I will make two concessions in spite of the above: a very brief summary of the Cell Matrix, and a quick synopsis o the most recent developments (mostly ongoing ones).


Brief Cell Matrix Overview

Especially for those of you who have stumbled across this bog, and are unsure what a Cell Matrix is, this is for you. The Cell Matrix is many things. It is an architecture for a type of computing system. It is a design for a piece of hardware that is both general purpose, and able to analyze and modify its own purpose. It is such hardware itself. It is the software that controls the hardware. It is, in fact, a mixing of hardware and software, in a way that makes the two sometimes indistinguishable from each other. At a higher level, it is a philosophy. It is a guiding principle for a different way of doing things.


In more concrete terms, the Cell Matrix describes a computing system, built around the idea of very general-purpose, re-usable hardware. The behavior of such hardware is not fixed in the hardware itself. Instead, the specific behavior of the hardware is defined by something like software. This is perhaps similar to a conventional computer, but in a Cell Matrix, the hardware and software is not as separate. Computers use hardware to process data. In a Cell Matrix, hardware can become data, which is then processed by other hardware. That data can then be turned back into new hardware, which can in turn process other data/hardware, and so on. The mixing of hardware and software is what makes a Cell Matrix unique, and unlike other reconfigurable hardware systems such as FPGAs.


In more practical terms, the Cell Matrix can be a massively parallel processing system. It has features that make it naturally fault resistant, and its hardware/software interaction leads to interesting fault-handling techniques. It can be used to implement dynamic systems: self-tuning processors that optimize based on the problem at hand; systems that adapt to changes in the problem space; systems whose hardware circuitry evolves over time, being chosen from an evolving population of candidate circuits. And it can be used as general-purpose logic, to implement very contemporary circuits (arithmetic processors, CPUs, etc.), though perhaps at very non-contemporary scales (trillions or trillions of trillions of computing elements).


More specific details can be found on our web site, at cellmatrix.com. Look at the papers and publications for various levels of details ("Ring Around the Pig" is a good high-level overview, while the patents are the most detailed descriptions.)


Very Recent Events

Like a letter exchange that has grown too infrequent, it's difficult to know how to catch up with everything that has been missed. In some cases, it's best not to try, but to simply continue from the present. That is the approach I'll take here, though I may return to past events as they seem relevant.


Therefore, I'll describe here just a few of the very recent events, particularly those that are still ongoing. This will be the general form of this blog, at least for now.


  • We now have circuits for integer arithmetic on the Cell Matrix. Addition and subtraction require one cell per bit, for a basic ripple-carry circuit. Multiplication and division are O(n*n) for n-bit numbers. Specifically, multiplying two n bits numbers requires roughly 8*n*n cells. Division is comparable in size, depending on the word sizes allowed for quotient, dividend, etc. The circuits are pure dataflow: no looping. Inputs are set, and the circuitry immediately re-computes the result.

  • We've recently developed floating point circuits (add, subtract, multiply) for the Cell Matrix. These are built on top of the integer arithmetic circuits, but are a bit larger. We've mostly stuck to IEEE-754 32-bit format, except for the un-normalized forms, NAN, and +/- infinity. We're still working a few kinks out of these circuits. These too are pure dataflow.

  • We used the above to create a polynomial circuit, for evaluating single-precision polynomials. The coefficients of the polynomial are stored in a block of cells that output 1 or 0 for each bit of the constant. By storing coefficients for the appropriate Taylor Series, we can now compute exp(x), sin(x), etc. This circuit does loop. For n coefficients, a total of n multiplications and n additions are performed, with one multiply/add pair per coefficient.

  • Cell Matrix Hardware. We have finished development of our "MOD 88" boards, a prototype 8x8 hardware implementation of the Cell Matrix architecture. The MOD 88 can be used as a standalone system, or can be connected to a PC and controlled/monitored via a parallel port interface. The board comes with software (both a command line interface and an API, for a variety of system configurations) and documentation, including a set of tutorials and examples. Initial pricing for the MOD 88 and interface boards, software and documentation is $325.

  • For those who want to play with hardware without owning it, we have a set of MOD 88 boards available on the web. We are currently working out a login system, to ensure only one person sends commands to the board at a time. We expect this interface to be available sometime in the next week. Watch this blog for details...


I hope to update this page on a more or less daily basis, with whatever is going on that day. If you're interested or curious, please check back whenever you like. Also, this blog allows anonymous posting, so even if you're not a member of blogspot.com, you can post comments on anything you see here. The hope is to have an interactive forum for discussing all things Cell Matrix.


Best wishes,

Nick Macias