485 karma · joined October 13, 2014
Although this one was a lot less work than the first attempt. My original 1/10-scale Cray-1 is actually now sitting in the Computer History Museum!
https://www.thingiverse.com/thing:113044
Although theirs is a much better execution =)
I managed to get fairly high video performance by doing some careful register fiddling of the CRT controller chip: http://www.chrisfenton.com/exploring-kaypro-video-performanc...
At that point, the performance will depend on the nature of your application - if it involves a tiny amount of RAM in terms of instructions and working set, the caching scheme will give you great performance - if each core needs full-speed, random access to its entire 64KB of memory, keeping everything on-die is the way to go.
Especially if I improved the network a bit - deeper receive buffers at a minimum, maybe a simple DMA engine - you could probably get it down to <100 cycles to forward a Real48 to a neighbor. The performance of emulated floating point on an 8-bit CPU is sufficiently bad, and the network performance is sufficiently good, that you probably could get away with some very fine-grained parallelism that way! When I'm back to commuting, I should write an n-body gravity simulator or something for it so that there is lots of numerical work to spread around, and see how much of a speedup I can get.
FPGAs are super fun to play around with.
As a 'practical' example, I was able to write an N-body simulator of Jupiter and 63 of its moons (using the vector registers) orbiting one another in only 127 total instructions!
For making relatively small, multi-material / multi-color prints, this really is a pretty clever system that looks reasonably practical on a wide variety of existing low-end 3D printers. With good software support, I could imagine being able to make things with interesting physical properties by making hybrid rigid / flexible materials (integrated hinges or other deformable parts, for instance).