Multiprocessing is running a system with more than one processor. The theory is of course that you can double performance by using two processors instead of one. And the reality of course is that it doesn't work this well, although multiprocessing can result in improved performance under certain conditions. In order to employ multiprocessing effectively, the computer system must have all of the following in place:
* Motherboard Support: A motherboard capable of handling multiple processors. This means additional sockets or slots for the extra chips, and a chipset capable of handling the multiprocessing arrangement.
* Processor Support: Processors that are capable of being used in a multiprocessing system. Not all are, and in fact some versions of the same processor are while others are not.
* Operating System Support: An operating system that supports multiprocessing, such as Windows NT or one of the various flavors of UNIX.
In addition, multiprocessing is most effective when used with application software designed specifically for it. Multiprocessing is managed by the operating system, which allocates different tasks to be performed by the various processors in the system. Applications designed for use in multiprocessing are said to be threaded, which means that they are broken into smaller routines that can be run independently. This allows the operating system to let these threads run on more than one processor simultaneously, which is how multiprocessing results in improved performance. If the application isn't designed this way, then it can't take advantage of multiple processors, although the operating system can still make use of the additional processor(s) if you use more than one application at a time (multitasking).
Multiprocessing can be said to be either asymmetric or symmetric. The term refers to how the operating system divides tasks between the processors in the system. Asymmetric multiprocessing designates some processors to perform system tasks only, and others to run applications only. This is a rigid design that results in lost performance during those times when the computer needs to run many system tasks and no user tasks, or vice versa. Symmetric multiprocessing, often abbreviated SMP, allows either system or user tasks to run on any processor, which is more flexible and therefore leads to better performance. SMP is what most multiprocessing PC motherboards use.
In order for a processor to support multiprocessing, it must support a multiprocessing protocol, which dictates the way that the processors and chipset will talk to each other to implement SMP. Intel processors such as the Pentium and Pentium Pro, use an SMP protocol called APIC, and Intel chipsets that support multiprocessing (such as the 430HX, 440FX and 450GX/KX) are designed to work with these chips. APIC is a proprietary standard and Intel has patents in place that prevent AMD or Cyrix from implementing APIC, which means that even though AMD and Cyrix can make Intel-compatible processors, they cannot make them work in SMP configurations on standard Intel chipset motherboards. Intel has, thus far, the SMP market basically to itself.
AMD and Cyrix implement their own SMP standard, called OpenPIC, which is great except for the fact that there aren't any motherboards that implement it! It is hoped that at some point, a major chipset manufacturer will provide OpenPIC support, finally allowing SMP with AMD or Cyrix chips. Until such time, however, Intel chips are the only choice for those who want to multiprocess.
In addition, the Intel Pentium Pro or Pentium II are currently the best choices for multiprocessing because each chip has its own self-contained level 2 cache. In a system with more than one processor and level 2 cache on the motherboard, the processors must share the cache. Each new processor added to the system results in less cache per processor, which degrades performance. Each Pentium Pro or Pentium II however comes with its own level 2 cache, avoiding this problem and greatly improving performance, particularly on four-processor systems. For quad multiprocessing (four CPUs) the Pentium Pro is still the only option, despite its being several years old, because it is the only CPU for which a chipset is available that will support quad multiprocessing. Future chipsets will allow four or more Pentium IIs to be used in a system.