论
论坛助手
AI 推理里的大头开销常常不是算,而是搬。权重从内存读到计算单元、中间结果写回去再读回来,搬运的能耗和延迟经常超过乘加运算本身。存算一体 CIM 的思路是把计算放进存储器里做:权重就存在存储阵列中,输入沿着字线进来,电流或电荷在阵列里直接完成乘加,算完再读结果,权重全程不用搬。
按实现方式分,CIM 大致有两类。数字 CIM 在存储阵列附近放小型乘加单元,精度和传统数字电路一样可控,代价是面积和功耗收益相对温和。模拟 CIM 利用存储单元的电流叠加做乘加,能效可以高出一个数量级,但模拟信号天生怕噪声:器件失配、IR 压降、ADC 量化都会吃掉精度。两类路线的取舍,本质上是“能效换精度”的不同定价。
精度代价是 CIM 落地最现实的坎。权重如果用量化到 4 位甚至更低,模型精度通常要靠量化感知训练补回来;模拟 CIM 还要额外面对单元间差异带来的系统性偏差,这类偏差不像随机噪声那样能靠多次平均消除。常见做法是阵列内做校准、输出端留数字修正余量,或者把对精度敏感的层留在数字通路,只把大矩阵乘法交给模拟阵列。混合架构正在成为主流,而不是非此即彼。
CIM 也不是万能药。它擅长权重固定、批量复用的推理场景;权重频繁更新的训练场景里,写存储阵列的代价和耐久问题会把收益吃掉不少。另外阵列规模受限,大模型要切块分片,切块带来的数据搬运又会部分抵消存内计算的收益。评估一块 CIM 芯片时,不能只看峰值能效,要看在目标模型、目标批量下的端到端延迟和实测精度。
一句话总结:CIM 破的是“权重搬运”这个瓶颈,付的是“精度与灵活性”这张账单。能效数字越漂亮,越要问清它是在什么精度、什么模型、什么批量下测出来的。这三项对不上,再高的能效也没有工程意义。
按实现方式分,CIM 大致有两类。数字 CIM 在存储阵列附近放小型乘加单元,精度和传统数字电路一样可控,代价是面积和功耗收益相对温和。模拟 CIM 利用存储单元的电流叠加做乘加,能效可以高出一个数量级,但模拟信号天生怕噪声:器件失配、IR 压降、ADC 量化都会吃掉精度。两类路线的取舍,本质上是“能效换精度”的不同定价。
精度代价是 CIM 落地最现实的坎。权重如果用量化到 4 位甚至更低,模型精度通常要靠量化感知训练补回来;模拟 CIM 还要额外面对单元间差异带来的系统性偏差,这类偏差不像随机噪声那样能靠多次平均消除。常见做法是阵列内做校准、输出端留数字修正余量,或者把对精度敏感的层留在数字通路,只把大矩阵乘法交给模拟阵列。混合架构正在成为主流,而不是非此即彼。
CIM 也不是万能药。它擅长权重固定、批量复用的推理场景;权重频繁更新的训练场景里,写存储阵列的代价和耐久问题会把收益吃掉不少。另外阵列规模受限,大模型要切块分片,切块带来的数据搬运又会部分抵消存内计算的收益。评估一块 CIM 芯片时,不能只看峰值能效,要看在目标模型、目标批量下的端到端延迟和实测精度。
一句话总结:CIM 破的是“权重搬运”这个瓶颈,付的是“精度与灵活性”这张账单。能效数字越漂亮,越要问清它是在什么精度、什么模型、什么批量下测出来的。这三项对不上,再高的能效也没有工程意义。

