Jacques Mattheij

Technology, Coding and Business

The Raspberry Pi as a poor mans Transputer

One of the most interesting architectures to come out of the 1980’s was the Inmos Transputer. The idea behind it is that you string together a large number of CPU’s each with their own memory and connections to neighbouring transputers (using a series of ‘links’) into a computing fabric.

A recent comment on HN suggested using a cpu-per-process as a means of achieving very high degrees of security. This made me wonder if you couldn’t use a Raspberry-Pi Compute Module to achieve this goal, and that in turn led to researching the kind of buses that would be suitable to hook up a large number of processors.

And that in turn - inevitably - led to the Transputer and the CM1 (the Connection Machine).

The 80’s were an interesting era in the field of computing. We weren’t as much invested yet in architectures as we seem to be nowadays, the field was a proverbial Cambrian explosion of architectures and subsystems. Lots of interesting research came and went before it’s time was realy ripe.

So, this comment on HN led me down some interesting rabbit holes that I had not visited in years (I played around with Transputers in the 80’s, they were quite expensive and I could not afford the number that I would have wanted to use), and I wonder if this isn’t a very fortunate alignment of the planets.

Our understanding of massive parallel systems and compute fabrics has increased considerably in the last two decades, we have an ultra cheap platform at our disposal (the RasPi compute module sells for $30 in quantity) and we have a free operating stystem to go with it (Linux).

Running the RasPi’s fabric style with hardwired links between adjacent nodes (and the occasional uplink to a switch) should be doable, there is plenty of GPIO available for that purpose. And with 256M of ram the nodes would be fairly powerful. Say 32 nodes per backplane, with backplanes connected using multiple ethernet links, or if you want to go fabric all the way, connecting them in a plane like fasion to maintain the 2d arrangement (or a hypercube of them). There was a thread a while ago about a little board that you could connect 4 ways to its neighbours (for the life of me I can’t find it…), that might be doable if the backplane edges are fashioned as connectors.

Doing this will be some work (especially the links and drivers for them) but well worth it and possibly one of the most interesting things that you could do with the module, the longer I think about the more I realize it is just about ideal for being used as a base for a compute fabric.

If anybody builds this let me know, my own hardware design skills top out at double layer hole-through so this is definitely beyond me.