Can anyone tell me if there are any benefits in having a Dual
Processor system as opposed to a single processor system for any
non-server computing environments?
Multiple cpus, is for cramming MORE cpu HORSEPOWER into your PC! Just
getting multiple, slower cpus won't help at all.
More words on this. The opportunity of multiple CPUs, is that two
slower, but not so slow, cpus are much cheaper than one faster, but
not so fast. Those last few % performance in a single cpu are so damn
expensive. Plus the fact that multiple cpus, can reach performance
beyond any existing single cpu.
I've had only very fleeting contacts with multi cpu PCs. So the
following discussion is based upon what I think I know, about these
issues, and is not backed by any firsthand experience.
The idea is simple. Sharing out the work to two processors, gets it
done faster. There's two limitations here. A single threaded
application, or single threaded operation inside an app, can only run
on one cpu. So the other is idle, and nothing is gained. So partly
this is dependent on software design, and partly on what task is
performed.
Taking raytracing in a 3D render app as example, there are no multiple
independent tasks involved in tracing the rays for one single pixel
(no AA provided) so it has to run on one thread... - One single pixel
that is! - All the other pixels can be computed by other threads! And
those threads could be sheduled to other cpus. But the software has to
be designed for this. If it just launches one thread that computes
each pixel in sequence, it will gain nothing from from multiple cpus.
We can call this property, how well multiple cpus are used, for
scaling.
There's two other main reasons, why even a cleverly designed app will
never run twice as fast on two cpus. One is that the two cpus will
have to share hardware interfaces, and most of the memory bandwidth.
The other reason is that the threads will have wait for each other,
during synchronization and contention handling in the OS.
Unfortunatly, we're somewhat stuck with the poor choices. The PC and
'86 cpu scales poorly (though, incidently '86-64 (Opteron) is better
at this than '86, so maybe it doesn't have to remain so). Windows
scales poorly, though it's probably getting better, and will maybe be
quite good eventually.
Finally, Guess what - the traditional Windows program model doesn't
scale at all!
But again, Windows32 and Windows64 APIs gives the programmer the
options. It's just a matter of persuading him to do things differently
than he's used to.
And if so, would a system incorporating two 450mhz processors have any
advantages over a system that uses a single 900mhz processor?(All
other factors taken into consideration).
No. I can't imagine that would be the case much.
(You do understand that MHz is not the speed of the cpu, I trust? Even
if the 450 and 900MHz cpus are identical in other respects, the faster
clocked 900MHz will not be twice as fast as the 450MHz. Even so, I
think the MHz will scale better than multiple cpus.)
- But basically, I assume you're asking, if two cpus ever will be
better than a single, twice as fast CPU? - No, not if the OS and
sheduler works properly. Not really. Only thing I can think of, is
some 'time critical' singlethreaded app locking up one cpu somehow,
with a high priority, but I'm really out in the blue here...
Any advice would be appreciated.
I don't think that the time has yet come for multi cpu desktops for
general use. Some people can find use for it in work, but most still
depend too much upon max speed in a single thread, and most threads in
the Wintel PC are just idle, waiting for something.
My guess is, - the more 'modern' our software and OS becomes, the more
it's going to resemble the server & supercomputer environment. I think
multiple cpus are going to be increasingly attractive. Another
development that is going to become common is multicore cpus. Intel
have already launched their HT processor. It scales awfully. But
doubtless, the feature will be improved. Seems reasonable to expect
that Intels P4C HT (and future multicore cpus) will influence
software design, over time.
Maybe this will turn out to be the thing that will 'drive' a multi cpu
revolution?
Multiple cpus is, as I've already stressed, a way of increasing the
total sum of cpu power in the computer.
While the point is to get more cpu power, that power can only be
utilized by multiple threads running concurrently. If we don't have
that situation, sustained for long durations, we gain nothing!
The advice thus is: try figuring out how well your work "scales" on
multiple cpus. An applications that does its heavy work in multiple
symmetric threads, an applications specifically designed to make use
of a multi cpu platform, should be the really good candidate.
Other opportunities are some multitasking scenarios. Good candidate is
running TWO (or more) background jobs. Or running a background job
with a cpu-intensive foreground app, like video editing
ancra