How Many Processor Cores are Enough? March 31, 2010Posted by Peter Varhol in Architectures, Software platforms.
I’m prompted to ask this question because of the announcement yesterday by AMD of the availability of its new 12-core Opteron processor. But some context is in order first. In 1965, Gordon Moore noted that the number of transistors on a processor was doubling approximately every eighteen months. Through a combination of miniaturization, increasingly smaller manufacturing processes (which are of course related to the whole concept of miniaturization), and faster clock speeds (once again related to miniaturization), and overall better engineering, the semiconductor industry has managed to keep up this incredible pace.
Moore’s Law has since been expanded to mean other related but perhaps not entirely accurate things, such as the doubling of computing power, or the complexity of the processors. However, there is no question that processors have been getting much faster over a period of decades.
But in computing there are no pure wins. If you optimize one factor, you are doing so at the expense of one or more others. I usually refer to this as TANSTAFFL, or There Ain’t No Such Thing as a Free Lunch (Wikipedia says that it has multiple origins, but I’ve always attributed it to Robert Heinlein’s 1947 novel “The Moon is a Harsh Mistress”).
In the case of processor design, the tradeoff is nothing more than the laws of physics. There are physical limits to how far you can shrink electronic components without undesirable side effects, such as excess heat or radio frequency interference.
Around ten years ago, we seem to have pretty much reached the limits of miniaturization. So Intel and others turned to putting multiple processor cores on a single processor die. It has also commenced hyperthreading its processors, the practice of providing additional on-chip caches to be able to handle more than one thread at a time in a core.
Now we have a race to add more processor cores to a single die, culminating in this twelve-core processor announcement.
But most of our software can’t take advantage of it. Granted, if you have a server running multiple applications, or perhaps a single Web application with reentrant code and multiple users, you may be able to dispatch enough threads to keep the processor fully busy, but in most instances that processor will have a lot of idle cycles.
It may come in time. Software such as Netkernel can sit between the application and OS, and take care of dispatching threads efficiently. These processors may actually be a bet by Intel and AMD that software and applications are moving in that direction. I have my doubts, especially on the desktop (where I currently have two cores, one of which isn’t used very often), but it will be interesting to see where if the future of software makes these processors worth the investment.