芯片层 开放阅读

共享内存

Shared Memory

概念 ID
shared-memory
更新时间
2026-05-29
来源数量
待补

共享内存

3 秒看懂

共享内存是多个处理器核心或线程可 直接访问的同一物理内存区域,避免了数据拷贝和消息传递开销。在 AI 场景中,它是 单机多卡、多 CPU 核心、GPU 片上存储协作 的底层基石,直接决定训练/推理的数据交换效率和可扩展性。

3 分钟产业解释

共享内存在 AI 系统中至少覆盖三个层级:

  1. CPU 共享内存(多核/多路):同一服务器内所有 CPU 可通过统一物理地址空间访问内存,但现代 NUMA 架构下存在跨节点延迟差异。
  2. GPU 共享内存(片上 SRAM):CUDA 中每个 SM 配有低延迟共享内存,用于线程块内数据共享,是手写高性能 Kernel 的核心优化对象。
  3. 系统级共享内存(多卡/PIM):如 IBM Power 平台的 CAPI、Grace Hopper 的 NVLink-C2C 实现 CPU-GPU 内存一致性共享,或新兴的 CXL 内存池化,让多设备直接访问同一片内存区域。

产业关键矛盾在于:延迟-带宽-容量-一致性 四维权衡。共享内存越“真”,编程越简单,但硬件代价和扩展性越受限;越“伪”(消息传递/零拷贝抽象),性能可扩展但软件复杂度陡增。当前趋势是在算力集群中通过高速互联(NVLink/InfiniBand/PCIe 5.0)构建 逻辑共享内存,以兼顾编程效率与规模化训练。

15 分钟专家深入

从分布式并行策略看,共享内存直接影响:

  • 数据并行:若模型可在一张 GPU 完整放下,则数据并行和梯度 AllReduce 均在节点间进行,与共享内存无关;但当模型分片到同一节点内多张 GPU 时,可通过 GPU 间 NVLink 实现的共享内存空间加速梯度同步。
  • 模型并行/张量并行:Megatron-LM 式张量并行依赖每次前向/反向计算中频繁的 Sync 操作。若采用节点内 NVLink 连接的 GPU 共同构成共享内存域,AllReduce/ReduceScatter 操作可实现接近内存带宽的速度,极大地降低通信开销。
  • MoE 路由:专家并行中的 All-to-All 通信更依赖节点间网络,但若专家部分部署在共享内存节点内,可用共享内存充当路由缓冲,减少数据搬移。

在单 GPU 内部,共享内存作为可编程 Cache 的使用是极致性能优化的关键:FlashAttention 正是通过把注意力矩阵加载到共享内存分块计算,绕开了 HBM 带宽瓶颈。共享内存的容量(每 SM 几十~百余 KB)与访问延迟(约 20-30 个时钟周期)直接决定了分块算法的颗粒度。

技术原理

共享内存的硬件基础

对称多处理 (SMP):传统多路 CPU,所有核平等访问同一总线上的内存。NUMA 打破这一假设,引入本地/远端内存概念,访问延迟差异可达 1.5~3 倍[定性,具体倍数依赖体系架构]。操作系统和内存分配器通过 numactl、页迁移等方式优化亲和性,对上层尽力呈现“伪共享”。

缓存一致性协议(如 MESI、MOESI):硬件保证当多个处理器缓存同一内存块时,写操作最终被所有核可见。大规模共享内存系统中,缓存一致性流量随着核心数增长成为性能瓶颈,直接限制 CPU 内存共享的可扩展上限——典型场景是千核以上 CPU 的 HPC 系统退化为消息传递。

GPU 共享内存 (on-chip SRAM):按 SM(流式多处理器)分布,属于同一线程块的所有线程可访问。物理上常由多个存储体组成,支持无冲突的高并发访问。CUDA 中通过 __shared__ 修饰变量声明,生命周期与块同名,是显式管理的 scratchpad,不同于 L1 缓存(自动管理)。

跨设备共享内存:NVIDIA NVLink、CXL 3.0 等提供设备间内存语义。例如,Hopper 架构通过 NVSwitch 可以使 8 张 GPU 按统一地址空间访问彼此的 HBM,允许cudaMemcpyAsync 直接 Peer-to-Peer 传输而不经过 CPU 内存。CXL.mem 协议更允许 CPU 与外设的直连共享,用于池化内存。

编程抽象

多线程(Pthreads/OpenMP):利用共享内存进行线程间同步(互斥锁/条件变量/读写锁)和数据共享。数据竞争(data race)需靠原子操作或锁解决。
分布式共享内存(DSM):软件层模拟跨节点共享内存,如 Apache Ignite、Hazelcast,但一致性延迟大,在 AI 场景很少用于训练,多见于推理缓存。
统一虚拟地址 (UVA):CUDA 提供单一指针访问不同设备的内存,底层仍可能涉及 page fault 驱动的迁移。

关键参数与量化

  • CPU 共享内存带宽:Intel Sapphire Rapids 双路系统理论 DDR5-4800 峰值为 ~307 GB/s 每 socket,但跨 socket 延时约为本地访问的 2 倍[未充分披露,典型系统评估]。
  • GPU 共享内存 SM 容量:主流架构为 128 KB / SM(可配置为部分 L1 缓存), 带宽约为数十 TB/s 级别(内部 SRAM),远超 HBM。
  • 跨 GPU 共享内存带宽:NVLink 4.0 单链路双向 100 GB/s,DGX H100 8 卡全互联理论总带宽 900 GB/s(双向),实际可用带宽取决于负载和通信模式[英伟达公开信息]。

技术演进史

  • 1980 年代:多处理器共享总线 SMP 成为小型机主流,开创多线程编程。
  • 1990 年代:NUMA 在大型 UNIX 服务器中普及,缓存一致性协议复杂化。
  • 2000 年代:多核 CPU 兴起,共享内存编程(POSIX 线程、OpenMP)成为主流。HPC 领域逐步转向 MPI+OpenMP 混合编程,共享内存局限于节点内。
  • 2007 年 CUDA 推出:引入 GPU 线程块级共享内存,释放可编程 scratchpad 的能力。
  • 2010 年代中期:NVIDIA NVLink 实现 GPU 间共享内存,减少 PCIe 瓶颈。
  • 2020 年代:CXL 联盟推动跨 CPU 和设备的内存共享与池化,成为数据中心资源解耦的候选技术。Grace Hopper 的 NVLink-C2C 进一步整合 CPU-GPU 内存一致性域。
  • 2023-2024:大模型训练推动超节点设计,如 NVIDIA GB200 NVL72 通过 NVLink 网络构建 72 GPU 共享内存域([公开信息]),在逻辑上抹除单卡内存边界。

技术路线对比(量化表)

维度CPU SMP 共享GPU 片上共享内存跨 GPU 共享 (NVLink)跨节点共享 (CXL/DSM)
延迟~100 ns (本地)~10-30 时钟周期 (ns 级)sub-μs 级别μs 至 ms 级别
带宽100-300 GB/s (每 socket)数 TB/s900 GB/s (8 GPU)数十至数百 GB/s (单链路)
一致性硬件 MESI无(显式管理)软件协议/硬件 NUMA混合
容量上限TB 级数十 MB(总和)数十到数百 GB(HBM 总和)PB 级(池化)
典型应用多线程推理服务FlashAttention Kernel张量并行、专家并行内存膨胀、冷数据共享
成熟度成熟成熟中等,需框架适配早期,生态构建中

数据来源:根据各厂商公开架构规格及社区评测估算[未充分披露具体测试条件]。

上下游

上游:底层硬件与协议

  • CPU 微架构:核心数、LLC 容量、UPI/Infinity Fabric 互连速率直接决定 NUMA 节点间共享效率。
  • GPU 架构:SM 数量和每 SM 的共享内存大小(如 128 KB)影响 Kernel 设计的块大小上限。
  • 互连技术:NVLink、NVSwitch、InfiniBand NDR/GDR、CXL 控制器、PCIe 5.0/6.0 交换芯片。
  • 一致性协议芯片:如 Astera Labs 的 PCIe/CXL 交换,用于内存池化。

下游:应用与框架

  • 分布式训练框架:PyTorch FSDP、DeepSpeed ZeRO 通过数据分片+适时重配实现内存叠加;它们更依赖节点内共享带宽或显式的通信原语。Megatron-LM 通过张量/流水线并行降低对共享内存的直接需求,但 NVLink 共享域可提升同步操作效率。
  • 推理引擎:如 TensorRT-LLM 利用共享内存缓存 KV 块,避免 HBM→SM 重复搬动。
  • 数据库/特征存储:共享内存多用于进程间缓存(如 Redis、共享内存队列),支持 GPU 直连访问(GPUDirect Storage/Shared Memory)。
  • 资源调度器:Kubernetes 配合设备插件感知 NUMA 拓扑、GPU 间 NVLink 拓扑,以最佳共享内存拓扑部署 Pod。

关键指标

  • 内存带宽利用率:实际吞吐 / 理论峰值。高性能 Kernel 通常需达到 80% 以上。
  • NUMA 亲和性:本地内存访问比例,若低于 90% 性能恶化[估算值]。
  • 同步开销:锁竞争导致的 CPU 利用率损失,或 GPU 上 __syncthreads() 带来的流水线气泡。
  • 容量碎片:共享内存中未被利用的预留空间,影响并发性(如每个线程块的共享内存用量决定 SM 的 Occupancy)。
  • 一致性流量占比:总线中缓存一致性协议的报文比例,过高可导致有效带宽骤降。

供需与市场数据

共享内存作为基础能力无法单独剥离为产品,市场数据体现于支撑共享内存的硬件/软件交付:

  • 高性能服务器 CPU 市场:支持更多核心、更大缓存和更高速 UPI 的处理器对共享内存应用支撑能力更强。2023 年全球数据中心 CPU 出货金额约 600 亿美元[参考 Mercury Research],大型云厂商对 NUMA 优化实例需求旺盛。
  • NVLink/NVSwitch 推动超节点:随着大模型参数逼近数万亿,跨 GPU 共享内存域的需求急增,NVSwitch 芯片成为 Blackwell 平台标配,该细分市场规模有望从 2024 年数十亿美元向 2026 年百亿美元攀升[行业估算,未充分披露具体模型]。
  • CXL 生态:到 2027 年,CXL 附加内存模块及服务器渗透率可能达到 20-30%,带动内存共享与池化解决方案市场约 50 亿美元[来自 Yole 等研究机构引用]。

代表公司与资本映射

  • NVIDIA:通过 NVLink/NVSwitch 和 GB200 构建超大规模共享 GPU 内存域,是当前 AI 训练的核心壁垒。其 Grace-Hopper 的 C2C 一致性互联向 CPU-GPU 共享内存延伸。
  • Intel/AMD:在服务器 CPU 中强化 NUMA 性能和 CXL 支持,布局共享内存池化,同时通过 FPGA/SmartNIC 参与共享内存加速。
  • Astera Labs:专注 CXL/PCIe 交换芯片,解决内存共享中的信号完整性和延迟问题,2024 年上市,被视作 CXL 赛道风向标。
  • Marvell/Broadcom:提供定制 ASIC 的数据中心互连控制器,支持 CXL 等物理层,使云厂商可自研共享内存架构。
  • 国内:燧原、寒武纪等 AI 芯片厂商在各自芯片内部实现类似共享内存(片上 SRAM),并尝试多卡互联内存共享,但目前规模较小。

资本映射层面,高记忆带宽、低延迟共享内存是判断 AI 系统公司方案竞争力的关键指标,产业研究通常跟踪 NVLink 代数、CXL 产品落地节奏。

投资逻辑

  1. 算力集群规模扩大 → 互连带宽 → 共享内存域价值增加:当单模型需要数百 GPU 协同,节点内 GPU 共享内存降低了整体梯度同步和专家路由开销,使能更大 batch size 和更高的加速比。产业研究可跟踪高速互连芯片、交换芯片和合封光模块(如博通/AAOI)的产品验证与收入披露。
  2. 池化与存算分离:CXL 内存共享可降低 DRAM 总拥有成本,使 GPU/NPU 可直接访问大容量扩容内存,有望催生新的内存硬件租赁模式(如内存即服务)。可观察变量包括 CXL 控制器 IP、内存扩展卡厂商(如 Rambus、SK hynix 的 CMM)的客户认证和出货节奏。
  3. 对 GPU 供应商护城河的影响:NVIDIA 通过 NVLink 私有协议构建的强锁定共享内存生态,可能因 CXL 等开放标准受到挑战,但短期软件兼容性和生态系统窗口仍使其占据优势。分析重点是开放 vs 封闭路线的长期动态。
  4. 风险:共享内存一致性硬件复杂度极高,若 CXL 3.0/PCIe 6.0 等量产延迟,可能拖累大规模内存池化商用进度。同时,纯算法层面如 DeepSpeed ZeRO-Infinity 通过软件虚拟化可能削弱对高性能共享内存的需求。

常见误读纠偏

  • 误读 1:“共享内存就是多线程随便读写同一块内存,不需要同步。”
    纠正:硬件保证了原子性(如对齐的 word 读写),但不保证可见性顺序。不加锁且未使用 memory fence 等同步手段会导致数据竞争和不可复现的计算错误。在 GPU 上,__shared__ 的内存需自行插入 __syncthreads() 以保证一致性。

  • 误读 2:“GPU 的共享内存和 CPU 的共享内存是一回事。”
    纠正:GPU 共享内存是每个 SM 私有的 SRAM,不可跨 SM 访问;而 CPU 的共享内存是整个节点内所有核可见。GPU 编程中,只有在全局内存(HBM)中进行原子操作才能跨线程块通信。

  • 误读 3:“有 NVLink 后,多 GPU 就等于一个大共享内存池,编程和单卡一样。”
    纠正:NVLink 虽提供统一地址空间和 Peer-to-Peer 访问,但带宽和延迟仍然与本地 HBM 有显著差异,且一致性协议往往只保证弱一致。直接当成 UMA 会导致性能陷阱。实际上 NCCL 等通信库仍依赖显式拷贝和同步,并非透明使用。

  • 误读 4:“共享内存一定比消息传递快。”
    纠正:在 NUMA 架构或设备间,远端共享内存访问延迟可能远高于异步消息传递的流水线隐藏延迟。合理方案常是节点内用共享内存,节点间用消息传递(如 MPI + OpenMP),强求统一共享内存可能在特定场景下性能更差。

学习路径

  1. 基础篇:理解虚拟内存、页表、缓存一致性协议(《Computer Architecture: A Quantitative Approach》相关章节)。
  2. CUDA 共享内存优化:阅读 CUDA C Programming Guide 中关于 Shared Memory 的部分,手写矩阵乘法 kernel 优化(从全局内存到共享内存分块),使用 nvprof 分析 bank conflict。
  3. 分布式系统共享内存:研究现代 NUMA 操作系统实现(Linux numa/core affinity)、NUMA 感知内存分配。
  4. 高性能网络与内存语义:阅读 GPUDirect RDMA、NVLink、CXL 规范摘要,理解不同共享范围的性能特征。
  5. 实战 AI 框架:分析 Megatron-LM 的张量并行通信模式(AllReduce)如何受益于 NVLink 共享内存,翻看 NCCL 拓扑检测代码。用 PyTorch 复现 FlashAttention,关注 shared memory tile 大小的选取逻辑。

一句话总结

共享内存是 AI 系统中以“直接可见”换取“极致速度”的设计基石,其层次化实现(SM 内、GPU 间、节点内)正不断被推高,但始终受制于一致性、容量和可扩展性的不可能三角。

延伸阅读与来源

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型