Imagine an Arduino development board with the same footprint as an Arduino Mega or Due, but with the equivalent of 16 processor cores.
I just heard from my chum Tobias Strauch in Germany. It seems he's launched an interesting crowdfunded project called Arduissimo over on Indiegogo.com.
Tobias is a big proponent of a design realization technique he calls system hyper pipelining (SHP). Other people are interested in this. I just received an email from a university professor in England saying "Have you seen this project" (not knowing that I know Tobias, of course).
Here's the way I think about SHP. Have you ever worked a microcontroller-based project (for something like a robot or an embedded application) and run out of peripheral resources? One common solution is to create soft peripherals using code running on the main CPU coupled with some form of interrupt scheme. The problem is that this becomes very complicated very quickly.
Tobias's solution would be to provide a flexible set of virtual peripherals solely based on software, instead of having a fixed set peripherals implemented in hardware. He says using SHP won't hurt the main CPU's performance dramatically, because the virtual peripheral implementation is very efficient.
Another aspect to consider when using a microcontroller is that many applications could be quite naturally partitioned into sub-algorithms. In the case of a robot, for example, executing different functions on different processor cores in a multicore system is an obvious way to go.
All of which brings us back to Tobias's Indiegogo project, which we can think of as implementing multiple virtual Arduino processor cores on a single chip. First consider a traditional Arduino being programmed with the Arduino IDE.
The key point here is that there is a single Atmel AVR microcontroller core, along with program and data memory and a set of peripherals. You can program this using the Arduino IDE or other IDEs like the Atmel Studio.
Now consider the Arduissimo, as illustrated below, which boasts the equivalent of 16 processor cores, along with more program and data memory to run your code.
In this case, you program the board using an enhanced Arduino IDE -- called the Arduissimo IDE -- or (once again) alternatives like the Atmel Studio.
Tobias isn't simply replicating a single core multiple times. The whole point of SHP is to have a single instantiation of each of the functional units in the processor and to hyper-pipeline the inputs and outputs to each unit. This allows him to create the equivalent of more processor cores on a small FPGA, for example, than you would think possible.
In fact, the current Indiegogo project will be deployed on an FPGA-based development board with a footprint that looks identical to an Arduino Mega or Arduino Due.
Tobias tells me that, once the SHP concept is proven in the field using this FPGA-based project, then he may well launch a follow-up crowd-funding campaign to implement the Arduissimo on a much higher performance ASIC.
"The concept is also interesting to be used use in combination with the Raspberry Pi," he says. "But there are so many other aspects covered by this project that you have to visit my Indiegogo page and see everything for yourself."
— Max Maxfield, Editor of All Things Fun & Interesting