Shared-memory architecture
Appearance
This article relies largely or entirely on a single source. (December 2012) |

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 each node is used as cache instead of as actual main memory.
In a shared memory architecture system processors communicate by reading and writing memory locations.[1] The two key problems in scaling an shared memory architecture 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 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 address space.