AI 芯片存算一体(PIM/CIM)架构深度解析:从冯·诺依曼瓶颈与近存计算到 RRAM 模拟矩阵乘的 LLM 推理显存墙突破原理

AI 芯片存算一体(PIM/CIM)架构深度解析:从冯·诺依曼瓶颈与近存计算到 RRAM 模拟矩阵乘的 LLM 推理显存墙突破原理

  • 核心痛点:LLM 自回归解码每生成一个 token 都要把全部权重从显存搬运到计算单元一次,算术强度趋近 1 FLOP/Byte,而 GPU 的算力带宽平衡点在数百 FLOP/Byte------数 PFLOPS 级算力在等数据搬运,存储墙成为推理吞吐与成本的结构性下限。
  • 适配人群:关注 AI 推理性能上限的系统架构师、GPU/加速器内核工程师、大模型推理服务开发者、存储与芯片行业从业者。
  • 收获能力:掌握存算一体三条技术路线(近存 PNM、存储体旁 PIM、阵列内 CIM)的原理与数学基础,理解 HBM-PIM/LPDDR5X-PIM/GDDR6-AiM 商用实现的微架构细节,能用一阶性能模型判断自己的推理负载是否受益于 PIM,并规避量化格式失配、物理布局错位、GEMV-GEMM 失配三大落地陷阱。

技术背景与演进逻辑

  • 冯·诺依曼架构自 1945 年确立以来,计算单元与存储单元始终分离:数据先从内存搬到寄存器,再进运算器,结果写回内存------计算的性能上限从来不是运算器本身,而是这条"搬运总线"。
  • 过去三十年,这条总线被三堵墙逐步逼入绝境:
  • 带宽墙:HBM4 单栈 2 TB/s 已经是极限级工程(2048 位接口 + TSV 堆叠 + 先进封装),而 GPU FP8 峰值算力已达数 PFLOPS------算力每代翻倍,带宽每代只涨约 50%,剪刀差持续拉大。
  • 能耗墙:45nm 工艺经典数据(Horowitz,ISSCC 2014)------一次 32 位 DRAM 读取约 640 pJ,一次 32 位浮点乘法约 3.7 pJ:搬一个数的能量够做约 170 次乘法,AI 芯片的大部分功耗花在数据搬运而非计算上。
  • 利用率墙:batch-1 自回归解码每生成一个 token 要读完全部权重,FP16 权重下 GEMV 的算术强度约为 1 FLOP/Byte;H100 的 FP8 算力带宽比约 600 FLOP/Byte------矩阵引擎利用率理论上限约 0.17%,花钱买的算力在解码阶段近乎全部闲置。
  • 推演:自回归依赖决定 batch-1 时权重无法跨 token 复用,算术强度提不上去 -> 只剩两条路:要么加宽搬运通道(更多 HBM 栈、更宽总线,代价是功耗、封装与成本),要么把计算搬到数据旁边------后者就是存算一体(Processing-in-Memory / Computing-in-Memory)。
  • 产业信号:三星在 Hot Chips 2026 给出成本数据------内存已占 AI 芯片物料成本的 63%(2024 年 Q1 为 52%);JEDEC 于 2026 年 4 月宣布 LPDDR6-PIM 标准制定接近完成。存储厂把算力做进内存,动机不再是学术理想,而是 AI 芯片的成本结构本身。
  • 演进时间线(text 树表达):
text 复制代码
存算一体演进时间线
├── 1945   -> 冯·诺依曼架构确立:计算与存储分离,奠定搬运范式
├── 1990s  -> Berkeley IRAM:处理器嵌入 DRAM 的最早系统性尝试
├── 2016   -> ISAAC / PRIME:RRAM crossbar 模拟矩阵乘加速器,掀起存内计算复兴
├── 2021.2 -> 三星 HBM-PIM(FIMDRAM / Aquabolt-XL):首个产品级近存 PIM
│             [架构]: PCU 可编程计算单元 + FP16 SIMD,1.2 TFLOPS/栈
├── 2022   -> SK hynix GDDR6-AiM:MAC 单元嵌入 GDDR6 存储体旁,PIM 进入 GDDR 生态
├── 2024   -> ASPLOS 三连发:NeuPIMs / AttAcc / IANUS(NPU+PIM 异构 LLM 推理)
│             同年 Duplex:HBM 逻辑层放 32 个 GEMM 模块(PNM 路线)
├── 2025   -> SK hynix AiMX 卡实机演示(4 卡 + 2 H100 跑 vLLM/Llama 3);HBM4 量产
│             HPIM:SRAM-PIM + HBM-PIM 异构分工细化
└── 2026.8 -> 三星 LPDDR5X-PIM 产品化(Hot Chips 2026,实测 3.01x 吞吐)
              JEDEC LPDDR6-PIM 标准临近发布,PIM 从厂商定制走向通用生态

核心原理深度解析

带宽金字塔:被引脚锁死的内部带宽

  • DRAM 的内部并行度远大于对外引脚:一颗 LPDDR5X 内部有数十个 bank 可并行激活,但所有对外数据必须挤过同一组引脚------内部带宽与引脚带宽之间存在一个从未被利用的金字塔。
  • 带宽金字塔(以 LPDDR5X-PIM 实测数据为例):
text 复制代码
DRAM 带宽金字塔
├── 引脚带宽: 76.8 GB/s     -> 唯一能被外部 SoC 看到的部分,常规架构的上限
├── 内部 bank 级带宽: 614 GB/s -> 引脚带宽的 8 倍,常规架构永远用不到
│   ├── 16 个 PIM 计算块   -> 直接挂在 bank 阵列旁,原地消费内部带宽
│   └── 权重常驻 DRAM cell -> 只有小体量激活值与命令穿越引脚
└── 设计本质: 把 GEMV 数据通路从
             "cell -> 引脚 -> SoC 缓存 -> 矩阵引擎" 缩短为
             "cell -> 本地行缓冲 -> bank 旁 MAC 阵列 -> 部分和写回"
  • 一阶解码性能模型:batch-1 下每 token 必须读全部权重,token 生成速率受有效带宽约束:
  • m a t h r m t o k e n s / s a p p r o x d f r a c B W e f f S m o d e l mathrm{tokens/s} approx dfrac{BW_{eff}}{S_{model}} mathrmtokens/sapproxdfracBWeffSmodel
  • 其中 B W e f f BW_{eff} BWeff 为权重读取的有效带宽, S m o d e l S_{model} Smodel 为模型字节数。8 GB 权重在 614 GB/s 内部带宽下硬上限约 76 token/s------这正是 LPDDR5X-PIM 实测 81.3 token/s 想逼近的物理极限。

三条技术路线:从"存旁"到"存内"的光谱

  • 存算一体不是单一技术,而是按计算单元与存储阵列的距离划分的光谱:距离越近、可收割的带宽越高,但计算单元的工艺与自由度越差。
text 复制代码
存算一体技术路线分类
├── PNM 近存计算(Processing-Near-Memory)
│   ├── 位置: 存储封装的逻辑层 / 内存条形态(HBM base die、CXL 加速内存、PIM DIMM)
│   ├── 特点: 不动 DRAM 阵列,用先进逻辑工艺放完整 GEMM 引擎
│   ├── 代表: Duplex(HBM 逻辑层 32 个 GEMM 模块)、SK hynix CMM-Ax、UPMEM DIMM
│   └── 代价: 只能消费封装内带宽;逻辑面积挤占 base die 预算
├── 近 bank 级 PIM(Processing-In-Memory)
│   ├── 位置: 计算单元嵌入 DRAM 芯片内部、紧贴每个 bank(存储体)
│   ├── 特点: 直接消费 bank 内部带宽(约 8 倍引脚带宽),DRAM 工艺内塞小型 SIMD MAC
│   ├── 代表: 三星 HBM-PIM / LPDDR5X-PIM、SK hynix GDDR6-AiM
│   └── 代价: DRAM 工艺做逻辑性能差,只能做窄 GEMV,做不了宽 GEMM
└── 阵列内 CIM(Computing-In-Memory)
    ├── 数字 SRAM CIM: 电荷共享 / 位线加法树在阵列内完成乘加,精度无损但容量小
    ├── 模拟 RRAM/Flash CIM: 欧姆定律 + 基尔霍夫电流定律在 crossbar 一步完成矩阵乘
    └── 代价: 模拟通路需要 DAC/ADC 转换,精度、噪声、面积是三座大山

近 bank 级 PIM:存储体旁的 SIMD 引擎

  • 微架构构成:每个 bank 旁放置一个小型计算单元(三星称 PCU/PIM 块,SK hynix 称 MAC 引擎),核心组件是本地行缓冲、SIMD ALU 阵列、向量寄存器堆与控制寄存器堆。
  • 执行流:主机通过特殊命令把激活向量广播进各 bank 的源寄存器 -> 内存控制器发出 PIM 读命令,权重从 cell 流入本地 MAC 树 -> 部分和累加进向量寄存器堆 -> 写回 bank 或回读给主机。权重全程不出内存芯片,只有激活与结果过引脚。
  • 关键约束一(工艺错配):DRAM 工艺为存储电容与密度优化,逻辑晶体管性能差,每加一个晶体管都在侵蚀存储密度------有研究实测,为支持 FP16 与 INT32 双精度付出了约 126% 的面积开销。因此商用 PIM 只放最小 MAC 阵列、只支持均匀精度组合,天然只能做窄 GEMV。
  • 关键约束二(行缓冲冲突):PIM 计算要占用 bank 的行缓冲,导致同一 bank 的常规读写被阻塞------早期设计甚至整个通道阻塞,NPU 在 PIM 运行期间无法访存。NeuPIMs 用双行缓冲(一行服务常规读写、一行服务 PIM 计算)拆掉这一冲突,仅此一项平均吞吐提升 69.7%。

模拟存内计算:欧姆定律做矩阵乘

  • RRAM crossbar 把权重直接编码为电导:N x M 的 crossbar 中,权重 w i j w_{ij} wij 写入为电导 G i j G_{ij} Gij,输入向量以电压 V i V_i Vi 加在字线上。
  • 每根位线上的电流由基尔霍夫电流定律自然完成点积:
  • I j = s u m i = 1 N G i j c d o t V i I_j = sum_{i=1}^{N} G_{ij} cdot V_i Ij=sumi=1NGijcdotVi
  • 乘法由欧姆定律( I = G c d o t V I = G cdot V I=GcdotV)完成,加法由电流求和完成,N 项点积在一步物理过程中出结果,时延与 N 无关------这是模拟 CIM 理论能效比数字架构高 1-2 个数量级的根源。
  • 权重量化到多值电导:
  • G = G m i n + k c d o t D e l t a G , q u a d k i n 0 , 2 b c e l l − 1 G = G_{min} + k cdot Delta G,quad k in 0, 2\^{b_{cell}}-1 G=Gmin+kcdotDeltaG,quadkin0,2bcell−1
  • 单元比特数 b c e l l b_{cell} bcell 通常只有 2-4 位,更高精度靠位切片(bit slicing):把 8 位权重拆成高位/低位两份电导,ADC 分别转换后移位相加。
  • 模拟数据通路(text 流程树):
text 复制代码
模拟 CIM 一次矩阵乘的完整数据通路
├── 输入寄存器 -> DAC -> 字线电压 V_i
├── crossbar 阵列: 位线电流 I_j = Σ G_ij · V_i
│   └── 物理定律一步完成乘加,与矩阵规模无关
├── 电流 -> ADC 转换为数字部分积
│   └── ADC 精度 b 位 -> 能量近似 E ∝ 2^b,是全链路能耗与面积的主宰
├── 移位相加: 位切片的高低位部分积合并为整数结果
└── 数字后处理: 缩放、激活函数回到数字域
  • 模拟误差三座大山(text 树):
text 复制代码
模拟 CIM 误差来源
├── 器件层: 电导涨落(RDF 类随机性)、写入噪声、电导漂移(时间不稳定)
├── 电路层: 字线 IR 压降(大阵列电流拉偏电压)、导线寄生电阻、潜行电流
└── 转换层: ADC 有限精度与失调、DAC 非线性
└── 缓解手段: 位切片降每位精度、周期校准、冗余列 ECC、混合数字辅助宏
  • 为什么模拟 CIM 至今没有大规模商用:ADC/DAC 开销随精度指数增长;IR 压降、器件涨落、电导漂移让有效精度普遍只有 4-8 位;权重固化在模拟器件中意味着"编程一次、长期使用",与需要频繁写回的训练天然冲突。模拟 CIM 的现实定位是推理侧超低功耗边缘场景------Mythic 的模拟 Flash 方案单芯片约 25 TOPS、功耗约 3W,走的正是这条路线。
  • 数字 SRAM CIM 是另一条阵列内路线:在 SRAM 位线上加电荷共享电路,乘加在数字域完成,精度无损、可随时写回,代价是 6T cell 面积大、片上容量只有 MB 级------HPIM 用它承载延迟敏感的注意力小矩阵运算,容量敏感的权重 GEMV 仍交给 HBM-PIM。

Roofline 视角:PIM 到底优化了什么

  • 算术强度定义与 Roofline 性能上界:
  • A I = d f r a c N o p N b y t e , q u a d P = m i n ( P p e a k , A I c d o t B W ) AI = dfrac{N_{op}}{N_{byte}}, quad P = min(P_{peak}, AI cdot BW) AI=dfracNopNbyte,quadP=min(Ppeak,AIcdotBW)
  • batch-1 解码 A I a p p r o x 1 AI approx 1 AIapprox1,性能完全由 B W BW BW 决定。PIM 的本质不是提高峰值算力 P p e a k P_{peak} Ppeak,而是把 B W BW BW 从引脚带宽替换为 bank 内部带宽(LPDDR5X-PIM 为 8 倍)------这解释了为什么 PIM 只对 memory-bound 负载有效:prefill 与训练的宽 GEMM 算术强度远超平衡点,性能由算力决定,放到 bank 旁的小 MAC 阵列上反而更慢。

核心模块与代表实现详解

三星 LPDDR5X-PIM(Hot Chips 2026,首个产品化 LPDDR 平台 PIM)

  • 封装与兼容性:16 GB 封装(每 rank 4 die),JEDEC 标准 561 球封装,对外仍是引脚兼容的普通 LPDDR5X 部件------服务器、手机、汽车、PC 都能用同一封装形态接入。
  • 计算规格:16 个 PIM 块并行 MAC 树 + ALU,支持浮点与整数类型;配置寄存器中的 MAC 精度字段支持 15 种精度组合;SINT4 达 2.4 TOPS、FP8 约 1.2 TFLOPS(每封装)。
  • 四步 GEMV 执行流(text 流程树):
text 复制代码
LPDDR5X-PIM GEMV 执行流
├── 激活写入: WRPB 命令把 FP8 激活数据广播到各 bank 的源寄存器堆
├── 权重加载: PIMX_RD 从 DRAM cell 读 32 字节权重元素
│             -> 映射进 MAC 树 -> 部分和进向量寄存器堆
├── 向量写回: PIMX_WR 把部分和写回 bank(读写比可变,不再固定 1:1)
└── 结果回读: 主机切到单 bank 模式,最多 64 次顺序读排空 1Kb 向量寄存器堆
  • 兼容性关键设计(Address Align Mode):把 DRAM 地址映射为 MAC 指令,传统内存控制器无需修改即可驱动 PIM,通过预定义行与 PIM 寄存器在"单 bank 普通模式"与"多 bank PIM 模式"间切换------相比第一代 HBM-PIM 需要定制主机配合,这是走向通用化的最大工程改进。
  • 实测结果(三星边缘 AI 加速 SoC + Llama 3.1 8B + 320 token 上下文 + SINT8 激活/SINT4 权重/SINT32 输出):运行时间 12.3 s -> 5.4 s(2.28 倍),吞吐 27 -> 81.3 token/s(3.01 倍)。

三星 HBM-PIM(FIMDRAM,2021)与 SK hynix GDDR6-AiM / AiMX

  • FIMDRAM(Function-In-Memory DRAM):PCU(可编程计算单元,FP16 SIMD)嵌入 HBM 各 die 的 bank 旁,配套控制寄存器堆与本地行缓冲;每栈 1.2 TFLOPS FP16;引脚兼容 HBM2 Aquabolt,作为 drop-in 内存直接插入既有系统;三星宣称语音识别类负载约 2 倍性能、功耗下降最多约 70%。
  • HBM 堆叠结构是 PIM 落地 HBM 的天然优势:部分 die 做本地计算的同时,其余 die 仍可正常响应主机读写------堆叠维度提供了计算与访存的物理隔离。
  • SK hynix GDDR6-AiM(Accelerator-in-Memory):MAC 单元嵌入 GDDR6 存储体旁,走 GDDR 生态,单颗带宽 170 GB/s(2.67 Gbps 引脚速率);AiMX 加速卡以 PCIe Gen3 x8 形态把多颗 AiM 组成近存加速器。
  • OCP 2025 实机演示:一台服务器插 4 张 AiMX 卡 + 2 张 H100 GPU,vLLM 跑 Llama 3 支撑多用户并发对话------AiMX 承担 attention 与 KV Cache 这类访存敏感算子,H100 继续 GEMM,是"近存卡 + GPU"异构分工的公开样板,也验证了 AiMX 对长问答序列中 KV Cache 利用率的改善。

UPMEM:通用处理器进内存

  • 与专用 MAC 路线相反,法国 UPMEM 把通用 RISC DPU 直接嵌进 DDR4 芯片:每颗 DPU 配 24 KB 指令 RAM、64 KB 工作 SRAM(WRAM)、64 MB 私有 DRAM(MRAM),一条 DIMM 上百个 DPU 并行。
  • 优点:完全可编程(C 语言工具链),不局限于固定算子,适合扫描、过滤、哈希、聚合类数据密集任务。
  • 缺点:单 DPU 算力弱、无浮点 SIMD,编程模型要求手动搬运 MRAM 与 WRAM 之间的数据------做 GEMV 的效率远不如专用 MAC 阵列。它证明了"内存里放通用核"可行,也证明了纯通用路线做 AI 算力不划算。

异构协同:NPU/GPU + PIM 的分工体系

  • LLM 推理天然双态:QKV 生成与 FFN 是 GEMM(算力密集),attention 解码是 GEMV(带宽密集)------单一硬件不可能同时最优,异构分工成为学术与产业共识。
text 复制代码
NPU + PIM 异构分工代表方案
├── NeuPIMs(ASPLOS 2024)
│   ├── 分工: NPU 跑 GEMM(QKV/FFN)+ PIM 跑 GEMV(attention/KV Cache)
│   ├── 双行缓冲: 常规读写与 PIM 计算并行,平均吞吐 +69.7%
│   ├── 子批交错: 两个独立子批让 NPU 与 PIM 流水重叠(batch >= 256 才生效)
│   └── 结果: 3 倍于 GPU-only / 2.4 倍于 NPU-only / 1.6 倍于朴素 NPU+PIM
├── AttAcc(ASPLOS 2024): attention 下沉 PIM、FFN 留在 GPU,按算子类型切分的 PIM 后端
├── IANUS(ASPLOS 2024): NPU-PIM 统一内存系统集成
├── HPIM(2025): SRAM-PIM 承载 attention(低延迟)+ HBM-PIM 承载权重 GEMV(大容量高带宽)
│                  端到端 3.64 倍于 A100 基线,峰值算力利用最高 22.8 倍
├── Duplex(2024): HBM 逻辑层放 32 个 GEMM 模块(每个 512 FP16 MAC + 8KB 缓冲,
│                    共 17.8 mm^2,约占 121 mm^2 HBM3 die 的 14.7%)
│                    专攻 MoE / GQA / 连续批处理产生的窄 GEMM
└── 新方向: PIM-LLM(1-bit LLM 混合 PIM)、MVDRAM(未改 DRAM 跑低比特 GEMV)、
            CHIME(DIMM-PIM 长上下文 Attention-FC 分离)、P3-LLM(边缘 NPU-PIM 混合精度)

技术优缺点与适用场景

  • 三条路线能力对比(text 树):
text 复制代码
存算一体三路线对比
├── 有效带宽:
│   ├── PNM 逻辑层: 封装内带宽,约 2-4 倍引脚带宽
│   ├── 近 bank PIM: bank 内部带宽,约 8 倍引脚带宽(当前实测水平)
│   └── 模拟 CIM: 阵列内一步完成,理论上不再受"带宽"概念约束
├── 精度与灵活性:
│   ├── PNM: 先进逻辑工艺,任意精度任意算子(可做完整 GEMM)
│   ├── 近 bank PIM: 均匀精度窄 GEMV,15 种精度组合(SINT4/8、FP8/16 等)
│   └── 模拟 CIM: 有效精度 4-8 位,权重编程慢,只适合固化后的推理
├── 容量:
│   ├── PNM: 大(继承 HBM / CXL / DIMM 全容量)
│   ├── 近 bank PIM: 大(DRAM cell 完整保留,只是 bank 旁加逻辑)
│   └── 模拟 CIM: 受限(crossbar 宏以 MB 级拼装,密度低于 DRAM)
└── 生态成熟度:
    ├── PNM: 依赖定制主机软件栈(CXL / DIMM 有标准可依)
    ├── 近 bank PIM: JEDEC LPDDR6-PIM 标准制定中,尚无主流推理引擎后端
    └── 模拟 CIM: 无行业标准,工具链封闭,仅边缘场景产品化
  • 适用场景 ↓
  • ✅ batch-1 / 小 batch 自回归解码:权重每 token 读一次且不复用,PIM 的 8 倍内部带宽直接换算成 token 速率(三星实测 3.01 倍),这是 PIM 收益最纯粹的场景。
  • ✅ 长上下文 attention 与 KV Cache 遍历:KV Cache 随上下文线性膨胀且每步全量扫描,是典型带宽受限算子,AttAcc、NeuPIMs、AiMX 全都锚定在这里。
  • ✅ 端侧与边缘推理:LPDDR5X-PIM 用标准 561 球封装给出接近 HBM 级的推理带宽,绕开 HBM 的功耗、封装与成本------手机、汽车、机器人上的本地大模型是三星明示的目标市场。
  • ✅ Embedding 查表与推荐模型聚合:访存极度密集、算子简单规整,是 PIM 最早完成验证的负载类型。
  • 禁忌场景 ↓
  • ❌ Prefill 与训练:宽 GEMM 算术强度远超平衡点,性能由峰值算力决定,bank 旁的小 MAC 阵列(1.2 TFLOPS 级)反而成为新瓶颈。
  • ❌ 依赖 GGUF k-quant 的本地部署:Q4_K_M 等块量化格式要求每块做尺度缩放运算,PIM 的最小 MAC 单元执行不了,必须重量化为均匀精度原生布局,k-quant 的质量-比特优势会打折扣。
  • ❌ 依赖 mmap 的模型加载:操作系统把物理页散布在 DRAM 各处,而 PIM 要求权重按 bank 连续对齐放置------Linux、Windows、macOS 当前都没有 bank 感知的用户态分配器。
  • ❌ 大 batch 服务 + GQA + 投机解码:三者都把 GEMV 拉宽成窄 GEMM,抬高算术强度后 PIM 的带宽红利被稀释;MoE 的专家路由还会造成 bank 冷热不均,部分 bank 过载而其余闲置。

实战落地

  • 一阶判断模型:你的负载吃不吃 PIM,用三个量就能算出来------算术强度、硬件平衡点、有效带宽增益,不需要先买硬件。
  • 核心代码:
python 复制代码
# PIM 收益一阶评估模型(Python 3.12+)
def roofline(peak_gflops, bw_gbs, ai):
    # P = min(P_peak, AI x BW),单位:GFLOP/s 与 GB/s
    return min(peak_gflops, ai * bw_gbs)

def decode_tokens_per_sec(model_gb, bw_gbs):
    # batch-1 解码:每 token 读全部权重一次,速率由带宽决定
    return bw_gbs / model_gb

# 场景参数(量级取自公开资料,用于比例推演)
gpu_peak_fp8 = 2_000_000.0   # GFLOP/s,H100 级 FP8 峰值
gpu_hbm_bw   = 3350.0        # GB/s,HBM3 引脚带宽
lpddr_pin_bw = 76.8          # GB/s,单封装 LPDDR5X 引脚带宽
lpddr_pim_bw = 614.0         # GB/s,LPDDR5X-PIM 内部 bank 级带宽
model_gb     = 8.0           # Llama 3.1 8B SINT8 权重约 8GB

# 场景一:batch-1 解码(GEMV,算术强度约 1 FLOP/Byte)
ai_decode = 1.0
util_cap = roofline(gpu_peak_fp8, gpu_hbm_bw, ai_decode) / gpu_peak_fp8
print("GPU decode utilization cap:", round(util_cap * 100, 3), "percent")
print("SoC + LPDDR5X      tokens/s:", round(decode_tokens_per_sec(model_gb, lpddr_pin_bw), 1))
print("SoC + LPDDR5X-PIM  tokens/s:", round(decode_tokens_per_sec(model_gb, lpddr_pim_bw), 1))
print("PIM bandwidth gain        x:", round(lpddr_pim_bw / lpddr_pin_bw, 1))

# 场景二:batch-512 等效 GEMM(算术强度抬升 512 倍)
ai_gemm = ai_decode * 512
p_gpu = roofline(gpu_peak_fp8, gpu_hbm_bw, ai_gemm)
p_pim = roofline(1200.0, lpddr_pim_bw, ai_gemm)  # PIM 峰值 1.2 TFLOPS
print("GEMM: GPU GFLOP/s:", p_gpu, " PIM GFLOP/s:", p_pim)
  • 判读要点一:场景一中 GPU 矩阵引擎利用率上限约 0.17%,token 速率完全由带宽决定------在 LPDDR 平台上换装 PIM 是 8 倍带宽的纯收益,与算力无关。
  • 判读要点二:场景二中算术强度超过平衡点后,GPU 峰值算力接管(数百万 GFLOP/s),而 PIM 的 1.2 TFLOPS 峰值立刻见顶------同一个模型的 prefill 必须留在 GPU/NPU,只有 decode 值得下沉到 PIM,这正是 NeuPIMs 子批交错调度的依据。
  • 评估流程(text 流程树):
text 复制代码
PIM 落地评估流程
├── 负载画像 -> 统计 decode/prefill 时间占比与 GEMV/GEMM 比例
│   ├── decode 占比 < 50% -> PIM 收益有限,先做调度与批处理优化
│   └── decode 占比 >= 50% -> 进入下一步
├── 带宽建模 -> tokens/s ≈ BW_eff / S_model,对比引脚带宽与内部带宽
├── 精度映射 -> 权重能否落到 PIM 均匀精度(SINT4/FP8)且通过困惑度门禁
│   └── k-quant 格式 -> 需要重建量化流水线
├── 布局验证 -> 权重能否按 bank 对齐连续放置(hugepage / 定制分配器)
└── 异构切分 -> GEMM 算子留 NPU/GPU + GEMV 算子下沉 PIM(NeuPIMs 模式)
  • 避坑经验
  • 参数误区:把 PIM 的 TOPS 当成 GPU 的 TOPS 来比较------PIM 的 1.2 TFLOPS 只在带宽受限区间有效,它的真实贡献是 8 倍有效带宽而非算力;同理,PIM 与多 token 预测(MTP)的收益不能相乘:MTP 把一次权重读取摊到多个被接受的 token 上,PIM 让每次读取更快,两者都在压缩同一笔权重读取成本,收益取较大者而非乘积。
  • 常见失效模式一:激活广播(WRPB)与权重读取(PIMX_RD)的 bank 时序冲突,导致实际吞吐掉回引脚带宽水平------需要按 bank 分组编排命令流。
  • 常见失效模式二:双行缓冲缺位时,PIM 计算与主机常规访存互相阻塞,NPU 在 PIM 忙碌期间完全停摆------NeuPIMs 的双行缓冲与子批交错是标准解法。
  • 线上隐患:当前一代 LPDDR5X-PIM 在 PIM 运行期间阻塞 NPU 对同一 DRAM 的访问;MoE 专家路由造成 bank 热点不均,需要专家感知的权重布局;KV Cache 与权重共享同一内部带宽,长上下文会侵蚀 GEMV 加速比(三星 320 token 短上下文实测恰好避开了这一点)。
  • 错误用法复盘:把 mmap 加载的 GGUF 直接喂给 PIM 后端------物理页散布导致 MAC 树映射失败。正确路径是三件套:重量化为均匀精度原生布局 + bank 对齐的连续物理分配 + 按执行流(广播激活 -> PIM 读权重 -> 写回回读)重排算子。

全文总结

  • 核心原理:存算一体把计算单元搬到数据旁边,用 bank 内部带宽(约 8 倍引脚带宽)替代引脚带宽,直接攻击 LLM 解码阶段算术强度约 1 FLOP/Byte 的存储墙。
  • 关键结论:三条路线分工明确------PNM 在封装逻辑层放完整 GEMM 引擎,近 bank PIM 用最小 MAC 阵列做窄 GEMV,模拟 CIM 用欧姆定律一步完成矩阵乘但受困于 ADC 开销与 4-8 位有效精度;近 bank PIM 已率先产品化,LPDDR5X-PIM 实测 3.01 倍解码吞吐。
  • 落地重点:先用一阶模型判断 GEMV 占比与带宽增益,再解决量化格式映射、bank 对齐布局、GEMM/GEMV 异构切分三件事------prefill 与训练留在矩阵引擎,decode 与 attention 下沉 PIM。
  • 技术本质:当算力增速远超带宽增速、内存已占 AI 芯片物料成本 63% 时,"把计算搬到数据旁"从可选优化变成结构性出路;JEDEC LPDDR6-PIM 标准落地之日,就是 PIM 从厂商定制走向通用软件生态之时。

系列说明

  • 本文为《AI 深度解析》系列文章之一,该系列长期更新 AI 底层原理、架构机制、工程实战与前沿技术解读。

专栏推荐

参考资料

相关推荐
WebKoalaBoy1 小时前
一台电脑同时配置多个 Git 账号:从原理到实战
1024程序员节
啊哈一半醒1 小时前
Redis 三大缓存问题:缓存穿透、缓存击穿、缓存雪崩
运维·redis·1024程序员节
啵啵啵鱼1 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践
数据结构·1024程序员节
I Am a robert girl1 小时前
当扩散编辑器“看不见”参考图:从 RefGAP 拆解参考注意力分配问题
计算机视觉·注意力机制·扩散模型·1024程序员节·参考引导编辑·refgap·免训练方法
jinbao_x1 小时前
关于git提交代码时的LF、CRLF提示的问题
1024程序员节
troy1281 小时前
构建金融系统 Reference Data Asset 的完整指南
1024程序员节
鲁Q同志1 小时前
IDEA无限重置激活三十天
intellij-idea·1024程序员节
紧跟先前的步伐1 小时前
Go AI Agent 实战 14|多轮对话与上下文历史管理
人工智能·ai·golang·1024程序员节
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 25 PostgreSQL checkpoint与脏页处理机制
1024程序员节