A symmetric multiprocessing system contains multiple processors that share the same memory and operate under a single OS. This architecture enables each processor to work on any task by accessing all I/O devices and data paths, regardless of the location of the data for that task in the centralized memory bank.
SMP differs from asymmetric multiprocessing (AMP) and massively parallel processing (MPP) in several key ways, and each has separate appropriate use cases. Designing a multiprocessing system for a data center can present a complex task, even for those with a firm understanding of the technical jargon of multiprocessing architecture.
What are symmetric and asymmetric multiprocessing?
An SMP design treats each processor equally and runs them in parallel with one another. This enables you to evenly distribute the workload when processing a program, which can lead to performance gains and a better balanced system overall.
By contrast, an AMP design does not treat all processors equally. The processing units remain interconnected; however, a primary processor typically runs the OS tasks and then assigns roles or specific tasks to the other processors. For example, the primary processor can perform I/O operations, while the others handle less intensive tasks.
By assigning roles, the primary processor in an AMP architecture can prioritize tasks based on importance or intensiveness, whereas the processors in an SMP system essentially self-schedule their tasks.
How does SMP differ from MPP?
The main difference between SMP and MPP is the system design. In an SMP system, each processor shares the same resources. In an MPP system, each processor has its own dedicated resources and shares nothing. In other words, an SMP system has tightly coupled processors, and an MPP system has more loosely coupled processors.
The other key distinction between the two systems lies in the "M" of MPP: massively. Because each processor uses its own OS and memory, you can set up hundreds of processors in an MPP setup, which enables you to crunch massive amounts of data in parallel.
In comparison, an SMP system is subject to diminishing returns. Each processor might share the same memory, which enables faster synchronization across the system, but each processor also has its own cache memory. This can lead to cache coherence issues, as well as bandwidth issues that come from adding more processors to the same OS and resources. Due to these memory and resource limitations, SMP systems are not as scalable compared to MPP systems.
Use cases for SMP vs. MPP in the data center
SMP systems provide increased throughput and reliability -- if one processor fails, another can fill its place quickly -- and they can dynamically balance a workload to serve more users faster. This makes them well suited to programs that can support or require multiple processes running in parallel. SMP is also ideal for situations in which many users must access the same database in a simple set of transactions, such as in online transaction processing or time-sharing programs.
MPP architecture handles huge amounts of data and provides faster analytics for large data sets. MPP systems work best when they can execute parallel processes independently on distributed data sets, which minimizes bandwidth and maximizes data locality. Data warehouse applications, database management systems, grid computing and computer clustering all thrive on MPP architecture, especially in data center environments. However, because an MPP setup can have hundreds of processors, it can prove much more complex and expensive to configure.
Your specific use case determines which multiprocessing architecture you require, whether it's AMP, SMP or MPP. If you consider factors such as your infrastructure limitations and application requirements while designing your multiprocessing system, you can reap the benefits of enhanced performance, improved efficiency and lower costs.