2-bit paper processor teaches how they work

Take a few minutes out of your day, grab your scissors, and learn how a simple processor works. [Saito Yutaka] put together an exercise to teach processor operations with paper. After downloading the PDF you can cut out the Address and Data pointer as well as two-bit data tokens for each. The processor has three instruction sets; Increment register by one, Jump if not over flow, and Halt wait for reset.

Once you’ve got your cutouts you can follow along as the program is executed. The INC operation is run, with the JNO used to loop the program. Once the register has reached an overflow the overflow counter halts the program.

One word of warning, we think there’s a typo in one of the captions. ¬†Once the program starts running and gets to address 01(2) the caption still reads 00(2) for both address and data. As long as you compare the values in the picture along the way you should have no problem getting through execution.¬†which has now been fixed.

Comments

  1. Leigh says:

    This reminds of the the Bell Labs CARDIAC, a similar concept but base 10. I had one when I was 9 or 10. Later I found a stash of them and bought a few but I believe they may all be gone now; at least, the web site on AOL is gone. But here’s a mirror:

    http://www.porticus.org/bell/belllabs_kits.html

  2. Jonathan Badger says:

    Another similar project is the “Little Man Computer”, which even has Java emulations.

    http://en.wikipedia.org/wiki/Little_man_computer

  3. EFH says:

    It does not have three instruction sets: it has an instruction set consisting of three instructions.

  4. t&p says:

    this is cool and all but why does the example program work in the pictures but his instructions are always 00(2)

    >>Fetch the instruction . Read data on address 00(2) .
    Data is 00(2). This means increment register by one

    >>Fetch the instruction . Read data on address 00(2) .
    Data is 00(2). This means jump if not over flow .

    lol wat

  5. Fallen says:

    Agreed EFH

  6. Patrick says:

    Thank you Hackaday. I’m a TA in an Assembly class and I’ve been needing a visual aid to teach to high school students.

    I may have to do some expanding to cover all that I need to though.

  7. Osgeld says:

    This looks to be a good educational tool, Might print one out for fun once I get back home

    Good job

  8. Saito Yutaka says:

    Thanks for your comment.
    Sorry I couldn’t find a typo before wrote page.
    I fix the typo a minute ago.

    Thanks.

  9. M4CGYV3R says:

    There are a few errors in the writeup and this page’s description, but overall a very neat way to demonstrate how a processor works at the lowest level.

    Well, I suppose you could get into how the transistors and cache store the data on the silicon, but that’s not so much computing at that point.

  10. This is cool, I will have to teach this to Mike Jr. at some point! =)

  11. Waj says:

    nice one

  12. sirmonkey says:

    explain this:
    Fetch the instruction . Read data on address 01(2) .
    Data is 01(2). This means jump if not over flow . Status register is 0 . So CPU should jump to somewhere .
    But CPU doesn’t know which address to jump .

    then

    Increment program counter .

    then

    Read data on address 10(2) . The data value is 00(2) .
    CPU know a address to jump .

    how does it now know to jump? BUT why does it(jump) when the instruction(00) is to increment the register by one ???

    maybe edit to say “01 = jump if not status else jump to next read data address” or something in programmer speak

  13. idisjunction says:

    So when can we expect the Linux port :)

  14. Alex says:

    The captions are a little confusing but if you just look at the picture realizing that some are doubles it makes perfect sense.

  15. F4R4D4Y.dc414 says:

    There’s so much Engrish in this, I just can’t force myself to read it.

    At least use Google Translate from a language you know well.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s