Mechanical CPU Clock
An anonymous reader writes "I designed this CPU clock to help people learn about how a CPU works. The Mechanical CPU Clock shows the basic building blocks of a CPU (ALU, buses, RAM, registers, and a Control Unit). It executes a set of instructions which will emulate a simple wall clock. A detailed build/explanation is available on instructables.com."
Looks like he's trying to serve webpages with a mechanical CPU or something....
Remember "News for Nerds, Stuff that Matters"? Help make it a reality again! http://soylentnews.org
Are you still listening? This is something I would watch on Slashdot TV.
http://www.youtube.com/watch?v=0H4LTOYpAM4
Join the Slashcott! Feb 10 thru Feb 17!
So this is a neat counter. But it functions nothing like a CPU. The article tries to describe some instruction set, memory, bus, and registers. But it's only as close as most car metaphors (really off the mark).
//TODO: signature
If you use this mechanical CPU to implement a clock, then how do you implement the clock of the CPU?
Brilliant work, but I find his terminology confusing.
From what I can see, there's really only one register - since the "registers" are linked, he can only store a 4-bit number (plus an instruction counter in the form of the track "flag"). "Register B" is really an instruction to clear both the register and the instruction pointer, and "'registers A&C"' are really an [inc A, if A<11 then IP=0 else IP=1] instruction. From this perspective, it's a two-instruction, one-register machine.
I only did that because I just couldn't get nine instructions and three different registers from watching the device function.
Am I the only one to see it that way? Are both ways (at least partially) valid?
You are right. The [inc A, if A11 then IP=0 else IP=1] is actually one instruction that was optimised after the first prototype. Originally I had these as separate registers with three other flip flops at the top for the program counter. However, I noticed that I can remove that (which made the clock simpler and more compact) if I combined both instructions together and only use one ball drop for the inc and check. I would love to figure out other ways of explaining this to people who don't even know there is a CPU in a computer. So any suggestions are welcome.
It's neat and nicely implemented, but it's not emulating a CPU at all.
Instead, what he has made is a 4-bit counter with an AND gate to detect the count of '11' which then resets the counter. The minutes are given by the position of the ball bearing in the outer rotating ring, so the timing of the system derives from the rotational speed of this, which presumably is driven by a motor (stepper?).
The wires linking the gates are not a bus, but are equivalent to the wiring between gates. What we have here is a 4-bit counter and AND gate.
There is no stored program and the configuration of the "ALU" cannot be changed and so by any definition, this is not a computing machine.
Reminds me of the Digi-Comp II that I had as a kid. It had the same rocker type mechanisms which simulated registers. See: "http://www.oldcomputermuseum.com/digicomp_2.html#"
The design is hosted on thingiverse: http://www.thingiverse.com/thing:21494