基本概念

  • 为什么要有多处理器架构?

由于摩尔定律的失效,单个CPU内的晶体管的数量接近于饱和状态,因此单个CPU的性能已经接近饱和状态,这时,要想提高计算机的性能,就必须朝着多核架构发展。多核架构中,常见的有两种架构,SMP架构和AMP架构。

  • SMP(Symmetric Multiprocessing)架构:即多处理器架构,是目前最常见的多处理器计算机架构
  • AMP(Asymmetric Multiprocessing)架构:即非对称多处理器架构,则是与SMP架构相对的概念

SMP架构和AMP架构的主要区别是什么呢?主要有以下几点

  1. SMP架构的多个处理器都是同构的,使用相同架构的CPU;而AMP架构的多个处理器可能是异构的。
  2. SMP架构的多个处理器共享统一内存地址空间;而AMP架构的每个处理器则拥有自己的独立地址空间。
  3. SMP架构的多个处理器通常共享一个操作系统实例;而AMP架构的每个处理器可以有或者没有运行操作系统,每个处理器可以独立运行不同的操作系统。
  4. SMP架构的多个处理器之间可以通过共享内存来协调通信;而AMP则需要提供一种处理器间的通信机制。

在SMP架构中,又可以分为NUMA架构和UMA架构

  • NUMA(non-Uniform Memory Access)非均匀内存访问架构是指多处理器系统中,内存的访问时间是依赖处理器和内存之间相对位置的。在这种设计里面存在和处理器相近的内存,通常称作本地内存;还有和处理器相对远的内存,通常称之为远端内存。
  • UMA(Uniform Memory Access)均匀内存访问架构则是与NUMA架构相反,所以处理器对共享内存的访问距离和时间是相同的。

NUMA架构图结构如下所示:


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

基于ATAM架构分析 amper架构_c++

NUMA架构图

NUMA结点的内存分配方式

  • Local分配:分配本地内存
  • InterLeaved分配:交错分配内存
  • Blocked分配:如图所示

基于ATAM架构分析 amper架构_虚拟机_02

NUMA结点的内存分配方式