Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
A Homebrew CPU from scratch (buildacpu.blogspot.com)
62 points by _b8r0 on Jan 29, 2011 | hide | past | favorite | 10 comments


That's a really neat project!

If you like this please have a look at this too:

http://www.homebrewcpu.com/


That's amazing, 4 years of hacking away to get to a functional working system.

The diaries are great and well worth the read, especially the bring up attempts.


I wish this wasn't so far above my abilities. It would be fantastic to find a course to work up to this point.


You need two things to build your own CPU from scratch:

1) Understanding that computers are not magic, but actually state machines built from relatively simple and understandable parts.

2) Enough patience and self-discipline to actually design and build something like that, which at least to me seems like larger problem. In software you get some meaningful partial results that are to some extent interesting by themselves pretty early in development (mostly). In hardware project of this kind you have to build it almost completely for it to do something meaningful.


I think the larger problem is that hardware at this scale is so finicky. You can get 'meaningful' results fairly soon (say a half-adder, a working clock, or an instruction decoder), but making them work reliably, so that parts that work in isolation still work when connected to each other is problematic. Voltages drops may get too large, the clock signal might get too diluted, etc.


Abstraction is key when it comes to CPU's.

Do I know how to make a CPU? No. But you know what I do know- how to use transistors to make gates. How to use gates to make flip-flops, ALU's, and memory-mapped IO. How to make a pipeline out of flip-flops and ALU's. So on and so forth. Nobody can envision a whole CPU in their head right down to the gates, they rely on many layers of abstraction.


This is pretty much standard Computer Engineering curriculum. Most CE (and computer science) majors will have had a class that built a microprocessor (and of course all the digital electronics leading up to it).


It was standard for EEs at my university, too. I remember that we learned the basics of binary (the logic gates, truth tables, Karnaugh maps), then built 1-bit adders, 8-bit adders, an ALU (with only addition and subtraction), a memory cell and a few other things until we had a basic workable CPU.


Though, at least at my school, we did the actual 'design a microprocessor' in software. It's cool to have an end product, but with software you are mostly limited to conceptual errors rather than the joyous world of debugging 8 identical (i.e. 8 bit computer) full data paths.


The Elements of Computing Systems: Building a Modern Computer from First Principles http://www.idc.ac.il/tecs/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: