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
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
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.