关于Local Memory与Global Memory的概念及UMA、NUMA相关疑问
关于Local Memory、Global Memory及UMA/NUMA的概念澄清
1. Local Memory 和 Global Memory 的定义
- Local Memory:并非特指给单个程序分配的内存,它的定义要结合具体硬件场景来看:
- 在NUMA架构的多处理器系统中,Local Memory是直接挂载在某颗CPU芯片上的物理内存模块,这部分内存对该CPU来说访问延迟最低,是专属这颗CPU的“本地”资源;
- 在GPU架构里,Local Memory是每个线程块(Thread Block)独有的内存空间,仅能被该线程块内的线程访问,和程序级的内存分配不是一个层面的概念。
- Global Memory:在多处理器系统中,它通常就是指整个系统的主物理内存,所有处理器/核心都能访问。放到GPU场景里,Global Memory则是所有线程都可访问的显存区域,对应CPU端主内存的定位。
2. UMA/NUMA 中的“本地内存”≠缓存
你之前的误解很普遍,核心要区分清楚两个层级的存储:
- 缓存(Cache)是CPU核心内置的高速缓存,属于处理器内部的近程存储,容量小、速度极快,作用是暂存主内存中高频访问的数据;
- 而UMA/NUMA里的“本地内存”是主内存的一部分,属于外部硬件模块,容量远大于缓存,访问速度比缓存慢,但在NUMA场景下,访问本地内存的速度会明显快于访问其他CPU节点的远程内存。
- UMA架构的本质是:所有CPU核心访问系统内任意一块主内存的延迟和带宽完全一致——这里的“本地/全局”不是缓存和主内存的区别,而是针对多CPU节点的内存分布而言:UMA架构里没有“专属某颗CPU的本地内存模块”,所有主内存对每个CPU都是平等可访问的“全局”资源;而NUMA架构中,每个CPU都有自己连接的本地内存池,访问本地内存和远程内存的延迟存在差异,这就是“非均匀访问”的由来。
内容的提问来源于stack exchange,提问作者Sibulele
相关产品推荐
相关产品推荐

