Every few years, we hear about someone building a computer from first principles. This doesn’t mean getting a 6502 or Z80, wiring it up, and running BASIC. I’m talking about builds from the ground up, starting with logic chips or even just transistors.
[James Newman]’s 16-bit CPU built from transistors is something he’s been working on for a little under a year now, and it’s shaping up to be one of the most impressive computer builds since the days of Cray and Control Data Corporation.
The 10,000 foot view of this computer is a machine with a 16-bit data bus, a 16-bit address bus, all built out of individual circuit boards containing single OR, AND, XOR gates, decoders, multiplexers, and registers. These modules are laid out on 2×1.5 meter frames, each of them containing a schematic of the computer printed out with a plotter. The individual circuit modules sit right on top of this schematic, and if you have enough time on your hands, you can trace out every signal in this computer.
The architecture of the computer is more or less the same as any 16-bit processor. Three are four general purpose registers, a 16 bit program counter, a stack pointer, and a status register. [James] already has an assembler and simulator, and the instruction set is more or less what you would expect from a basic microprocessor, although this thing does have division and multiplication instructions.
The first three ‘frames’ of this computer, containing the general purpose registers, the state and status registers, and the ALU, are already complete. Those circuits are mounted on towering frames made of aluminum extrusion. [James] already has 32 bytes of memory wired up, with each individual bit having its own LED. This RAM display will be used for the Game of Life simulation once everything is working.
While this build may seem utterly impractical, it’s not too different from a few notable and historical computers. The fastest computer in the world from 1964 to ’69 was built from individual transistors, and had even wider busses and more registers. The CDC6600 was capable of running at around 10MHz, many times faster than the estimated maximum speed of [James]’ computer – 25kHz. Still, building a computer on this scale is an amazing accomplishment, and something we can’t wait to see running the Game of Life.
Thanks [aleksclark], [Michael], and [wulfman] for sending this in.
Holy crap that’s amazing.
This is sweet. I love the LED’s so you can visualize things.
It’s a work of art.
+1
+1
+1
-1
+2
+1
That’s both painful and awesome at the same time. The construction is clean and tidy.
I cannot understand the need to tie my hands behind my back when it comes to implementing things when much better i.e. faster/cheaper/higher density/lower power/programmable parts are available.
labor of love?
Art, appreciation of the way things work, a nearly silicon level of understanding of how the circuit works. All of those would be reasons to avoid the faster/cheaper/programmable/etc parts.
Sometimes the point is the destination. Sometimes it’s the journey. People who build model ships aren’t doing it just because they can’t afford a pre-built model.
I guess I am just not into art then. I do appreciate the workmanship of this built.
As for understanding internal working – I build discrete logic gate out of transistor for my high school physic class ages ago.
Yeah, I built a 2 bit adder using 7400 logic chips for my semester project in Computer Architecture in college.
None of my classmates were into “hardware”.
I think if I were to build this, I would go with a minimal count of transistors…to see how close I could get to a “real cpu” with just a handful of transistors. This would mean using a tiny ALU, and then double pumping or even quadruple…perhaps even a 1 bit serialized ALU. If you up the clock frequency and have good board design/multiple buses & speeds, you can get some decent speed out of it. This would make the user experience transparent to the circuitry inside so one can just address it as 6/24 bit. Another little innovation I would do, is to use the ICL mainframe style architecture. 24 bit words and 6 bit characters. You get 25% less circuitry to store the same data, just with fewer letters. I would also vastly reduce the instruction set tailored to run fortran/forth. If possible, I would try to get away with a 4 bit instruction set for 15 commands, but possibly 5 bits. This means a tiny decoder for the CPU instruction set. I would also use ferrite beads for bootstrap memory / executive instructions.
My fantasy data mass storage device is one that uses 3×5 flash cards as punched card data storage. 40 columns per card, one instruction line per card, unless denoted with a card continuation control character(in which case you could get longer program lines up to 78 characters. This would have to be controlled via RS232, because I would definitely like to connect it to my laptop. The rest is largely electro-mechanical, naturally.
In the end, you would be able to type FORTRAN II programs onto the cards, run them through the machine as jobs, and then get the output on an impact printer. In addition the executive OS would be handled via a pocket terminal device(like Vince Briel’s). Executive would offer vector program options like jump to process punched card jobs, list program, switch output to cards instead of impact printer etc.
It’s a pipe dream really…
Every circuit board is beautiful. I like the silkscreen symbols.
Absolutely insane, excellent craftsmanship, and very, very cool, all at the same time. Love it! Work of art for sure.
Yeah, OK…that’s downright amazing.
Sick shit right there!
“…with each individual bit having its own LED”
Am I the only one now thinking of that tv show Tek-War? In the show some of the prop computers had small banks of leds on the left and right sides of the screen lighting up randomly (I think).
Hmm, now I have to see if I can find any information on those props….
Blinkenlights and visual debugging at the same time :D
I was literally thinking about doing the same thing last night, it seems like a nice meditation and education. I think it’s really neat that people can just make stuff like this from scratch. I wish I had the attention span, knowledge, and determination to work on such projects.
I started something like this back in the 60s and didn’t get very far. I am REALLY impressed.
There are no words…
Amazing, simply amazing.
(okay, there are two words)
Awesome! This is a project I’ve been wanting to do since I took my first computer architecture course. This is really incredible work.
Might be easier, if you want easier, to use logic gates, and even more complex ICs, things like counters, flip-flops, etc. It’d still be pretty complicated, and you’d learn just about as much. You wouldn’t learn the basic discrete electronics as well, but you’d certainly get all of the computing.
If you want easier than that, lots of computers were made, back in the day, from AMD’s 2900 series of bit-slice computer chips. They’d use 36 in parallel for a 36-bit computer, or you could design parts of the computer to work serially, where each bit would be fed through the same 2900-series chip in turn. Serial would be cheaper, needing many less parts, but also much more complex, and of course slower. Perhaps more reliable though, less parts to go wrong. I might stick with 8 or 4 bits for a simple machine. Or even 6. You can always add data bits later, should just be a matter of duplicating the stuff all the other bits use.
I also would consider it OK to use RAM chips and EPROM, even using EPROM to help decode microcode, or with sequencing.
Above that, you could just do it in a design language and stick it in an FPGA. A bit cheating, but if you’re designing the CPU from scratch you’ve still got a lot to learn in doing it.
OR you could go even less high-tech, and build the thing from relays! Or mechanical rods, with a great big wheel to turn to drive it all, and a power intake for a steam engine. Measure your CPU power in instructions per horsepower, or lines of code per ton of coal!
You might also want to look up the KENBAK-1, everybody should, just because it’s amazing. A home-made fully-functioning computer designed by one man, who went on to sell some of them. Came in quite a small case. I/O was LEDs and switches, but it was quite sophisticated for a hobbyist in 1971. http://www.kenbak-1.net/ , was featured on HAD a while ago, very interesting.
MIPS – mega instructions per shovel
Im still waiting for someone to build a computer out of marbles and wood. I thought about it for a long time, but I don’t have the space…
Totally awesome. Impressed with everything, the quality of work, the planning, and the perseverance. I’m too ADHD for a project of this scale!
When I was in the USAF, I worked on a TI aircraft computer that was all discrete logic and transistors. It had 16 data and 2 parity bits, and used 64k of core memory (in 4 memory cards plus 4 memory driver cards). The thing weighed some 50 pounds, and the aircraft used a built-in winch system to install it. And you loaded it with a punch tape reader!
COOOOLLLLL!!!!! I wonder if there are any of those hanging around in surplus… :D
I am glad i got credit for submitting this ( NOT ) whats wrong HAD scared to give credit where credit is due ?
Yeah, fixed that.
But like you said in another blog comment Brian, something about the tip line,
Whoopee! I gave them a tip! Now I want a $1k credit at the HaD Store!
Truly awesome project! There’s an article on it on the BBC News site http://www.bbc.com/news/technology-33237863
This is damn impressive!
Yeah, but what can it do that an Arduino can’t?
Seriously, an amazingly impressive build. Fantastic.
love.
16bit computations
Warm the house
Surely 2 x 1.5 meter frames cannot be right.
Nevermind. I clicked through and get it now. I just looked at those giant circuitboards in the screenshot above and figured that sounds completely wrong.
I’m sure there’s a Linux distro that will run on that.
Kids these days. I dunno. Always taking the easy way out. Why use transistors when he could be using .. Oh wait.
Seriously, this is an amazing build. What better way of getting a fundamental understanding of what happens in the computers we take for granted. There would be a hugely meditative component to this that I’d love to experience.
I love the title :D
Awesome! I would suggest to make kits and sell them to schools. Projects like this one have an immense teaching value for people starting in digital electronics.
I bet that thing is power hungry. It would be cool to see the power consumption as the transistors and LEDs started running a program at 25kHz.
Ya, 60 amps assuming 3000 transistors. That is less than a 6502 by itself. Probably by the time he is done he will need 4 separate circuits to power it… a 2N2222 transistor is around 600 mA, the LEDs are around 20 mA. The decoder is going to be HUGE.
I’d like to see that on a breadboard…horrific
Out standing accomplishment
Give this gut two skulls
It is now installed in a museum :-)
http://www.computinghistory.org.uk/det/43063/The-Megaprocessor/