John said:
Why would a *system* care about the latency of one processor accessing
memory? The system only cares about net performance. As it stands now,
only one *process* can access memory at a time (because all processes
share a single CPU) and they all suffer from context switching
overhead. Multiple CPUs never context switch, so *must* be overall
faster.
It is certainly true that it matters little if a process is delayed
because it is swapped out of the cpu, or because the cpu it is running
on has slow access to memory. But unless your new architecture is an
improvement in speed (since it is unlikely to be more power efficient,
or cheaper, and is not inherently more reliable), then there is no point
in making it.
There is no reason to suppose your massively multiple core will be
faster. Your shared memory will be a huge bottleneck in the system -
rather than processes being blocked by limited cpu resources, they will
be blocked by memory access.
Your also seem to be under the impression that context switches are a
major slowdown - in most cases, they are not significant. On server
systems with two or four cores, processes typically get to run until
they end or block for some other reason - context switches are a tiny
fraction of the time spent. If you want a faster system serving more
web pages or database queries, you have to boost the whole system - more
I/O bandwidth, more memory bandwidth (this is why AMD's devices scale
much better than Intel's), more memory, etc. Simply adding extra cpu
cores will make little difference beyond the first few. For desktops,
the key metric is the performance on a single thread - dual cores are
only useful (at the moment) to make sure that processor-intensive
threads are not interrupted by background tasks.
For almost every mainstream computing task, it is more efficient to use
fewer processors running faster (although it is seldom worth getting the
very fastest members of a particular cpu family) - you can get more work
out of 2 cores at 2 GHz than 4 cores at 1 GHz. In a chip designed
around many simple cores, each core is going to be a lot slower than a
few optimised fast cores can be.
It's the OS's that we have problems with. Hardware is cheap and
reliable; software is expensive and buggy. So we should shift more of
the burden to hardware.
If you shift the complexity to hardware, you'd get hardware that is
expensive and buggy.
Have you anything to back up this belief in cheap and reliable hardware?
Certainly some hardware is cheap and reliable, being relatively simple
- but the same applies to software.
The IBM Cell structure is a hint of the future.
The Cell is a specialised device - only the one "master" cpu can run
general tasks. The eight smaller cpu's are only useful for specialised
dedicated tasks (such as the graphics processing in games). This is
precisely as I have described - massively multi-core devices exist, but
they are only suitable for specialised tasks.
Sure, but Moore's Law keeps going, in spite of a pattern of people
refusing to accept its implications.
Moore's Law is not like the law of gravity, you know. You can't quote
it as "proof" that a simple solution to your shared cache problem will
be developed!
Far fewer than software bugs. Hardware design, parallel execution of
state machines, is mature, solid stuff. Software just keeps bloating.
It's just a matter of the costs of finding and fixing errors in hardware
are so much higher than for software, so that more effort goes into
getting it right in the first place. But the result is that a given
feature is vastly more expensive to develop in hardware than software.
A hardware version of the Vista kernel may well be more reliable than
the software version - but it would take several centuries to design,
simulate and test, and cost millions per device.
So let's make it simple, waste some billions of CMOS devices, and get
computers that always work. We'll save a fortune.
My XP is currently running about 30 processes, with a browser, mail
client, a PDF datasheet open, and Agent running. A number of them are
not really necessary.
How many on yours?
At the moment, I've got 51 processes and a total of about 476 threads
(it's the number of threads that's important here) on my XP-64 desktop,
excluding any that task manager is not showing. There is a svchost.exe
service with 80 threads on its own, and firefox has 24 threads.