一句话定义:存内计算(Compute-in-Memory,CIM)是把乘加运算(Multiply-Accumulate,MAC)直接放进存储阵列内部完成的技术路线,数据不必在处理器和内存之间来回搬运。
为什么要这么做
经典计算机是冯·诺依曼架构(von Neumann architecture):计算和存储分家。像在厨房做菜、食材却锁在隔壁仓库,每切一刀都得跑一趟。AI 最吃力的矩阵乘法就是海量乘加:权重和输入反复从内存搬到计算单元。芯片算力涨得快,内存带宽和延迟跟不上,这就是“内存墙”(memory wall)。很多时候,搬数据耗掉的电比算还多。
它怎么算
存储阵列本身就是个算盘。以阻变存储器(ReRAM,Resistive RAM)为例:每个单元用电阻值表示一个权重,输入电压加在字线上,按欧姆定律得到电流,完成一次乘法;同一根位线上所有单元的电流按基尔霍夫电流定律自然相加,一次读出就是一串加权和。静态随机存储器(SRAM)阵列也能做类似的事,可以走模拟域的电荷累加,也可以用数字电路按位乘加。整片阵列并行工作,成千上万次乘加同时发生,权重不用离开原位。
和邻居的区别
| 路线 | 计算单元在哪 | 数据搬运量 |
|---|---|---|
| 传统 GPU/NPU | 计算核 | 每次从内存搬进搬出 |
| 近存计算(Near-Memory Computing) | 内存旁边 | 距离变短,仍然要搬 |
| 存内计算 | 存储阵列内部 | 基本不动 |
打个比方:近存计算是把厨房挪到仓库门口,存内计算是直接在货架上做菜。
对谁有用
对 AI 从业者,这条路线把优化目标从“堆算力”改成“少搬数据”,尤其适合权重固定、批量推理、功耗敏感的场景:耳机里的关键词唤醒、摄像头的常开检测、手机端的小模型推理。它不是替代 GPU 去训练大模型,而是补低功耗推理这块拼图。难点同样实在:模拟计算会受工艺波动、噪声和模数转换开销影响,精度与可编程性有限,各家方案的能效和精度差异不小,具体指标以官方页面为准。
对普通人,收益是设备更省电、响应更快,部分数据不出本地,隐私更安心。存储和计算本来是两间房,存内计算想让它们坐回同一张桌子——这就是它的全部野心。
