A History of Functional Hardware
haflang.github.io
haflang.github.io
I have always thought that a sufficiently homogeneous FPGA would be a perfect chip for mapping functions to cells in a grid. It's the routing fabric that always seems to be the fly in the ointment. What if you could just have a huge grid of LUTs (Look Up Tables) that feed into their neighbors?
You might get into trouble with race conditions. To solve that, just divide the grid into 2 phases, like the colors on a chess board. This solves the timing issues, and makes everything tractable. Sure it wastes a ton of transistors in the limit, but you get infinite flexibility in the trade, so you don't have to wait for routing software to "compile" your logic into binary the chip can handle.
It's the ultimate in functional programming... every line of code becomes an area of LUTs committed to a physical location on the computing fabric, and all I/O is known, no unwanted side effects, ever.
Since all the code runs simultaneously, you should be able to get huge speedups over the Von Neuman model of compute.
* GRIN [1] - arguably a breakthrough in FP compilation; there are several implementation based on this
* HVM [2] - parallel optimal reduction. The results are very impressive.
[1] https://link.springer.com/chapter/10.1007/3-540-63237-9_19