Homemade CPU – from scratch
3.14.by
3.14.by
"Made of ~200 low-scale chips, clock rate is up to 4Mhz. Have working Minux port, homebrewcpu.com site is served by this computer."
Man that is the very definition of coolness. Awesome. I wish I could build my own CPU, port *nix to it and serve a site about building it from it.
magic-1.org is a noticeably slow website. (Not complaining or being a jerk, just observing. It's all very cool)
It's a 4-bit computer made out of 171 relays. It's got different 8 commands, an input register and 2 CPU registers, one of which is the accumulator. There's memory for 16 instructions (dip switches!). As output it uses LEDs on the registers, so you can for example program it to multiply 2 4-bit numbers, and read out the accumulator at the end. It clicks away at 10 instructions per second.
The guy who built it also made a 1500 relais computer which is much more capable. You truly don't need much to build a computer - just a basic building block and enough ingenuity.
One of the other groups built a fully asynchronous machine. Ours was a single board, but theirs had a backplane (using an 80 SCSI cable.) Each unit had a value line and a ready line, so the system advanced to the next state as the parts were ready.
Happy days.
Give me a Tesla Roadster.
It's common when writing threaded software for multi-core systems to have an ""edge-race," where correct behavior can depend on exact ordering of earlier processing. Most of the people I know who have never had a software edge-race are people with significant hardware knowledge. They know what it's like to have many things going on simultaneously, and have the experience to reason about it more easily than those with a pure software background
With aggressively multi-core systems becoming more common (we are routinely using systems with 32 cores, and then we use 30 or more of them) material like this is becoming more relevant.
That was a real eye-opening moment for me when I realized I had actually been all over the stack and had some sort of understanding of how a high-level program gets compiled and executed and what actually happens at the lowest level, and that that was useful for understanding the high level better.
I wish that the curriculum at my school had started with that class. It would have been a much better foundation to start off of than C++ and Prolog.
It is pretty cool though.
Did I also mention I could drive it from San Jose to San Francisco and back without needing a tow truck or an overnight recharge?
Did they do anything to advance technology to build it? Probably not. But they sure made damn good use of existing technology, and in doing so have produced something truly amazing to drive.
In the same vein, have the retro CPU hackers 'advanced' existing technology? No. But they've given themselves a really deep knowledge of how CPUs work, and on top of that, added a rather impressive bullet point to their resumes. And they've made something that is pretty damn cool.
Doesn't even need body panels.
I definitely disagree that homebrewing cpus is a waste of time or talent though.
I’d go so far as to say it’s likely
"Hacksworth was a forger, Dr. X was a honer. The distinction was at least as old as the digital computer. Forgers created a new technology and then forged on to the next project, having explored only the outlines of its potential. Honers got less respect because they appeared to sit still technologically, playing around with systems that were no longer start, hacking them for all they were worth, getting them to do things the forgers had never envisioned." (Neal Stephenson, The Diamond Age)
Don't diss the forgers.
Google/check library for a cheap 1980's "Introduction to microprocessors" type book and find the Apple schematics online somewhere. It's a learning experience, but not particularly difficult once you get started. You can get some basic CPU/ROM/RAM/blinkenlights handwired and running a basic POST in a weekend if you already know 6502 assembly. A week if you don't!