SMP -- Symmetrical Multiprocessing -- is an arrangement that allows a single computer to use multiple independent CPUs. Hardware requires some special features in order to support multiple CPUs. For example, memory must be shared and interrupts often must be processed by a CPU that has some vague idea what might have provoked them. There are more hardware issues than one might expect. In addition to interrupts, there are Real Time Clock issues, power management problems, and difficulties with initializing the secondary CPUs(s) properly. X86 PC based system SMP hardware generally complies with the Intel 1.4 SMP spec.

SMP configurations typically have 2, 4, 8, or 16 CPUs. They require an SMP knowledgable Operating system that can handle SMP hardware configurations and efficiently allocate work between multiple CPUs. There are many complications related the fact that inefficient allocation of work will cause the overall throughput to be limited by communication bandwidth between the CPUs rather than the capacity of the CPUs. Once that happens, additional CPUs do not increase throughput significantly. Linux and Windows NT/2000/XP support SMP. Other software issues include forcing processes to specific CPUs, using finer granularity in resource locking than is needed for single CPUs, moving processes between CPUs, and persuading the OS not to use SMP when single processor operation is desired.

Because of overhead, two CPUs usually do not produce twice the work of one CPU and four rarely produce twice the work of two. Depending on the application, workload management can be a major concern. However, multiple CPUs can be very effective when dealing with problems that inherently have a great deal of parallelism.

Return To Index Copyright 1994-2008 by Donald Kenney.