Shared memory architecture
In computer architecture, shared memory architecture (SMA) refers to a multiprocessing design where several processors access globally shared memory.[1]
Shared memory architectures may use:[1]
-
- Uniform Memory Access (UMA): all the processors share the physical memory uniformly.
-
- Non-Uniform Memory Access (NUMA): memory access time depends on the memory location relative to a processor.
-
- Cache-only memory architecture (COMA): the local memories for the processors at a node is used as cache.
In a SMA system processors communicate by reading and writing memory locations.[1] The two key problems in scaling an SMA system are:[1]
-
- performance degradation due to "contention" when several processors try to access the same memory location.
-
- lack of "coherence" if memory is cached and goes out of synch with the original values as modifications take place.
In case different types of processors like e.g. a CPU and a GPU have a shared memory architecture, the MMU of the CPU and the IOMMU of the GPU have to share certain characteristics, like e.g. a common adress space.
See also
- Shared memory
- Shared graphics memory
- Heterogeneous System Architecture – enables shared pointers