导读:前两篇文章中,经过 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 ms | 5 tok/s | 1x |
| CPU INT4 (DBHOO-CIM 实测) | 120 ms | 8 tok/s | 1.67x |
| PIM (128×128 @ 200MHz) (DBHOO-CIM 估算) | 0.0035 ms | 285,000 tok/s | ~57,000x |
真实 1B 模型推算
基于 DBHOO-CIM 真实模型测试框架的外推结果
| 平台 | 1B 模型每 token 耗时 | 吞吐量 |
|---|---|---|
| CPU F32 (DBHOO-CIM 实测外推) | ~1,080 ms | 0.9 tok/s |
| CPU INT4 (DBHOO-CIM 实测外推) | ~650 ms | 1.5 tok/s |
| PIM (DBHOO-CIM 估算) | ~0.04 ms | 28,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 推理基础设施:
- 软件栈就绪:DBHOO-CIM 自研的 INT4 量化算法和完整 Transformer 推理引擎就是 PIM 计算的软件抽象——在 CPU 上模拟 PIM 行为,验证算法正确性和性能模型
- 可移植性:统一的 API 接口支持 CPU/GPU/PIM 后端,DBHOO-CIM 硬件抽象层 (HAL) 正在开发中
- 可扩展性:从嵌入式到数据中心的全场景覆盖,DBHOO-CIM 已完成从 50M 到 1B 参数模型的性能建模
- 硬件友好:DBHOO-CIM 量化算法的 bit-level 设计直接适配 PIM 阵列的存储格式,减少硬件映射开销
总结
经过 DBHOO-CIM 算法的系统性验证,我们对 CPU 与 PIM 的性能对比进行了定量分析:
| 维度 | CPU (DBHOO-CIM 实测) | PIM (DBHOO-CIM 估算) |
|---|---|---|
| 瓶颈 | Memory Wall (1.57% 带宽利用率) | 计算精度 |
| 每 token 搬运 | 189 MB | 0 (权重在存储端) |
| 每 token 耗时 | ~200 ms | ~0.0035 ms |
| 吞吐量 | 5 tok/s | 285,000 tok/s |
| 加速比基准 | 1x | 57,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 阵列模型,实际性能取决于硬件实现。