Main Page | See live article | Alphabetical index

Symmetric multiprocessing

Symmetric multiprocessing (SMP) is a multiprocessor computing architecture where all processorss can access, and are equally close to, all random access memory locations.

SMP is the most common small computer multiprocessor architecture. However, SMP does not scale well beyond roughly 16 processors, due to the difficulties of designing hardware that will share the memory pool between processors without becoming a system bottleneck. Realistic applications hit serious performance limits at around 8 processors. It is generally assumed that in SMP each additional processor yields an 85% increase in system throughput compared to the previous processor such that additional processors give diminishing returns. For the average user systems with more than 4 processors do not provide significant increases in apparent processing power, with 2 processors giving by far the largest increase in apparent power. (See Amdahl's law).

SMP has many uses in science, industry, and business where software is usually custom programmed for multithreaded processing. However, most consumer products such as word processors and computer games are not written in such a manner that they can gain large benefits from SMP systems. For games this is usually because writing a program to increase performance on SMP systems will produce a performance loss on uniprocessors systems, which comprise the largest percentage of the market. Due to the nature of the different programming methods, it would generally require a separate project to support both uniprocessor and SMP systems with maximum performance. SMP systems do however experience a performance increase even when running programs written for uniprocessor systems. This is due to the fact that hardware interupts that usually suspend program exection while the kernel handles them can run on an idle processor instead. The effect in most applications (e.g. games) is not so much a performance increase as the appearance that the program is running much more smoothly. This of course assumes that the OS supports SMP, if it does not, then the additional processors remain idle and the system functions as a uni-processor system.

The logical progression from SMP systems is the NUMA architecture, where the requirement that all processors be equally close to all memory locations is relaxed.