Ed said:
Let's not confuse multitasking for parallel processing.
And let's remember that parallel processing is always inferior to scalar
processing, for a given amount of processing power. That is, you're
better off with a machine that can execute a single instruction stream
at 100 gigaflops than with a machine that can execute two instruction
streams at 50 gigaflops.
The reason for this is that all parallel and scalar operations can be
handled by a scalar processor, but some scalar operations cannot be made
parallel. So many tasks _must_ execute on a single processor, no matter
how many processors you have, and these tasks will not run any faster
than a single processor can run.
A more important advantage of multiple processors is that individual
tasks are less likely to hog the system, since most aren't (or can't be)
written to use multiple execution threads. Thus, even if a single task
becomes processor-bound, you can still do other things, whereas a
single-processor system tends to become very sluggish when running
compute-bound tasks. This is a striking and obvious difference when you
are running a multiprocessor system versus a single-processor system.
Of course, if you have n processors and n tasks monopolizing all of
them, even a multiprocessor system becomes sluggish.