LinuxHPC.org/Cluster Builder 1.3
    Symmetric Multiprocessing
Translate to another language

Symmetric Multiprocessing (SMP)

Symmetric Multiprocessing, or SMP, is a multiprocessor computer architecture where two or more identical processors are connected to a single shared main memory. Most common multiprocessor systems today use an SMP architecture.

SMP systems allow any processor to work on any task no matter where the data for that task is located in memory; with proper operating system support, SMP systems can easily move tasks between processors to balance the workload efficiently. On the downside, memory is much slower than the processors accessing them, and even single-processor machines tend to spend a considerable amount of time waiting for data to arrive from memory. SMP makes this worse, as only one processor can access memory at a time; it is possible for several processors to be starved.


Alternatives

SMP is only one style of multiprocessor machine; others include NUMA which dedicates different memory banks to different processors. This allows processors to access memory in parallel, which can dramatically improve memory throughput if the data is localized to specific processes (and thus processors). On the downside, NUMA makes the cost of moving data from one processor to another more expensive, meaning that balancing a workload is more expensive. The benefits of NUMA are limited to particular workloads, notably on servers where the data is often associated strongly with certain tasks or users.

Other systems include asymmetric or asymmetrical multiprocessing (ASMP), in which separate specialized processors are used for specific tasks; and computer clustered multiprocessing (e.g. Beowulf), in which not all memory is available to all processors. The former is not widely used or supported (though the high-powered 3D chipsets in modern videocards could be considered a form of asymmetric multiprocessing), while the latter is used fairly extensively to build very large supercomputers.


Advantages and disadvantages

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 written in such a manner that they can't 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 uniprocessor 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. Programs running on SMP systems do, however, experience a performance increase even when they have been written for uniprocessor systems. This is because hardware interrupts that usually suspend program execution 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. In some applications, particularly software compilers and some distributed computing projects, one will see an improvement by a factor of (nearly) the number of additional processors.

This of course assumes that the operating system supports SMP; if it does not, then the additional processors remain idle and the system functions as a uniprocessor system.

In cases where many jobs are being processed in an SMP environment, administrators often experience a loss of hardware efficiency. Software programs have been developed to schedule jobs so that the processor utilization reaches its maximum potential. Good software packages can achieve this maximum potential by scheduling each CPU separately, as well as being able to integrate multiple SMP machines and clusters.


Entry-level systems

Entry-level servers and workstations with two processors dominate the SMP market today. The most popular entry-level SMP systems use the x86 instruction set architecture and are based on Intel’s Xeon, Pentium D and Core Duo processors or AMD’s Athlon64 X2 or Opteron 200 series processors. Other readily available non-x86 processor choices in the same market are the Sun Microsystems UltraSPARC, Fujitsu SPARC64, SGI MIPS, Intel Itanium, Hewlett Packard PA-RISC, Hewlett-Packard (formerly Compaq formerly Digital Equipment Corporation) DEC Alpha, IBM's POWER and Apple Computer PowerPC processors. In all cases, these systems are available in uniprocessor versions as well.


Mid-level systems

Mid-level servers using between four to eight processors can be found using the Intel Xeon MP, AMD Opteron 800 series and the above mentioned UltraSPARC, SPARC64, MIPS, Itanium, PA-RISC, Alpha and POWER processors. High-end systems with sixteen or more processors are also available with all of the above processors.

SMP had been around for some years in the RISC market before penetrating the x86 market; where with the exception of a few rare 80486 systems the x86 SMP market began with the Intel Pentium processor supporting up to two processors, and later the Intel Pentium Pro expanded SMP support with up to four processors natively, and systems with as many as two thousand Pentium Pro processors were built. Later the Intel Pentium II, Intel Pentium III and AMD Athlon MP processors could be used with up to two processors in a system, and Intel Pentium II Xeon and Intel Pentium III Xeon processors could be used with up to four processors in a system natively, and although several much larger systems were built, they were all limited by the physical memory addressing limitation of 64 GB. With the introduction of 64-bit memory addressing on the AMD64 and EM64T capable processors released recently this allows systems to address much larger amounts of memory so that we will not reach their addressable limitation of 16 EB in the foreseeable future.


Related Concepts
  • Non-Uniform Memory Access
  • Sequent Computer Systems

SMP capable operating systems
  • BSD
  • Linux
  • Microsoft Windows NT
  • Microsoft Windows 2000
  • Microsoft Windows XP
  • QNX real-time operating system
  • Mac OS X
  • Mac OS 9
  • Unix variants e.g. Sun Solaris, AIX, HP-UX
  • BeOS and derivatives
  • SkyOS
  • OS/2
  • Irix
  • OpenVMS
All text used in this article is available under the GNU Free Documentation License. It uses material from the Wikipedia article "Symmetric multiprocessing".