Everyone understands that our current Von Neumann processors are not going to get much faster and the only way to speed up our programs is to use multiple cores. Yet our microprocessors still hold on to the old sequential way of thinking.
Why does it cost so much to create a new OS thread? Why is every language forced to create their own implementation of light-weight threads? We have known about the end of Moore’s Law for at least a decade yet I don’t see Intel trying to innovate. Why?
We are burdened with too much code that expects to run on Von Neumann architectures for everyone to just switch to a completely different processor architecture. That will never happen.
Hardware vendors need to take a lesson from software… abstract the hardware.
When is the last time your code touched the bare metal of the computer? For 99% of us it would be hard to remember. Programming is C doesn’t count because it also abstracts the hardware to some extent.
Microprocessors already have a method of abstracting the hardware, it is called micro-code. Internally microprocessors have a simple programming language that describes how to move the electrons around to execute the instruction. But we are not able to touch the micro-code from the outside. If you think it is easy to shoot yourself in the foot working in machine language, then it is 100 times easier to do the wrong thing with micro-code.
While micro-code is not meant for programmers to access, the concept of a re-programmable microprocessor architecture exists.
I propose that a safer version of micro-code should be exposed to allow bare-metal programmers to completely change the operation of the microprocessor. This would take a complete redesign of the processors we use. In that redesign the most logical structure is to incorporate multiple cores on one chip. Micro-code could allow us to define how the cores interact.
Instead of the current design were multiple cores still access shared resources like memory, the cores should be small, simple Von Neumann machines. With micro-code the processor could be configured to emulate the traditional x86 architecture, a dataflow architecture or anything in between. Given enough cores we could have some left over for use by end-user applications allowing our code to be compiled down to the hardware level.
This concept is already in use by electronic engineers. Field Programmable Gate Arrays (FPGAs) are chips that allow the engineer to turn code into hardware.
The Von Newman architecture served us well for many decades but it is a dead-end. Microprocessor manufactures must innovate and evolve or we are stuck trying to emulate parallel architectures on top of a sequential architecture.