Rod logic refers to building computational systems using physical automata, such as tinkertoys, Legos, or more practical metal or plastic parts. Computers currently in use are primarily electronic, with only a handful of components relying on physical motion, notably mass storage devices like hard drives and DVD drives. In sharp contrast, computers based on rod logic are entirely based on physical motion, harking back to Babbage's analytical engine. Until fairly recently, such devices were considered historical curiosities, or were constructed by people with too much time on their hands, as complex, interesting, and essentially useless toys. At a macroscopic scale, such things cannot compete with transistor-based designs. For one, one can only build a physical gear or rod so small, and to only so fine a tolerance. Thus, while AMD or IBM can pack 100 million transistors into a CPU that will fit in the palm of your hand, a rod logic device of the same computational power would be quite large, and probably take much more energy to operate.
Unless you majored in electrical engineering, you may have never seen an individual transistor; while you can fit 100 million of them into a CPU, back in the 40s and 50s, and still today in EE labs around the world, a transistor is reasonably large. A computer built out of individual transistors 5mm on a side was much smaller and more efficient than one based on vacuum tubes, but the invention of integrated circuits was what let us really harness the power of transistors and give us wonders such as Moore's Law and (eventually) porn on demand over the Internet. In much the same way that early computers based on tubes and individual transistors were large and awkward, early computers based on rod logic were also limited by the seeming inability to scale down the size and power consumption of the components.
But after Eric Drexler's Engines of Creation was published, it was realized that while building a rod logic computer out of macroscale components is not practical, one can build equivalent structures out of carbon nanotubes, or even more advanced and interesting materials, like gallium nitride. While currently our ability to form nanotubes into complex structures is nowhere close the the sophistication required for a full computer, there is research, hope, and a whole lot of money being devoted to solving the problem. Such a computer could be absolutely tiny compared to current designs; a single walled carbon nanotube is about 1.2 nanometers, while the transistors in the best large-scale manufacturing techniques are a hundred times larger. It is important to realize that while such computers are based on completely different design and manufacturing techniques, they are still simply Turing machines; no quantum computer magic happening here. Oddly, Drexler argues that nanotechnology will make strong AI easier to acomplish, though I find this unlikely, as our problem is not speed, or size, or heat1, but simply that we currently neither understand the nature of consciousness, nor understand how to replicate it. Or even if it can be replicated, for that matter.
Now we come to what is, for me, the really interesting part of all this. What is it like to program on a rod logic based system? The easiest and most obvious is to build NAND gates out of whatever is useful, and then build a standard-issue gate-based computer. If you wanted to go all out, you could even make it x86 compatible and run existing applications on it. While such a technique works well for RAM (simply package it into normal memory sticks and use it with a transistor-based CPU; all the rest of the computer cares about is that the bits written are the same when read back later), I don't feel like this is the optimal solution for a CPU. For one, it potentially is very inefficient in terms of hardware resources; while a NAND gate in rod logic is fairly simple (it has been implemented using a handful of Legos), it is not completely trivial, and while I have been pondering it off and on for the last few hours (when the topic came up in a conversation), I can't think of an easy way to build registers. And I don't even want to think about the MMU, though of course nothing stops a CPU designer from building the MMU using currently used techniques. But it works, and if nothing else it allows the world to keep the very substantial investment made in software over the last 50-odd years. Another point is that, given that one could potentially construct a full rod-logic computer in something smaller than the head of a pin, it might well be useful to go multicore in a big way, with hundreds or thousands of very small rod logic based CPUs working in parallel.
It is important to note that while 'rod' is in the name, rods are not the only device in use; in theory any mechanical device could be built at a nanoscale, shown by recent successes designing and building nanoscale engines, gears, propellers, and various other devices. While it isn't often that computer scientists think about problems in terms of gears, I strongly suspect that such mechanical techniques would let us doing many interesting things faster (or in less space) than current methods. Consider, just as a concept, holding the bits of a 'register' as the placement of rods sticking out of a wheel. If the rod is pushed in, the bit is zero, and if it is pushed out, it is one (or the reverse, it's basically arbitrary). To rotate the bits in the register, simply spin the wheel the desired number of places, and then read out the result2.
Some alternative designs have been proposed that bridge the gap between emulating a 'normal' CPU, and taking advantage of the rod logic directly. It is probable that, if and when computers based on rod logic become available, most of them will more or less emulate a register machine, though it seems likely that in the case of nanites, one would wish to program directly in the rod logic, in some sort of mechanical assembly language, simply because a device less than a micron on a side doesn't have much room for an operating system, much less a libc or JVM. In the end, it may be that our nanocomputers will not be made using rod logic, and that some other nanotech method of computation is preferable for whatever reason. At best, rod logic will completely alter the computing landscape; at worst, it will remain an interesting diversion for those with an interest in the history of computers.
Footnotes
- If we knew how to build a human-level AI, but it would take 10,000 high-end machines to do it, we would. But we don't have any clue how to do it. Having small, efficient computers is great, but if we don't know how to solve the problem, it doesn't help us much. Of course, once we do know how, then nanocomputers will be very useful, allowing us to build AI into virtually anything that's useful (your car, your coffee maker, etc).
- ariels informs me that in fact this not any real improvement over how it is implemented in electronic form. Since I don't know much about hardware past my single computer engineering class, I'm taking his word on it. The intention is more to suggest how a common operation can be done in a totally different way by taking advantage of physical structures, but do keep the fact that it's not a major improvement in mind.
References