首先区分一下CPU和GPU之间的共享内存:
-
CPU中的共享内存:更像是一种机制,它利用主内存(DRAM)和多级缓存(L1, L2, L3)来实现多核或多线程之间的数据共享。共享内存的实现依赖于缓存一致性协议和操作系统提供的同步机制,由此确保多核或多线程的正确访问。
-
GPU的共享内存:是一块专门划分出来的高速内存,存在于每个计算单元(如NVIDIA的流多处理器SM或AMD的计算单元CU)中,用于在并行计算线程之间快速传递数据。
因此对于CPU共享内存,一般关注其实现方式和依赖的机制。对于GPU共享内存,则关注其物理划分和用途。下面分别针对CPU和GPU的共享内存做个说明:
CPU中的共享内存机制
-
CPU中的系统主内存(DRAM)由多个CPU核心共享,每个核心都可以通过内存控制器访问这块内存。这是多核CPU共享内存机制实现的前提
-
为了提高访问速度,CPU设计了多级缓存。缓存系统帮助减少从主内存读取数据的延迟。
-
单核环境下的共享内存:
-
多进程:在单核CPU上,不同进程仍然可以通过操作系统提供的共享内存机制(如POSIX共享内存、System V共享内存)来共享数据。操作系统管理这些共享内存区域,确保进程之间能够协作。
-
多线程:多个线程共享同一个进程的地址空间。尽管在单核环境下,线程的执行是通过时间片轮转(时间分片)来实现的,但它们依然能够共享内存。
-
多核CPU通过缓存一致性协议(如MESI协议)和操作系统提供的同步机制(如互斥锁、信号量)来管理对共享内存的访问。这些机制确保了多个核心或线程能够一致地访问和修改共享数据,具体如下。
-
缓存一致性协议(如MESI协议):在多核CPU中,每个核心可能会缓存相同的内存数据副本。缓存一致性协议通过维护这些副本的一致性,确保所有核心看到的数据是一致的。
-
操作系统的同步机制:操作系统提供了各种同步工具(如互斥锁、信号量、条件变量)来防止多个线程或进程在访问共享内存时产生竞争条件。这些工具确保在同一时间只有一个执行单元能够访问共享资源,从而避免数据冲突。
GPU的共享内存
- 专用高速内存:在GPU中,每个计算单元(如NVIDIA的SM或AMD的CU)都有一块共享内存,这是一种快速、低延迟的存储区域。共享内存用于在同一线程块内的线程之间快速交换数据。
- 并行计算优化:GPU共享内存的设计是为了优化并行计算性能,允许多个线程高效地访问和共享数据,而无需频繁访问更慢的全局内存。
全是字看了头好痛。贴点图顺便介绍一下CPU和GPU的存储器层次结构吧
CPU的存储器层次结构
CPU的存储器层次结构也被叫做金字塔层次结构,主要有寄存器、缓存、内存、外存。
- 寄存器(Register):位于CPU内部,是最快速和最小容量的存储器。用于存储指令、操作数和中间计算结果,直接供CPU执行单元使用。
- 高速缓存(CPU Cache):在 CPU 里,通常会有 L1、L2、L3 这样三层高速缓存。
- L1 Cache:每个CPU核心拥有自己的L1缓存,用于存储最常用的数据和指令。
- L2 Cache:通常由多个核心共享的更大容量的缓存,加速对主存的访问。
- L3 Cache:更大容量的共享缓存,位于多个核心之间和主内存之间,减少对主存的访问延迟。
- 内存(DRAM):是CPU和GPU共享的主要存储器,存储正在执行的程序和数据。但访问速度比CPU内部的缓存慢得多。
- 硬盘:如 SSD(固态硬盘)、HDD(硬盘)。这类属于是外存了,外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器断电后仍然能保存数据。


GPU的存储器层次结构
不同型号的GPU在存储器层次结构上可能会有一些差异,这里以NVIDIA的CUDA为例展开说明。
GPU的存储器层次结构以寄存器最快、最小,接着是共享内存,然后是全局内存,速度逐级递减,容量逐级递增。GPU还可能包括更大容量、速度更慢的设备内存(如NVIDIA的Device Memory)用于长期存储和数据传输。
内容全在图里了。。
需要注意的是,不同GPU型号的存储器层次结构之间是有差异的,较新的GPU型号通常具有更多的寄存器和更大的共享内存,以及更高效的缓存系统。每一代的新架构通常也会引入改进的存储器层次结构,以提高性能和效率。
例如NVIDIA Turing架构和Ampere架构的比较
- Turing架构(如GTX 16系列和RTX 20系列):具有标准的L1和L2缓存架构,以及固定大小的共享内存和寄存器分配。
- Ampere架构(如RTX 30系列):引入了更高效的L1缓存和L2缓存设计,提供了更大的共享内存和更多的寄存器,以支持更复杂和高性能的计算任务。
关于cuda的内存层次结构可以看这篇博文:CUDA精讲(3)-- GPU体系结构之内存层次结构_gpu 什么变量会使用register-CSDN博客
关于CPU的可以看这一篇:存储器 - 金字塔层次结构:越靠近CPU速度越快,容量越小,价格越贵 - binarylei - 博客园 (cnblogs.com)
两个博主写的都很清楚。