本文翻译自: Memory: Shared vs Distributed
1.共享内存:
从硬件的视角上看这意味着所有的处理器能够基于总线直接访问共同的物理内存。当这些处理器都在访问相同的内存时,它们可以独立工作。在这样的内存中,对可用存储数据的任何改变都会被所有处理器知晓
(1) 统一内存访问(Uniform Memory Access (UMA))
今天最常见的代表是对称多处理器(SMP)机器。
处理器都相同
对内存的访问和访问次数相同。
有的时候也被称为CC-UMA,或Cache Coherent UMA(缓存一致性UMA)。缓存一致性是在硬件级别实现的,意味着如果一个处理器改变了共享内存中的位置,所有其他的处理器都会知道这种改变。
(2) 非统一内存访问(Non-Uniform Memory Access (NUMA))
经常在物理上连接两个以上的SMP。
一个SMP可以直接访问其他SMP的内存。
不是所有的处理器对所有的内存都有同等的访问时间。
跨连接的内存访问更慢。
一旦构建了缓存一致性,它们也可以被叫做CC-NUMA,也就是缓存一致性UMA。
2.分布式内存:
从硬件视角看,分布式内存指的是处理器只能通过网络去访问其他处理器的内存的情况。从软件视角上看,这意味着每一个处理器只能直接访问本地机器内存,并且应当使用网络通信去访问其他处理器的内存。
3.混合内存:
上述两种内存的结合,通常用于今天的超级计算机。混合内存系统基本上是共享内存网络,在每一个组件内,内存供所有CPU访问,此外,它们能通过网络访问存储在其他单元的任务和信息。