Erroneous folk-lore: "For almost all applications, only one processor is doing the work".
In fact, almost all modern applications use multiple threads. And they have for several years now. If you can get those threads running on multiple processors, well-written applications will get much more responsive.
Further, there are many services performed by the OS on behalf of applications that use one or more threads behind the scenes. This includes any kind of I/O (file IP, networking I/O, etc.), sound, reads and writes from/to Jet or other databases, etc. etc. etc. In some cases, these threads are part of the OS, and in other cases, the OS actually starts one or more threads within the context of the application.
You also run into fewer instances where an application slows the system to a crawl, and it is difficult or impossible to get the Task Manager up to kill the app.
"Probably some types of server software, for example, are designed for multiprocessing and the benefits are much greater"
Actually, wordprocessors, database applications, spread sheets, browsers, charting software - all the stuff we use all day every day - are designed for multiprocessing and can benefit greatly from it.
BTW, The newest Pentium IV processors (not sure exactly which models) can do some limited multiprocessing with only a single CPU. Intel calls this feature is called "HyperThreading".
The multiprocessing done by these chips is limited. The chip has hardware to keep track of two threads simultaneously. When CPU resources which can be used simultaneously are blocked due to serialization constraints in one thread, that CPU resource can be used by the other thread. Hyperthreading allows the chip to be kept more "busy" instead of having sections remain idle when there are serialization constraints. There won't necessarily be instructions from two threads executing simultaneously on each instruction cycle. So, the effective average clock speed of each virtual processor is less than that of the processor, and variable. |