The world is now dependent on computers, but we don't teach our kids how they work.   How do you get from a bunch of transistors and resistors to a machine that runs the software we've all come to take for granted?  I see a real need to come up with a CPU design that anyone could understand, build and adapt, particularly schools and universities.

The goals are:
  • Simple enough so that everyone can see how it works, that means:
    • lots of LEDs to show the logical operation
    • clear layout to show functional units and routing of data between units
  • Complex enough to demonstrate the main ideas of a CPU
  • Small enough to be affordable by anyone with the time to build it
  • Quick enough to build and keep my (and those that follow me) family life
  • Fast enough to run some complex software
  • Slow enough so that everyone can see it running and understand it step by step
  • Flat enough so that the entire state can be seen in one go
The goal is not to build memory, it's easier to understand than a CPU but it needs too many transistors to be practical.   The CPU is mostly registers so I've taken that topic as covered.

The CPU is Raspberry Pi hosted which will:
  • Be the main memory and any memory mapped IO
  • Control the clock, so you can single step in software
  • Run the emulator as the program is running, so you can see what it's doing (and check for hardware faults)
  • Run the compiler
  • Run the job queue
  • Host the webcam so you can submit a job and see it see it running
The intention is to release a Debian package with everything in, so you can write code and run it under the emulator even if you don't build the hardware.

The story on each layer is far from complete, but for now my intended audience is one that can fill in the gaps so do contact me by email or on the forum if you can help.