The Tera Computer System (1990)
citeseerx.ist.psu.edu
citeseerx.ist.psu.edu
I wrote software for the late-generation versions of this architecture (Cray XMT). It really changed the way I thought about software design, and was probably the most fun piece of weird silicon I ever worked on. With a little imagination you could approximate the latency hiding it was doing in silicon in software heuristically, albeit with somewhat different mechanics. For certain kinds of codes it could be exceptionally efficient, graph analysis being a major target.
Its fatal flaw was that it was pretty severely memory-bandwidth limited when code was highly optimized, an architectural resource mismatch. There were similar architectures produced by other small companies with ultra-high memory bandwidth but those were designed for a handful of specific customers and not widely marketed.
Fun times.
Chances are that as we get closer to the limits of Moore's law that we will see a revival of such exotic architectures because they will be the only way forward to get more computing power. Especially workloads like AI and graph analysis could well benefit from this because the hardware and the data model overlap quite nicely.
I'm feeling a bit dense today and it's not obvious to me. Please do tell what that solution is and why it doesn't generalize :).
https://en.wikipedia.org/wiki/Dataflow_architecture
And the reason why it doesn't generalize: it is typically implemented in special purpose hardware.
The insight is that GPUs are memory driven - warps basically wait for memory operations to complete while other warps do stuff - so execution proceeds driven by memory access patterns.
Perhaps one day the "all advanced processors are really RISC inside" meme will get replaced with "all advanced processors are really dataflow inside".
Of course, there is the option to make the dataflow visible to the outside with the EDGE (explicit data graph execution) architecture (Microsoft even showed Windows running on one).
I found the reference to Windows running on Microsoft's E2 processor (which in turn has links to relevant papers):
https://www.theregister.com/2018/06/18/microsoft_e2_edge_win...
The point is that inside every advanced processor instructions are handled in groups and if you expose that to the compiler you can save transistors and energy.
This is the same pattern with how most modern programming languages are credible approximations of procedural, object-oriented, functional, etc programming models if you choose to use them that way. The flexibility and optionality created by not being dedicated to a single paradigm has its own value.
edit - it was bsd wrapped around a custom microkernel, kind of more like OSX. the original intent was that the MTA be a general purpose machine that would scale down to the desktop. so that provided the user space. there was also a very funny division of labor between the OS, the hardware, and the runtime that caused alot of anguish over the years. one the primary goals for that was extremely lightweight thread management.
This was the original MTA, the one with the "Tera" illuminated logo, atop the "wave" case that resembled a toolshed designed for the Mighty Morphin' Power Rangers.
According to Wikipedia, the MTA-2 was delivered to the Naval Research Labs, probably at Anacostia, not to a French car company as I had thought.
Somebody tried to get me to be a friendly user of MTA when it first came out. I took a look- they pitched it as useful for graph processing rather than simulations- and concluded that the architecture was not going to be competitive with intel in the long term, and ignored it.