Massively Parallel CPU Processes 256 Shades Of Gray


The 1980s were a heyday for strange computer architectures; instead of the von Neumann architecture you’d find in one of today’s desktop computers or the Harvard architecture of a microcontroller, a lot of companies experimented with strange parallel designs. While not used much today, at the time these were some of the most powerful computers of their day and were used as the main research tools of the AI renaissance of the 1980s.

Over at the Norwegian University of Science and Technology a huge group of students (13 members!) designed a modern take on the massively parallel computer. It’s called 256 Shades of Gray, and it processes 320×240 pixel 8-bit grayscale graphics like no microcontroller could.

The idea for the project was to create an array-based parallel image processor with an architecture similar to the Goodyear MPP formerly used by NASA or the Connection Machine found in the control room of Jurassic Park. Unlike these earlier computers, the team implemented their array processor in an FPGA, giving rise to their Lena processor this processor is in turn controlled by a 32-bit AVR microcontroller with a custom-build VGA output.

The entire machine can process 10 frames per second of 320×240 resolution grayscale video. There’s a presentation video available (in Norwegian), but the highlight might be their demo of The Game of Life rendered in real-time on their computer. An awesome build, and a very cool experience for all the members of the class.

22 thoughts on “Massively Parallel CPU Processes 256 Shades Of Gray

  1. Great project, great documentation, completely misrepresented by HAD.
    – “strange design” = GPU implemented in an FPGA
    – “massively parallel” = 6 pixels (and 14 neighbors) massaged by dedicated cores implementing SIMD instruction set
    – “process … like no other micro controller could” I’m pretty sure there are ARM implementations out there that beat 10fps

    1. 10fps on 320×240 isn’t at all impressive. Over 25 years ago on a Sun 3-50 (Motorola 68020 CPU clocked at 15.7 MHz, 4M RAM, 1152×900 bit-mapped display IIRC) I wrote custom assembler that ran Life on the display at 3fps. Had I been handling a QVGA display it would have run at around 40fps.

      That said, a grayscale processor isn’t much use for Life as you only need black and white.

    1. What an odd thing to say. Apart from a couple of MCUs, all modern computers follow the Von Neumann paradigm. However, on the hardware side, data and code is usually separated in the first levels of memory hierarchy and that is why people sometimes talk about Harvard architecture.

  2. I am utterly confused by the documentation on the site, and maybe that is also the reason for the wonky description by HAD. The Websites needs around 50% fewer photos of the creators and the hardware and about 500% more text and diagrams to describe the actual hardware.

  3. It is good that the poster mentioned the 1980s. There were many good and interesting designs that were way ahead of their time from that era. They just didn’t have good economics, so they had to fold.

    It is also good that these guys are learning and experimenting with massive parallelism.
    They might learn something real about this topic. For example, the engineering community at large believes there is a ‘multi-core crisis’. There is a belief that the existing proposals will scale and that we need software transactional memory, etc. These students will learn the existing shared memory designs are a huge dead end.

  4. SMID=Vector processing architecture?
    Nice if the coder knows what they’re doing,or you’ve got a clever programming language that can optimise code for those kinds of architectures. (quite a few functional programming languages can do that easily- largely due to tricks Referential transparency allows)

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.