Your desktop has two, four, or even eight cores, but when’s the last time you’ve seen a multicore homebrew computer? [Jack] did just that, constructing the DUO Mega, a 16 core computer out of a handful of ATMega microcontrollers.
From [Jack]’s description, there are 15 ‘worker’ cores, each with their own 16MHz crystal and connection to an 8-bit data bus. When the machine is turned on, the single ‘manager’ core – also an ATMega328 – polls all the workers and loads a program written in a custom bytecode onto each core. The cores themselves have access to a shared pool of RAM (32k), a bit of Flash, a VGA out port, and an Ethernet controller attached to the the master core.
Since [Jack]’s DUO Mega computer has multiple cores, it excels at multitasking. In the video below, you can see the computer moving between a calculator app, a weird Tetris-like game, and a notepad app. The 16 cores in the DUO Mega also makes difficult calculations a lot faster; he can generate Mandelbrot patterns faster than any 8-bit microcontroller can alone, and also generates prime numbers at a good click.
[youtube=http://www.youtube.com/watch?v=S_zfjmukIGM&w=580]
amazing!
I’d be more interested in the fairly intense number of directly addressable I/O pins. Sweet build.
Wow, great job!
Mining bitcoins with this?
nope
I hope you’re not serious
Can we mine bitcoins with this? :D
You can mine them even on abacus if you are brave enough
Super cool project! But the examples seem waaaay slower than they could be, judging from other projects like Linus’s http://www.youtube.com/watch?feature=player_embedded&v=sNCqrylNY-0 I wonder what the bottleneck is here. OH, and the guy wrote an online emulator for it with video output! http://www.ostracodfiles.com/mega/emulator.html
Gobsmacked! Brilliant job! @dsf: Bottleneck might be shared RAM pool. @Miguel & @inblackn: waaaaay too slow…………
The cores run a bytecode language called “Megaliter”. As a *very* rough estimate, that’s probably 20x slower than native code. I’m sure the shared bus also adds some latency.
Just amazing stuff!
This is pretty awesome! What I find so astonishing is how simple the wiring looks! For a 16 core machine i’d expect to see a ratsnest that would equal BMOW (featured here many moons ago – http://hackaday.com/2009/02/27/bmow-a-home-made-cpu/) look uncluttered but this is one of the cleanest DIYbuilds I have ever seen! Props!
Wouldn’t communication and synchronization be simpler if you clocked them all with just one clock?
i thought about this too. im guessing it was an issue with noise. the fact that its built on a bunch of breadboards would make this worse. especially with that data bus all over the place.
Seems like it’s bottlenecking at the display
Good job!
I have been wanting to do something like this, but lack of a compiler for parallel processing has stopped me dead. I tried pseudo code, but I didn’t like it.
As pointed out in another post, this is kind of like doing the Parallax Propeller the hard way (which is still cool, BTW). You can program the Propeller in Spin (native), C (compiler, free), BASIC (compiler, free), Forth (compiler, free); the Propeller makes embedded parallel processing very easy.
Seems like he implemented a Parallax Propeller but with AVR chipa.
I was pondering on this exact idea to implement a mp3/ogg player out of jellybean components. As audio decoding has lot of multiple independent tasks, this could make a good application
Great!Before I read this article,I thought about how to use MCU construct a computer.
Im surprised you haven’t heard of Conways game of life, referring to it as a “weird tetris-like game”
http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
I more thought they were talking about the first game that was displayed you know the one that looked like tetris with coloured blocks. But hey i could be wrong :/
It seems like a neat concept, but I don’t really get the multi-tasking. Most of the examples are him toggling back and forth BETWEEN the calculator, the game, and notepad. It seems like most of the examples could have been done with a single uP and a separate VGA adapter. It has potential though.
This is awesome!
What would be amazing is a design for a bus that allow you to add an “infinite” amount of Atmel chips, and to have identical code run on each chip. Finally, a scalable way to allow inter communication between chips – for example a bus similar to the Internet.
It would be so cool to build a neural network on such a computer design.