Table of Contents
SMP
SMP (Symmetric Multiprocessing) describes a system where multiple identical processor cores share a single main memory and a single operating system instance, with every core equally capable of running any task and accessing any memory address at (in the idealized case) the same cost. It's the dominant architecture inside a single machine today: essentially every multi-core desktop, laptop, and single-socket server is an SMP system.
Symmetric means no favorites
The “symmetric” in SMP refers to the cores, not the memory: any core can run any thread, handle any interrupt, and access any part of memory, with no core designated as special the way a master/worker or asymmetric design would have one. This is what lets a single OS scheduler treat all cores interchangeably when deciding where to run a given thread next, rather than needing special-case logic for a “boss” core.
Where the symmetry breaks down
Real SMP systems are only symmetric with respect to which core can run what; they are not symmetric with respect to cost. A single-socket, multi-core chip typically still has per-core private L1/L2 and a shared L3, so a core accessing data another core just touched pays a different (usually higher) cost than accessing data already in its own cache, purely due to Cache coherence traffic. Multi-socket systems break the symmetry further and explicitly: memory attached to a different socket is genuinely slower to reach, which is the NUMA regime, formally a departure from the pure SMP model even though the OS and programming model mostly still present it as one.
Contrast with distributed memory
SMP's defining property, a single shared memory every core can address directly, is what distinguishes it from a cluster of separate machines communicating over an Interconnect via MPI. Inside one SMP node, threads can pass data by writing to a shared variable and relying on synchronization primitives to coordinate; across SMP nodes, there's no shared address space at all, and data has to move explicitly over the network. Most HPC systems today are hybrids: MPI processes coordinate across nodes, while each node internally is an SMP (or NUMA) system exploited with threads or OpenMP.
