Multiple Processors for the Real World


by Drew Dunn

A PC with multiple CPUs is no big thing - dual processor Pentiums were available ten years ago. And it's not news that four, eight or more processors can be shoehorned into a single enclosure. Multi-processor servers have been running networks for quite a while. The New Big Thing is multiple processor chips.

Both Intel and AMD are shipping dual core processors - processors with two CPUs on a single chip. Thanks to tremendous reductions in feature size (Intel manufactures on a .65nm process), many more transistors can fit into a reasonably sized package. Improvements in metallurgy also means that the cost of copper interconnects in the chips have dropped tremendously.

And, in Intel's case, advancements in power management gives notebook users an opportunity to break into truely high performance computing and still maintain reasonable battery life.

Both AMD's and Intel's solutions provide true multitasking, but what does that really mean? And how does a dual core CPU differ from a Hyperthreading CPU? Let's take a look!

Multitasking is what a standard x86 processor does now. Without delving into the technical details, a multitasking CPU and operating system (like Windows XP) can run more than one program by dividing the CPUs time up into small slices, then assigning those slices of time to different programs. It's the same thing that you do when you're driving down the road. You can steer the car, shift the gears and adjust the radio - just not all at the same time. When you drive, you devote most of your time to steering, but you can take your eyes off the road for a second to change the radio station, or for even less to shift gears. Maybe you can even talk to your friend in the passenger seat (but please, not on the cell phone!)

Your computer does the same thing. If you're surfing the web, playing an MP3 and checking email, the CPU and operating system assign priorities to each of those tasks. Playing music takes most of the time, with bits of time given to rendering the graphics of a web page and downloading the latest spam. But it's important to realize that although it appears that everything is happening at once, it's really not. The CPU can only do one thing at a time, but it can do them so fast that it appears to be happening all at the same time. Voila - multitasking.

Hyperthreading, a feature of Intel's newer Pentium 4 chips, blurs the boundary between a single processor and a dual processor. Technically, the Pentium 4 is still a single processor CPU, but it has the ability to execute more than one instruction at the same time. To the operating system, the system has two CPUs, but physically, it's really one CPU with two instruction pipelines. The good thing is that the processor really can run more than one program at the same time. The bad thing is that the support circuits that feed the two pipelines and manage the information that comes out are shared between the two pipelines. So, there will always be some competition for those shared resources - and with competition comes the potential for delay, as one pipeline has to wait for the other to free up the shared resource. So, a hyperthreading CPU doesn't give a 100% performance boost over a non-hyperthreading model - maybe 25% to 30%.

With multiple CPUs and, specifically, in the case of Intel's Core Duo and Pentium-D, and AMD Multi-Core, dual core CPUs, the performance improvement gets better. As with Hyperthreading, more than one instruction can be executed at the same time, but, unlike the Hyperthreading CPUs, very little on either side of the instruction pipeline is shared. Each processor "core" has its own L2 cache, so the data that each core needs is immediately available. An improvement over traditional multiple CPU multitasking is that since the two (or more) cores are in one package and, in most cases, on the same silicon die, the performance is boosted even more because the physical distance between the cores is extremely small.

Naturally, there is a price to pay for this performance boost. The first is literal - these are new CPUs and they come with new CPU pricing. They're fairly expensive. The second is that, in order to recognize multiple processors and truely be able to multitask, programs must be written to be aware that the processors exist. This awareness is called "multithreading". The program must be able to divide itself into multiple parts, or "threads" that can be independently executed, then recombined. If the program is not multithreaded, then it will execute on only one processor core (or, in the case of hyperthreading, in one pipeline). Now, that's not a total loss - even when only one program is running, your computer is always doing other things. The typical housekeeping tasks that your computer does as a matter of course can be performed on another core or in the other pipeline. And, if you run more than one non-multithreaded program (also called "single threaded"), each will typically be assigned its own core.

Both Intel and AMD see multicore processors as the wave of the future. Servers and workstations with four or even eight cores per CPU are in the works. The upside is that these systems will consume less power and occupy less space than their individual processor predecessors. And, particularly in the server market, space and power are critical. For consumers, the benefits are already being realized with dual core notebooks already available that significantly boost the performance bar, but keep power consumption relatively low. Even Apple has seen the Intel light and is shipping a desktop and notebook system with Intel Core Duo processors.

With multiple core processors, Moore's Lay may very well be set to move off at a tangent - instead of constantly increasing frequencies, perhaps the new performance benchmark will be the number of processor cores in a single chip.

copyright (c) Drew Dunn
0 Responses to "Multiple Processors for the Real World"

Post a Comment