Ever since computers were developed in the early 1950′s, there has been a chase for speed. The first computers, large as an entire living-room and containing tens of thousands of vacuum tubes, had about the computational power of a solar-cell desk calculator today. Since then, computers have shrunk enormously, while their processing speed has increased exponentially, to such degrees that a computer which would have been a miracle of engineering twenty years ago is now essentially worthless. The ageing process for computers has probably best been expressed in Moore’s Law, a law dictated by Gordon Moore in the 1960′s, saying that the average number of transistors on a CPU chip doubles every 18 months – with respective increases in processing power as well, naturally. It’s been upheld remarkably accurately even during the last few years.
My first computer had a processor of 8 megahertz, that is, its internal clock ran at a speed of eight million ticks per second. With one single computer instruction taking typically between one and three ticks to execute, it could race ahead at a blazing speed of several million instructions per second. More was to come. A high-performance computer today might run at a clock speed of 3 gigahertz, and with better instruction pipelining and optimization a computer instruction might now take only one or even half a clock tick, it can now execute perhaps five billion instructions per second. That is – at least – a thousandfold increase in processing power. To put it into everyday terms, a task which would have taken one hour to complete in 1986, will now take about three seconds.
The speed race was on, then. As Intel battled Motorola, AMD, Cyrix and a few other vendors, the processing speeds grew from 8 MHz, to 25 MHz, to 133 MHz and beyond. Then they broke the 1000-MHz barrier and become GHz instead. Clock speed was the holy grail.
However, engineers are stumbling into physical limits. The higher speed you have, the more power is leaked from electronic components, building up residual heat and demanding more wattage. And we can even see the end on the horizon in terms of signal speed: If a processor would run at 10 GHz, then the electrical signals – which travel at the speed of light – would only have time to travel about an inch in the timeframe of one clock tick. That’s just barely enough time to make it from one end of the CPU chip to the other.
What to do? Well, since the 90′s we’ve been adding more CPU’s, simply. CPU means Central Processing Unit and is the heart of the computer, much like the engine in a car. Without the engine, nothing happens. An engine alone is not enough to drive a car, but it is the heart of it. So if you want to double the speed of computer, what can we do if not increase the clock speed? We can add another CPU.
Which is exactly what is happening today. With magical words like hyper-threading, dual core technology, the vendors of CPU’s are doing just that: Increasing the number of processing units in a computer, whether logically or physically. But that also means problems.
The main problem is that computer programs – for the most part – is designed to run in a single thread of execution. The computer takes one instruction, executes it, and returns the result. Then it takes the next instruction, and so on. Thus, to convert an two-megapixel image from your camera to black-and-white instead of color, the CPU simply looks at each pixel in turn, turns it into a black-and-white pixel using a color-weighing algorithm, and repeats it two million times.
Adding a CPU to this doesn’t immediately speed things up. The CPU’s must find a method to divide the work between them; which CPU is going to do what. Unfortunately, they are not yet so intelligent as to figure that out themselves – they have to be told specifically. We have to divide our program into two separate threads of execution. In this simple example, we could tell the two CPU’s to work on either the upper or lower part of the picture. But with increasing complexity, and in many cases results that depend on each other, memory access becomes troublesome. Ways have to be devised such that the CPU’s don’t accidentally bump into each other – such as both CPU’s accessing the same object at the same time. Interesting situations can emerge where one processor moves an object to a different place but doesn’t tell the other CPU it did so (the responsibility of the programmer) and then the other CPU comes looking for an object that is no longer there. And then the program crashes.
These problems are only going to increase. Rumor has it that Intel is planning a CPU with 32 cores – that is, capable of doing thirty-two things simultaneously. And beyond that, we may see scaling that is similar to Moore’s law. A future with thousands and thousands or processors in a single computer is not unthinkable at all.
There are two implications from this. First of all, we need new computer languages that are suited to this. Secondly – and more interestingly – computers will now start to mirror a radically different form of topology; namely that of biological life. A flower does not consist of a single cell operating incredibly efficiently, that would never work. But it does consist of millions or billions of cells, each limited in power, but operating together. Likewise, an anthill consists not of one single ant simultaneously searching for food, building the anthill, protecting against invaders. Life is broken down into populations and ecosystems, where individuals take part, but invariably contribute towards a greater whole. This is the kind of topology that computers will have to mirror in the future.
Scientists are already experimenting with “dumb robots” – tiny, non-complex robots that can cooperate together to perform bigger tasks. Sending out a swarm of inexpensive robots could accomplish certain tasks much better than one large. It may turn out one day, that focusing less on the power of a single CPU and instead adapting our problems to a large number of CPU’s – massive parallellism, as it’s called – may be the single most important shift in technology since the transistor was invented.