geoff said:
I'm actually not sure how one would designate which core does what at the
programming language level. If I start a program up on xp, that creates a
process, 'myProgram.exe'. Within that process, at the programming language
level, I can create multiple threads and have them execute blocks of code,
then the thread terminates.
Your saying that windows does not have the ability to load balance
programs/threads and/or multiple programs/threads over several cores?
--g
It does have the ability to load balance. The question is, whether
a typical application does that or not. If you're running MS Word,
and are attempting to scroll as quickly as possible, to the end
of the document, how many threads would that use ? It is my personal
belief, that high performance programming is not a priority for
most programmers. (I know, because I worked with some. I actually
had to teach some of them, what a profiler was!) All they aim for,
is accurately implementing a function, and the rest of it is noise.
Game design, on the other hand, can benefit from careful
optimization. How many gaming houses, will get the same
level of support as Microsoft did, when it asked Intel
for help with FSX ? The answer, is not many.
That is why I discount quads, as the "cure for cancer".
Sure, they're faster on a small range of applications.
If I know I'm going to be shrinking DVDs, creating output
from a video application, or other multimedia type applications,
I expect to see some parallelism there. But not for that pile
of legacy software you don't plan on changing any time soon.
Another part of the problem, is actually viewing what is
going on, with your OS. The Task Manager display is not
a very good way to visualize what the OS is doing. There needs
to be a way where a record can be kept of what was scheduled
during each time slice, so that a person could review exactly
how much parallelism is going on. Since the scheduler in WinXP
bounces stuff around willy-nilly, the separate plots per core
are rather meaningless. That is why I can't take what I see
there, at face value. When you see 75% in one graph, and
25% in the other, it could be one process running at 100%, and
being bounced from core to core.
I rely on SuperPI (a single threaded benchmark), so I can honestly
say "the worst you're going to see, is this ratio of performance".
The multiple cores *may* offer some benefits, but without knowing
what applications are being used, you can't offer anyone a guess
as to how much benefit their multiple cores will be. Have you
ever tried to get information from software sites, as to whether
their programs exhibit parallelism ? I've yet to find a software
house, that will help you out in terms of an optimal hardware
configuration. And it is why I can't say to a person, "go to the
Adobe site, and they'll help you determine whether a dual or a
quad core is the right answer". The information simply doesn't
exist. The best we can do, is rely on users and their experiments,
to tell us how the software works.
Paul