How interesting! Just look at the estimated size of the complete megaprocessor. It wouldn't fit in any room at a regular home!
It's a really cool exercise, however, I imagine that James must spend about 99% of the time soldering, so it's more like an artisanal process than an engineering one. An amazing feat nonetheless.
I don't understand why separate frames cannot be connected into a "book". It would take less space and as far as I can tell, each frame is quite thin anyway?
He stated it is for educational purposes? I mean, you will not be looking at all frames at once? I mean, it would be definitely convenient to have easy access to all of them without manipulating the frames, but it seems as unnecessary requirement.
Not in a straight line, but if you lined the walls of the room it should be able to fit in at least one room of a house. A 15x10ft room would probably have enough wall space.
Reminds me a bit of the BMOW (Big Mess O' Wires) (http://www.bigmessowires.com/2009/02/02/wire-wrap-photos/), which was/is a functional desktop computer made of hand-wrapped wire on a 12x7 wire-wrap board. Of course the Mega-processor is on a much larger scale, but in terms of unique hand-built computers I think they're comparable.
Not nearly as large or ambitious, but if you're into the "solder hundreds of parts together to get something you could buy for a dollar" aspect, the "Transistor clock" is a pretty cool kit. I'm a lot better at soldering, now, too.
It looks like they built the working circuit first, and then just added a load of diodes that don't do anything. I would imagine you could leave it running while adding components so if you made a mistake you immediately know, and can just undo it.
From the page: Every single part that composes the clock has its purpose. If you would decide to take out a single part of the circuit the clock won't operate properly anymore.
The bigger you make it the slower it'll end up working, basically. The time for the signal to propagate through all those discrete transistors will be quite big and that puts an upper bound to your clock frequency.
There are a couple limitations, depending on if you mean "take a CPU and scale the components up" or if you mean "add more and more to a CPU until it becomes larger".
The main limitations are heat, frequency, reliability, and thermal stresses.
Heat being mainly for if you're adding more and more to a CPU. With just scaling a CPU up, the increasing size of everything counteracts the longer distances. But if you are trying to add more to a CPU the amount of power dissipation will continue to increase until eventually you can't get the heat out from the center of the CPU.
Ditto, the larger the CPU is the more you will have problems with thermal stresses. Once you get into macroscopic stuff, that is. At current CPU sizes you actually seem to end up with more problems with thermal stresses the smaller you get, due to wires scaling "funny" (edge effects becoming more dominant the smaller you get).
Ditto, if you're trying to add more and more to a CPU eventually you'll hit a point where you can't add more because you'll cost more time replacing bad components than actually running. Some of the early vacuum tube computers had actually hit this limitation, and it is only through heroic "throw more money at it" solutions that modern CPUs aren't limited by this. I mean: you have a billion transistors on a chip. And get decent yields.
Frequency is the big limitation. CPUs propagate signals at ~0.1c already - which means if you scale them more than 10x the size (or ~2x for PCB-style traces) you cannot maintain the same frequency. Remember: your frequency dictates how long the longest wire through the CPU that gets updated in a single clock cycle is. If your CPU is larger than c/f in diameter, you cannot send a signal to the other side of the CPU and back in one clock cycle - at which point it may as well be multiple CPUs.
You can visit it in the museum. Forgot the name, has a plane on the roof.
He gave a talk when I was there, and afterwards, we where allowed to add some numbers on the computer. You can see the memory banks and hear the relais clicking and blinking.
An interesting fact is that it is a 32 bit floating point machine. Though when I was there he had some issues with synchronising the clocks, so it only did integers then.
One of my college profs worked with Zuse. In class I said, "Wait, so you worked for the..." and then stopped realizing what I was about to say. He was Hungarian-American, and at the time very old. What I was going to say wasn't fair.
On the other hand, the class he was teaching was my assembly language class. And he knew the material inside and out.
I'm not sure I understand what you were going to say. I was assuming "Wait, so you worked for the inventor of the computer?", but then you went on about race and I didn't get it anymore.
Yes. And realizing mid-sentence that he would have been a very young Hungarian at the time and it would have been a complicated and probably not fair to him question.
That's not really a question. He absolutely did work for the Nazis. The OP's point was that there wouldn't be much value in simply pointing that out (it's not like it would be news to Prof. Zuse).
> While Zuse never became a member of the Nazi Party, he is not known to have expressed any doubts or qualms about working for the Nazi war effort. Much later, he suggested that in modern times, the best scientists and engineers usually have to choose between either doing their work for more or less questionable business and military interests in a Faustian bargain, or not pursuing their line of work at all.[28]
A word of warning: you could easily spend days exploring that museum. Fortunately, the computers are close to the entrance, so you probably won't make the mistake of discovering them at the last minute.
Fantastic work, this is an amazing project. I think myself and every other Cs / electrical eng student has dreamed of this at one time or another. It's a gigantic undertaking though and it's exciting to see it done.
The implications for teaching are great too. Having this physical reference would really cut the learning curve in computer architecture.
>> Having this physical reference would really cut the learning curve in computer architecture.
I don't know, i think having a language that supports mixing high and low levels of description to describe a processor and the tools to simulate and play with it could offer much faster learning, since you could focus on learning.
Verilog and VHDL are substantial learning curves in themselves. We could really do with a newbie-friendly alternative; I don't know whether http://www.myhdl.org/ might be it.
To be fair, it's Hardware Description Language, not Hardware Synthesis Language. HDLs are mostly tools to support V&V, it's just that synthesis is the most convenient way to ensure that an implementation is consistent with the HDL description.
Yeah, I believe originally all the HDLs were intended for simulation of designs which were then implemented by hand. Neither Verilog nor VHDL was processor designed for synthesis, which is probably why it's so quirky.
Verilog and VHDL already simplify hardware design a lot. They seem to have a great learning curve due to the nature of hardware design.
Most people gain a lot of confidence in software development and try to design hardware like they would program a system. And then they complain that Verilog and VHDL is too complex.
Verilog in particular leads you into that trap, though. Because you can write conventional sequential-execution programs in it, and usually have to when writing testbenches. The nomenclature of "process" and "task" imply they behave like software - and they do, in the simulator. Then there are the hoops you sometimes have to jump through in order to get the synthesis to behave as you want: "reg" is not always a D-type flip flop, and is mandatory in some places where it doesn't synthesise to one.
The challenge of Verilog & VHDL is not learning the language, it's learning the paradigm of hardware & HDL. Everything is parallel, nothing is sequential unless otherwise specified.
In themselves they are very simple, basic languages.
I know in our Computer Architecture class we designed a MIPS-like processor. I don't remember what software we used, but we ran it in simulation and imaged it on to an FPGA board at the end of class. We learned how to build all the components from smaller (maybe slightly higher than transistor level logic) parts. It was a great learning experience.
Then we built a micro controller mimicking some simplified early ARM designs in year 2 (ARM was very widely used at the school, I guess the fact that Steve Furber works there played a role). Starting with ALU, decoding, etc. Was pretty awesome :)
In year 3, we built a simple VGA chip and uploaded it to an FPGA with a monitor connected to it. It could only draw rectangles, lines and circles but seeing it actually working was totally amazing. Definitely the best project while at the school.
We were using Verilog and Xilinx toolchain, and that happened at the University of Manchester.
Yeah its funny how alumni play the a role in the tech that gets used. I know that there was a lot of Xilinx in use on campus. I didn't do anything with FPGAs outside of the one class so I wondered how much of that was based on technical merit, etc. vs the fact that one of the Xilinx co-founders was a Rose-Hulman Alumn.
That class and Xilinx still haunt me. My team failed that project. Two of my three teammates couldn't grok Xilinx and gave up. That class catalyzed my decision to transfer out of Rose-Hulman.
wow ! in an almost same vein: http://www.homebrewcpu.com, doesn't use discrete-transistors, but starts with 7400 series ttl chips. 'slightly' easier :)
edit: and this is with complete s/w "stack" as well, including ansi-c compiler, multi-user port of minix-2, tcp/ip stack...
Thank you for saving me the job of linking to TNMoC, they have identical replicas, and occasionally originals, of exactly this kind of project i.e. build a macro-processor. Though most of them predate even transistors.
They have one that stores info in a ten-state neon tube which looks as cool as you might hope [see edit].
Turing didn't even have that, they used Acoustic Delay Lines, which could "store" a state for as long as it took a pressure wave to propogate through a long tube.
To "write" you do (or do not) send a pulse at the appropriate millionth-of-a-second time slice. To "read" at a certain time later (of the order of a thousandth of a second), listen at the other end in the appropriate millionth-of-a-second time slice for the slightly-degenerated pulse. To store for longer than a thousandth of a second, re-send any detected pulses, and remember which pulses are which.
The tube can be filled with anyhting cheap enough, thaat propogates signals as slow as possible, without degenerating them too much. Fun fact, when building the ACE Turing "rather hankered after using gin, which would come cheaper than mercury". Mercury was eventually chosen, hence they're often known as Mercury delay lines.
[edit]
The machine is called the Harwell Dekatron or WITCH. And it looks and sounds as impressive as its name. See a program being run on it at the link below. Demo starts at 13:00.
The spinning lights are the transistor equivalents. Each one able to be read which of the ten possible positions the light is in, and advanced one step.
For those who want to learn how CPUs and computers work, Nand2Tetris is a great book that takes you from logic gates (NAND) to making a CPU that plays tetis
I just finished the course from coursera https://www.coursera.org/course/nand2tetris1. It is a very good start learning from the course or from the book for those who are interested to build something like this. I highly recommend it.
Man I was scrolling and scrolling hoping this was from a few years ago and the whole thing is finished. Ah well, I will be surely glad to keep up with this project, because it is truly amazing. Simply waiting to have my mind blown by this is blowing my mind.
I had a boss once who recycled a bunch of arrays from an old phone switch and built a fully working CPU system with 12-bit word lengths and 1024 words of storage. Took days to run some things, but such things are a true joy to have on in the background during coding sessions.
Actually, it's much easier. Once you narrow down the buggy behavior sufficiently in software, you can literally go to the hardware with a voltmeter and measure exactly what is vs what should be, identify the offending part directly, and replace it using little more than fingers and a soldering iron. That vs "narrowing" it to a 100+ pin component that does a significant fraction of everything, with replacement being little more than throwing the whole unit away (you did want the newer version anyway, right? good excuse to get it now).
TTL logic? I see 10K and 470 ohm resistors in the pix, or the color codes are messed up by the camera, and 5V supplies and not a diode in sight and the layout doesn't look RTL to me. This makes the project interesting because "most" retro builders do DTL. So that's cool. Takes a thundering lot more transistors (admittedly no diodes) and the noise budget and fanout aren't as easy but it'll work... I suppose from a parts minimization standpoint you could use the inherent diode in a bipolar transistor to build DTL using only transistors.
AFAIK (and I've studied this for awhile) no one has built anything substantial at the transistor level using CMOS architecture. Virtually everyone does DTL, there's plenty of relay based work, this guy is the only discrete TTL family I'm aware of, and I've seen a little RTL logic family out there. That would be interesting.
I always thought the totem output stage of a TTL gate would be "too hard" compared to the other logic families so I got to hand it to this guy, impressive.
A better "vital statistics" comparison would be the DTL logic straight-8 original DEC PDP8 which would vaguely fit on a desk and used about 1500 transistors, 10K or so diodes. It looks like this:
In my infinite spare time I'm going to build a straight-8 using all SMD components (so my cards will be half business card sized rather than half a sheet of paper sized). I'm sure I'll get to that right about 2080 or so at this rate. The advantage of cloning an existing architecture is vast piles of software ready to use.
The disadvantage of using modern high beta, high Ft transistors instead of 60s era transistors is I'm likely to build some great VHF/UHF oscillators instead of logic gates. OP seems to have gotten past this problem, or hasn't run into it yet.
WRT moving parts and "make it like a book" comments, the last thing you want with 50K or so wire jumpers is movement, even if every bend only breaks 0.01% of wires per "fold" that going to multiply up into pain if you swing 10K wires open and closed 1K times. Ribbon cable and standard connectors could help.
I wonder how suitable commercially available discrete MOSFETs are for building logic? They're all made for power applications. Of course, it's not like discrete BJTs are "suitable" either.
Pretty awesome. However, I think that this is one spot where VR will become fantastically useful - suddenly we will be capable of becoming a few nanometers tall, and have the ability to visualize electricity flowing through ICs.
Thank you so much for this, I've wanted to see something like this for a long time. I was hoping Steve Wozniak would real something like this in an unreleased book on how he made the mac.
I love this. Understanding a CPU gets more complex with each cache layer and each instruction pipeline, so building a model of the “pure, unadulterated principle” does make sense.
Back in the 1970s, I worked on the original (or nearly so?) TOW missile system at Emerson Electric in St. Louis. The electronics were composed of a number of encapsulated blocks of (what could be) crumbly black material. These cubes could be thought of as integrated circuits but were actually composed of discrete transistors, resistors, capacitors, etc. inside.
Not as ambitious but I often dealt with building computer systems, including the processor, from the TTL chip level back then. They were still sophisticated, along the lines of what would be called RISC architecture.
You really, really knew how computers and their processors worked back then and God how I miss it.
127 comments
[ 1.9 ms ] story [ 199 ms ] threadI shall keep an eye on the progress
http://www.megaprocessor.com/progress.html
It's a really cool exercise, however, I imagine that James must spend about 99% of the time soldering, so it's more like an artisanal process than an engineering one. An amazing feat nonetheless.
http://www.transistorclock.com/
http://techno-logic-art.com/clock.htm
Cool idea anyway.
The main limitations are heat, frequency, reliability, and thermal stresses.
Heat being mainly for if you're adding more and more to a CPU. With just scaling a CPU up, the increasing size of everything counteracts the longer distances. But if you are trying to add more to a CPU the amount of power dissipation will continue to increase until eventually you can't get the heat out from the center of the CPU.
Ditto, the larger the CPU is the more you will have problems with thermal stresses. Once you get into macroscopic stuff, that is. At current CPU sizes you actually seem to end up with more problems with thermal stresses the smaller you get, due to wires scaling "funny" (edge effects becoming more dominant the smaller you get).
Ditto, if you're trying to add more and more to a CPU eventually you'll hit a point where you can't add more because you'll cost more time replacing bad components than actually running. Some of the early vacuum tube computers had actually hit this limitation, and it is only through heroic "throw more money at it" solutions that modern CPUs aren't limited by this. I mean: you have a billion transistors on a chip. And get decent yields.
Frequency is the big limitation. CPUs propagate signals at ~0.1c already - which means if you scale them more than 10x the size (or ~2x for PCB-style traces) you cannot maintain the same frequency. Remember: your frequency dictates how long the longest wire through the CPU that gets updated in a single clock cycle is. If your CPU is larger than c/f in diameter, you cannot send a signal to the other side of the CPU and back in one clock cycle - at which point it may as well be multiple CPUs.
I aways has ambitions of building something like this but never the motivation.
I built a full adder and that was as far as I could stomach the job.
You can visit it in the museum. Forgot the name, has a plane on the roof.
He gave a talk when I was there, and afterwards, we where allowed to add some numbers on the computer. You can see the memory banks and hear the relais clicking and blinking.
An interesting fact is that it is a 32 bit floating point machine. Though when I was there he had some issues with synchronising the clocks, so it only did integers then.
On the other hand, the class he was teaching was my assembly language class. And he knew the material inside and out.
http://www.globalresearch.ca/operation-nazification-u-s-mili...
Somehow that makes me very sad.
Awkward.
> While Zuse never became a member of the Nazi Party, he is not known to have expressed any doubts or qualms about working for the Nazi war effort. Much later, he suggested that in modern times, the best scientists and engineers usually have to choose between either doing their work for more or less questionable business and military interests in a Faustian bargain, or not pursuing their line of work at all.[28]
Which seems true enough to me.
http://www.sdtb.de/Englisch.55.0.html
A word of warning: you could easily spend days exploring that museum. Fortunately, the computers are close to the entrance, so you probably won't make the mistake of discovering them at the last minute.
The implications for teaching are great too. Having this physical reference would really cut the learning curve in computer architecture.
I don't know, i think having a language that supports mixing high and low levels of description to describe a processor and the tools to simulate and play with it could offer much faster learning, since you could focus on learning.
I know they teach Chisel, a higher level language , in berkley. Maybe it fits software engineers and would be fun to design cpu's with.
The whole MyHDL is mostly used for verification though.
Most people gain a lot of confidence in software development and try to design hardware like they would program a system. And then they complain that Verilog and VHDL is too complex.
In themselves they are very simple, basic languages.
Then we built a micro controller mimicking some simplified early ARM designs in year 2 (ARM was very widely used at the school, I guess the fact that Steve Furber works there played a role). Starting with ALU, decoding, etc. Was pretty awesome :)
In year 3, we built a simple VGA chip and uploaded it to an FPGA with a monitor connected to it. It could only draw rectangles, lines and circles but seeing it actually working was totally amazing. Definitely the best project while at the school.
We were using Verilog and Xilinx toolchain, and that happened at the University of Manchester.
edit: and this is with complete s/w "stack" as well, including ansi-c compiler, multi-user port of minix-2, tcp/ip stack...
They have one that stores info in a ten-state neon tube which looks as cool as you might hope [see edit].
Turing didn't even have that, they used Acoustic Delay Lines, which could "store" a state for as long as it took a pressure wave to propogate through a long tube.
To "write" you do (or do not) send a pulse at the appropriate millionth-of-a-second time slice. To "read" at a certain time later (of the order of a thousandth of a second), listen at the other end in the appropriate millionth-of-a-second time slice for the slightly-degenerated pulse. To store for longer than a thousandth of a second, re-send any detected pulses, and remember which pulses are which.
The tube can be filled with anyhting cheap enough, thaat propogates signals as slow as possible, without degenerating them too much. Fun fact, when building the ACE Turing "rather hankered after using gin, which would come cheaper than mercury". Mercury was eventually chosen, hence they're often known as Mercury delay lines.
[edit]
The machine is called the Harwell Dekatron or WITCH. And it looks and sounds as impressive as its name. See a program being run on it at the link below. Demo starts at 13:00.
The spinning lights are the transistor equivalents. Each one able to be read which of the ten possible positions the light is in, and advanced one step.
http://www.tnmoc.org/special-projects/harwell-dekatron-witch
Awesome project! I felt nostalgic when I saw the adder -- it's right out of a textbook.
http://www.nand2tetris.org/
I had a boss once who recycled a bunch of arrays from an old phone switch and built a fully working CPU system with 12-bit word lengths and 1024 words of storage. Took days to run some things, but such things are a true joy to have on in the background during coding sessions.
Anyway, thumbs up .. go Megaprocessor, go!
AFAIK (and I've studied this for awhile) no one has built anything substantial at the transistor level using CMOS architecture. Virtually everyone does DTL, there's plenty of relay based work, this guy is the only discrete TTL family I'm aware of, and I've seen a little RTL logic family out there. That would be interesting.
I always thought the totem output stage of a TTL gate would be "too hard" compared to the other logic families so I got to hand it to this guy, impressive.
A better "vital statistics" comparison would be the DTL logic straight-8 original DEC PDP8 which would vaguely fit on a desk and used about 1500 transistors, 10K or so diodes. It looks like this:
http://www.pdp8.net/straight8/functional_restore.shtml
In my infinite spare time I'm going to build a straight-8 using all SMD components (so my cards will be half business card sized rather than half a sheet of paper sized). I'm sure I'll get to that right about 2080 or so at this rate. The advantage of cloning an existing architecture is vast piles of software ready to use.
The disadvantage of using modern high beta, high Ft transistors instead of 60s era transistors is I'm likely to build some great VHF/UHF oscillators instead of logic gates. OP seems to have gotten past this problem, or hasn't run into it yet.
WRT moving parts and "make it like a book" comments, the last thing you want with 50K or so wire jumpers is movement, even if every bend only breaks 0.01% of wires per "fold" that going to multiply up into pain if you swing 10K wires open and closed 1K times. Ribbon cable and standard connectors could help.
Truth, but for this specific issue think of PWM drivers, VFDs, switching power supplies. How about MRI drivers? The specs aren't so bad, really.
I look forward to this particular use...
Not as ambitious but I often dealt with building computer systems, including the processor, from the TTL chip level back then. They were still sophisticated, along the lines of what would be called RISC architecture.
You really, really knew how computers and their processors worked back then and God how I miss it.