3 ms·
I did my Physics degree thesis on computing with Transputers. As part of that I got 3 Transputers (T425 I think) and I designed and built a board to house them
by nickcw 3y ago
I did my Physics degree thesis on computing with Transputers.
As part of that I got 3 Transputers (T425 I think) and I designed and built a board to house them plus an interface to the BBC micro computer which acted as the host.
We didn't have the budget for any of the software tools (like the Occam compiler) so I the first thing I had to do was write an assembler.
Transputer instructions are all variable length, with parameters being encoded as variable integers. So if you wanted to jump a few bytes away it would be a 1 byte instruction but you'd need a 2 byte instruction to jump further away then a 3 byte instruction etc.
This meant that the assembler needed lots of passes to work as it wasn't clear how many bytes each jump instruction would take. In fact it could take up to 7 passes until the program converged into a stable state with each jump the shortest length.
I wrote the assembler in BBC BASIC and due to the fact the BBC Micro had very little memory it worked on (floppy) disk rather than in memory. Floppy disk! This made it probably the slowest assembler in the world - my largest programs would take 10 minutes or more of disk chunking before they could be assembled.
Once I'd written the assembler I used it to write a boot loader which configured the Transputers and loaded itself around the whole network of Transputers. Transputers could boot each other so I only needed to write the boot loader to the one the BBC micro was connected to and it would run and copy itself to the other Transputers it found, figuring out the topology of the network as it went.
Once the boot loader was loaded then I could run the application. I did two, one a Mandelbrot set generator (of course!) which displayed the images on the BBC micro, and the other a physics simulation of an Ising spin model (which was kind of the point of all of this). I did the simulation on the university's mainframe in fortran too and the Transputer (cluster I guess you'd call it now-a-days) was faster!
The Transputer was an amazing chip and so ahead of its time. I often imagine an alternate future where we have 1000s of small single core chips with their own memory rather than current SMP model. It would certainly be harder to program but I bet it would fly!
- kwhitefoot 3y ago> This made it probably the slowest assembler in the world - my largest programs would take 10 minutes or more of disk chunking before they could be assembled. I can beat that. In the early 80s I was designing and programming 6502 based controllers for UPSs. The code filled an 8 kByte EPROM and took 45 minutes to assemble on an Apple II.
- paulmd 3y ago> I often imagine an alternate future where we have 1000s of small single core chips with their own memory rather than current SMP model. it's not individual chips but that's basically what GPUs or systolic processor arrays (adapteva epiphany) are like, in net effect. every core gets some memory/scratchpad to work, and there is a giant shared memory.
- paulmd 3y agohere's the paper on the adapteva epiphany btw, never thought about it in those exact terms but it actually does seem like a bit of a spiritual successor to the transputer in some ways: https://www.parallella.org/docs/e5_1024core_soc.pdf https://www.parallella.org/docs/e5_1024core_soc.pdf https://en.wikipedia.org/wiki/Zero_ASIC https://en.wikipedia.org/wiki/Zero_ASIC The Parallela boards allow access to a small array (16 cores) on a raspberry pi-style formfactor, although it's been a number of years so it's probably fairly far behind (eg) things like NVIDIA Orin