共享内存模型UMA NUMA COMA

共享内存模型

多处理器环境的内存共享模型主要有3种:

  • Uniform Memory Access (UMA)
  • Non-uniform Memory Access (NUMA)
  • Cache-only Memory Access (COMA)

UMA

UMA(一致性内存访问)的特点是多个处理器通过一条总线访问系统所有可用的内存,每个处理器访问内存的时间是一样的,所以称为一致性内存访问。
共享内存模型UMA NUMA COMA_第1张图片
UMA存在的问题是多个处理器通过一条总线访问内存,使共享总线上负载增加。多个处理器会争用memory controller造成冲突。另外总线带宽有限,会有访问延迟。

SMP(Symmetric Multi-Processor)对称多处理器又被称为UMA。
共享内存模型UMA NUMA COMA_第2张图片
SMP的特点就是多个处理器共享一个集中式的内存。对称的意思是处理器之间没有主从之分。SMP架构主要用于PC和移动装置领域,可以显著提高并行计算能力,但SMP不适合超大规模的服务器端场景,例如:云端计算。

NUMA

NUMA(非一致性内存访问)的特点是每个处理器都有一个本地内存。而且处理器可以访问其他处理器的本地内存(远端内存)。
共享内存模型UMA NUMA COMA_第3张图片
也可以一小组CPU一起访问它们自己的本地内存。存在多组CPU和它们的内存组时,每组CPU和内存组就构成一个NUMA节点(node)。
共享内存模型UMA NUMA COMA_第4张图片
NUMA的不足是处理器访问远端内存时会产生延迟。CPU访问本地内存时速度很快,当本地内存不够用时,可以使用远端内存。但是访问远端内存时延开销比较高。
共享内存模型UMA NUMA COMA_第5张图片

COMA

COMA是ccNUMA(Cache Coherent NUMA, 缓存一致性NUMA)的一种演变。COMA可以看成是专用的NUMA,将NUMA中的分布式内存用高速缓存来取代。全局地址空间由高速缓存组成。访问远端的高速缓存借助分布式高速缓存目录进行。
共享内存模型UMA NUMA COMA_第6张图片

Linux的NUMA node

一个node中包含多个CPU。节点和CPU的关系如下图:

共享内存模型UMA NUMA COMA_第7张图片

Linux内核描述node的数据结构为pg_data_t。

参考资料

What is NUMA (non-uniform memory access)?

内存条物理结构分析

什麼是SMP,UMA,NUMA

系统和内存架构(System & Memory Architecture)

OpenStack Nova 高效能虚拟机器之NUMA 架构亲和

你可能感兴趣的:(共享内存模型UMA NUMA COMA)