16 Core Computer Made Of ATMegas

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.


25 thoughts on “16 Core Computer Made Of ATMegas

    1. 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.

    1. 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.

  1. 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.

    1. 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.

  2. 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

  3. 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.

  4. 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.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.