Lots of things come in twos. Here are three (!) examples.
- Everything in your computer is, at its lowest level, remembered as a set of binary “bits” each of which can be either a “1” or a “0” and if you arrange lots and lots AND LOTS of those together in just the right combination, you can see this web page on your LCD;
- How synapses between nerves work — they either conduct or they don’t, very much like those “1”s and “0”s in the computer; and
- Work-days I have left before retirement.
For the past fifty years I’ve been deeply involved with electronic computers and, over that period, no doubt you already know the growth has been enormous. But I can tell you that from an insider’s viewpoint, the growth is hundreds of times more than that. And it is bigger in ways that connect me to #2 above — the brain.
Many years ago I read a book called, “The Society of Mind.” Marvin Minsky, the author, is a computer guy and the book basically says that “mind” is built up from many small elements into a “society.” He predicts that, as computers grow in complexity and speed, it’s only a matter of time until Data from Star Trek or Sonny in Isaac Asimov’s “I, Robot” are interacting with us commonplace.
In the early years, such thinking was truly science fiction. But in the last decade, two related developments make this an almost certain eventuality. Those two developments are parallel processing and embedded computing.
Computer speeds have topped out. It is likely you will never see a computer running at 10 Gigahertz. The reason is that electricity only goes so fast — the speed of light — and at 10 Gigahertz, it can only go a fraction of an inch. As computer chips have grown in size, it has become impossible for the electricity on one side of the chip to get to the other side at such speeds. The speed of light and physical size thus set a limit on what we think of as “clock speed” which is, basically, how long it takes to add two numbers.
But with parallel computers or, as we’re now calling them, parallel cores, you can do that “in parallel” with all the cores at the same time. Of course, adding the same two numbers of many cores at the same time isn’t very interesting, but if the different cores are engaged in different tasks but all at the same time, the net effect is accomplishing an enormous number of things at the same time.
That’s what Minsky’s book is about.
IBM’s latest supercomputer, to take an extreme case, has over one million cores. If one core can do a billion (1,000,000,000) things per second and you multiply that by a million, you get an enormous number of things done per second (1,000,000,000,000,000 = 1×1015).
But the brain is not a massive array of computer cores. Instead, it has structure. Certain parts do certain things and not much else. For the most part, the brain consists of specialized elements that are interconnected in very specific ways.
That’s where embedded computing — my area of specialty — comes into this discussion.
Your car, sitting out there in the garage, carport or driveway, has well over a hundred computers if it was designed in the last decade. Each of these is a specialized computer that does a limited number of things and not much else. For example, one of them monitors what your foot is doing on the gas pedal along with some other inputs and periodically it sends a command to the engine computer telling it how much power you want. It does this over and over, hundreds of times per second. The engine computer, another specialized “embedded” computer, receives that input along with other data such as the current engine RPM number, and commands the throttle system to increase or decrease the flow of fuel while, at the same time, adjusting the timing of the ignition spark for optimum performance with a minimum of pollution.
In the past five years, we’ve seen our customers — some of them build the automated systems that fly commercial airliners (pilots rarely “fly” the airplanes they command today) — begin the move from uni-core processors to processors with more and more cores. While the current number of cores in these systems is relatively small, 4-8 in most cases, every expectation is that it will quickly balloon to hundreds of cores. Flight control systems are going to become much, much more sophisticated. (Driver-less cars on limited-access, special-use roadways is soon to be fact in a couple of parts of the world.)
Of course, writing the software that will execute on all those different cores at the same time is going to be enormously difficult. But software developers have come up with some pretty good ways of partitioning problems and solutions so that one of those “solutions” essentially functions as a “component” that can then be plugged in like a resistor or a capacity or a transistor in an old school radio. It is this very large scale “componentization” of software that will keep that hundreds, tens or thousands, or millions of cores busy. If each of those million cores in the IBM supercomputer is assigned one of these software components, well, you get the idea.
You and I probably won’t see million core processors in our iPads and Android phones. But those devices are already using more than one, and some have as many as eight cores. You will see thousand-core processors in the next few years.
And with that much parallelism, Marvin Minsky’s “Society of Mind” will indeed be possible.
The answer to, “Siri, where can I bury a body?” won’t be a pre-programmed tongue-in-cheek answer for much longer.