NUMA[Non-Uniform Memory Access],非均匀内存访问架构,是指多处理器系统中,内存的访问时间受处理器和内存之间相对位置影响。在NUMA中,和处理器相近的内存,通常称作local memory[本地内存], 和处理器相对远的内存,通常称之为remote memory[远端内存]。

NUMA Architecture Example

首先,由于摩尔定律的逐渐失效,单个CPU内的性能接近于饱和状态或者说性能提高的代价过大,其中一个现象就是现在AMD和Intel推出的5nm或者10nm的CPU都有着显著的积热散热问题。鉴于,单个CPU的性能已经接近饱和状态,要想进一步提高计算机的性能,就必须朝多核架构发展,具体表现形式是可以参考服务器主板,一块主板上有多个socket[插CPU的地方],同时一个CPU有多个Core。目前有两种架构,SMP[Symmetric Multiprocessing]和AMP[Asymmetric Multiprocessing],其中以SMP为主流。

SMP的特点为:

  1. 多个处理器都是同构的,即使用相同架构的CPU
  2. 多个处理器共享统一内存地址空间
  3. 多个处理器通常共享一个操作系统
  4. 多个处理器之间可以通过共享内存来协调通信

上述四个特点的直接效果就是,多个CPU可以像一个CPU那样工作,用户并不会察觉出区别。

但是在共享内存的机制上,出现了问题,又分出两个策略NUMA和UMA

  • NUMA非均匀内存访问架构是指多处理器系统中,内存的访问时间是依赖处理器和内存之间相对位置的。访问Local Memory的速度比访问Remote Memory要快

  • UMA(Uniform Memory Access)均匀内存访问架构则是处理器对共享内存的访问距离和时间是相同的。

因为主板上PCIE通道数量有限,CPU连通的内存也就有限制,所以NUMA对于UMA来说扩展性更好。

NUMA架构的具体特征总结为:

  1. 每个CPU核独享L1、L2级缓存,L3级缓存为共享缓存
  2. 一个SOCKET称之为一个NUMA结点,不同NUMA节点之间通过总线连接
  3. 接近NUMA结点的内存成为本地内存,其他NUMA节点的内存称之为远端内存
  4. NUMA节点对本地内存的访问更快