I guess this story starts for me with picking up the phone and getting James' elevator pitch. How would I like to help develop a radically different kind of computer? Massively parallel, like nothing I'd heard of before. And using processors so simple they make ants look like intellectual giants.
It was a long time since I'd seriously looked at the problems of parallel computing. I'd more or less lost interest at the the time, having formed the view that the kind of cellular architecture I wanted to create just didn't have a following. I had got pretty excited by the idea of compiling for cellular automata. And here was James telling me he's building one, now.
And what got me hooked was the fact that the individual processors were so puny. It's not so much that they weren't Turing complete, they weren't even FSA's, in fact they weren't even programmable. The program had to exist in the collective - and that sounded .. interesting. But was it possible to compile for the architecture?
I looked at the problem and couldn't see how it could be done. In fact I couldn't see how you could do any damn thing with it. But it looked like you could simulate a URM with a bit of work. I sat in the car with a pad of paper and pen one rainy Saturday afternoon, while my daughter rode round the arena. And as I wrote out the proof, the light broke through the clouds. Yeah, it was obvious after all. Sort of. I sat in the sun and felt pretty good and I guess that's when I signed up.
This blog is about our effort to create a new kind of computer, a programmable systolic array. It's about how we're learning how to program it, how to compile for it, and the mistakes we've made in hindsight. It's about the ideas that shrank the processors, how we had to redesign arithmetic from the ground up, and how we threw away 99% of the instruction set. It's about how we built the demonstration in FPGA, what we learned from that, and the new design we'll do in ASIC. This is about the coolest project I have ever worked on.