#存算一体 (PIM):突破内存墙的终极解决方案

3 阅读7分钟

导读:前两篇文章中,经过 DBHOO-CIM 算法的深入分析和软件的全面测试,我们揭示了 Memory Wall 的本质瓶颈,并通过 INT4 量化在 CPU 上实现了带宽优化。本文将介绍从根本上解决问题的技术——存算一体(Processing-in-Memory, PIM),以及它将如何把 LLM 推理速度从 tok/s 级别提升到万 tok/s 级别。DBHOO-CIM 正是为此而生的 AI 推理基础设施。

从"计算搬运数据"到"数据所在地计算"

经典冯·诺依曼架构的困境

自 1945 年提出以来,冯·诺依曼架构一直是计算机的基础:

┌─────────────┐    数据总线    ┌─────────────┐
│   CPU/GPU   │ ◄────────────► │   内存/存储  │
│  (计算单元)  │                │  (数据存储)  │
└─────────────┘                └─────────────┘

数据在存储,计算在 CPU。每次计算都需要将数据从存储搬运到 CPU。当数据量很大时(如 LLM 的 GB 级权重),搬运时间远大于计算时间——这就是 Memory Wall。

PIM 的核心思想

PIM 改变了计算的物理位置:

┌─────────────────────────────────────────────┐
│              PIM 阵列 (存算一体)              │
│  ┌─────────────────────────────────────┐    │
│  │  存储单元 (权重)  与  计算单元 (MAC)  │    │
│  │         在同一物理位置                  │    │
│  └─────────────────────────────────────┘    │
│                                             │
│  数据不需要搬运 → 直接在存储端完成计算         │
└─────────────────────────────────────────────┘

权重存在哪里,计算就发生在哪里。消除数据搬运,就是消除 Memory Wall。

PIM 的工作原理

交叉点阵列(Crossbar Array)

PIM 的核心结构是一个交叉点阵列:

          输入向量 (激活值)
          ─────────────────►
          │  │  │  │  │  │
        ┌─┴──┴──┴──┴──┴─┐
        │  │  │  │  │  │ │  ← 存算单元
        │  │  │  │  │  │ │     (存储权重 + 执行 MAC)
        └─┬──┬──┬──┬──┬─┘
          │  │  │  │  │  │
          ▼  ▼  ▼  ▼  ▼  ▼
          输出向量 (累加结果)

每个交叉点单元同时具备:

  • 存储能力:存储一个权重值(如 INT4)
  • 计算能力:执行一次乘加(MAC)运算

当输入电压施加到 word line 时,所有交叉点同时执行计算——这是一个模拟并行计算过程。

LLM 推理的映射

LLM 的核心计算是大量的矩阵乘法(GEMM)。以一个线性层为例:

Y = X × W

X: [1, D]   (激活值, 1 行)
W: [D, D]   (权重, D×D 矩阵)
Y: [1, D]   (输出, 1 行)

在 PIM 中:

  • 将权重矩阵 W 存储在 D×D 的交叉点阵列中
  • 输入向量 X 通过 word line 输入
  • 输出向量 Y 通过 bit line 累加输出
  • 整个矩阵乘法在一个时钟周期内完成

性能估算:从 CPU 到 PIM

以下所有性能估算均基于 DBHOO-CIM 算法的理论模型和实测数据,结合 PIM 硬件参数进行合理外推。

计算量分析

基于 DBHOO-CIM 软件的完整 Transformer 推理引擎测试,我们对 50M 参数模型的每 token 计算量进行了精确拆解:

RMSNorm:           0.5 MFLOPs
QKV 投影:          3 × 512 × 512 = 0.79 MFLOPs
Attention:         2 × 8 × 512 × 64 = 0.52 MFLOPs
Output 投影:       512 × 512 = 0.26 MFLOPs
SwiGLU FFN:        3 × 512 × 2048 = 3.15 MFLOPs
Logits:            512 × 32000 = 16.38 MFLOPs
─────────────────────────────────
每层总计:           ~23.07 MFLOPs (×4 层 = 92.3 MFLOPs)

CPU 性能瓶颈

经过 DBHOO-CIM 性能分析模块的精确测量,CPU 上每 token 的时间分布如下:

CPU 每 token 耗时: ~200 ms
其中计算耗时:     ~5 ms (估算)
数据搬运耗时:     ~195 ms
计算/搬运比:      1:39 (计算仅占 2.5%)

PIM 性能估算

基于 DBHOO-CIM 的 PIM 硬件抽象模型和 INT4 量化算法的验证结果,我们对 PIM 的性能进行了保守估算:

假设 PIM 阵列配置:

  • 阵列规模:128×128 交叉点(模拟计算单元)
  • 时钟频率:200 MHz(保守估计)
  • 每周期运算:128×128 = 16,384 MACs
PIM 理论吞吐量: 16,384 × 200e6 = 3.28 GMAC/s
每 token 计算量: 23.07 MFLOPs ≈ 11.54 MMACs (1 MAC = 2 FLOPs)
PIM 每 token 耗时: 11.54e6 / 3.28e9 = 3.52 × 10⁻³ ms = 0.0035 ms

性能对比

数据来源:DBHOO-CIM 算法验证与性能测试

平台每 token 耗时吞吐量加速比
CPU F32 (DBHOO-CIM 实测)200 ms5 tok/s1x
CPU INT4 (DBHOO-CIM 实测)120 ms8 tok/s1.67x
PIM (128×128 @ 200MHz) (DBHOO-CIM 估算)0.0035 ms285,000 tok/s~57,000x

真实 1B 模型推算

基于 DBHOO-CIM 真实模型测试框架的外推结果

平台1B 模型每 token 耗时吞吐量
CPU F32 (DBHOO-CIM 实测外推)~1,080 ms0.9 tok/s
CPU INT4 (DBHOO-CIM 实测外推)~650 ms1.5 tok/s
PIM (DBHOO-CIM 估算)~0.04 ms28,000 tok/s

PIM 硬件的实际挑战

理论很美好,但实际落地需要面对几个挑战:

1. 阵列规模 vs 模型规模

单个 PIM 阵列的规模有限(目前实验芯片通常是 128×128 到 512×512),而 LLaMA-7B 的每个权重矩阵是 4096×4096。

解决方案:将大矩阵切分到多个小阵列中并行或分时处理。

W [4096, 4096]
    ↓ 切分
16×16 = 256 个 [256, 256] 子矩阵
    ↓ 映射
256 个 PIM 阵列 (或分时复用)

2. 精度与噪声

模拟计算不可避免地存在噪声。INT4 的 4-bit 精度需要 PIM 阵列的模拟精度与之匹配。

解决方案

  • 使用高精度 ADC(模数转换器)
  • 采用纠错码(ECC)
  • 训练时考虑 PIM 噪声的影响

3. 外围电路开销

PIM 不仅需要存储阵列,还需要:

  • 输入驱动器(DAC)
  • 输出接收器(ADC)
  • 控制逻辑
  • 片上网络

这些外围电路可能占用大量面积和功耗。

DBHOO 的技术路线

从算法验证到硬件落地

DBHOO-CIM 的核心战略是:用软件算法验证 PIM 可行性,为硬件设计提供精确的算法参数和性能目标。

分层优化策略

Level 1: CPU 软件优化(当前)
  ├── AVX2/FMA 指令优化
  ├── INT4 per-group 量化
  └── KV Cache + Flash Attention

Level 2: CPU + PIM 混合架构(中期)
  ├── 关键算子(GEMM)卸载到 PIM
  ├── CPU 处理控制流和非线性运算
  └── PCIe/片间高速互联

Level 3:  PIM 架构(长期目标)
  ├── Transformer 全算子 PIM 
  ├── 大规模 3D PIM 堆叠
  └── 片上训练/微调能力

我们的定位

经过 DBHOO-CIM 算法验证和软件测试,我们定位为 PIM 时代的 AI 推理基础设施

  1. 软件栈就绪DBHOO-CIM 自研的 INT4 量化算法和完整 Transformer 推理引擎就是 PIM 计算的软件抽象——在 CPU 上模拟 PIM 行为,验证算法正确性和性能模型
  2. 可移植性:统一的 API 接口支持 CPU/GPU/PIM 后端,DBHOO-CIM 硬件抽象层 (HAL) 正在开发中
  3. 可扩展性:从嵌入式到数据中心的全场景覆盖,DBHOO-CIM 已完成从 50M 到 1B 参数模型的性能建模
  4. 硬件友好DBHOO-CIM 量化算法的 bit-level 设计直接适配 PIM 阵列的存储格式,减少硬件映射开销

总结

经过 DBHOO-CIM 算法的系统性验证,我们对 CPU 与 PIM 的性能对比进行了定量分析:

维度CPU (DBHOO-CIM 实测)PIM (DBHOO-CIM 估算)
瓶颈Memory Wall (1.57% 带宽利用率)计算精度
每 token 搬运189 MB0 (权重在存储端)
每 token 耗时~200 ms~0.0035 ms
吞吐量5 tok/s285,000 tok/s
加速比基准1x57,000x

PIM 不是 CPU 的简单升级,而是计算范式的根本变革——这正是 DBHOO-CIM 算法验证的核心结论

  • CPU:数据搬运到计算 → 受限于带宽
  • PIM:计算嵌入数据 → 消除带宽瓶颈

这 57,000 倍的加速比意味着:

  • 实时对话:从 5 tok/s 到 285K tok/s,响应时间从 200ms 降到 0.0035ms
  • 大规模推理:1B 模型从 1 秒/token 到 0.04ms/token
  • 边缘部署:无需昂贵的 GPU 集群,PIM 芯片即可提供高性能推理

这就是 PIM 的价值——它不只是让 AI 更快,而是让一些原本不可能的应用成为可能。


本文基于 DBHOO-CIM 算法验证和软件测试的性能数据撰写。DBHOO-CIM 提供从算法验证、性能分析到 PIM 硬件抽象的完整解决方案。性能估算基于理想 PIM 阵列模型,实际性能取决于硬件实现。