NPU存算一体架构与数据流优化 - 第3节
一、存算一体技术分类:近存计算与存内计算
大家好,我是你们的老朋友。今天咱们聊聊存算一体的技术分类。说实话,我刚接触这个领域时,也被各种术语绕得头晕。近存计算、存内计算、模拟域、数字域……这些概念到底有什么区别?别急,我用自己的理解帮你捋一捋。
1.1 为什么需要存算一体?
先讲个背景。传统冯·诺依曼架构有个著名的“存储墙”问题——处理器跑得飞快,但数据搬运太慢。我做过一个项目,芯片算力明明够,但90%的时间都花在搬数据上,你说气不气人?
存算一体的核心思路很简单:让计算靠近数据,减少搬运。但具体怎么靠近,就有不同流派了。
1.2 近存计算(Near-Memory Computing)
近存计算,说白了就是把计算单元搬到存储器旁边。不是集成进去,而是紧挨着放。
核心特征:计算和存储物理分离,但距离极近
我举个例子。你想想看,传统架构里CPU和内存隔着一条总线,数据来回跑。近存计算呢?把计算逻辑直接放在内存芯片的同一封装里,甚至同一基板上。这样数据路径缩短了,延迟自然降下来。
典型应用:
- HBM(高带宽存储器)配合逻辑芯片
- 三星的HBM-PIM方案
- 一些FPGA加速器
我的经验:近存计算适合那些数据量大但计算简单的任务。比如矩阵乘法、卷积操作。我在做AI推理加速器时,就用了近存方案,带宽利用率提升了3倍。
1.3 存内计算(In-Memory Computing)
存内计算就更激进了——直接在存储单元里做计算。数据不用搬出来,在“家里”就处理完了。
为什么会这样?因为存储单元本身有物理特性,比如电阻变化、电流累积,这些天然可以用来做加法、乘法。
核心特征:计算和存储物理融合,在存储阵列内完成运算
技术路线:
- 基于SRAM的存内计算
- 基于RRAM(忆阻器)的存内计算
- 基于Flash的存内计算
注意:存内计算虽然延迟极低,但精度和灵活性是短板。我曾经踩过一个坑——用RRAM做8位乘法,结果工艺偏差导致精度损失了2个bit,模型直接崩了。
1.4 近存 vs 存内:一张表说清楚
| 对比维度 | 近存计算 | 存内计算 |
|---|---|---|
| 物理距离 | 靠近但分离 | 完全融合 |
| 数据搬运 | 仍需少量搬运 | 几乎零搬运 |
| 计算精度 | 高(数字域) | 中低(模拟域) |
| 灵活性 | 高 | 低 |
| 能效比 | 中等 | 极高 |
| 成熟度 | 已商用 | 研究阶段 |
二、模拟域与数字域存算一体
接下来聊另一个维度——模拟域和数字域。这个区分很多人搞混,我尽量讲明白。
2.1 数字域存算一体
数字域,就是所有计算都用数字电路实现。加法器、乘法器、累加器,都是标准的数字逻辑。
特点:
- 精度可控(想多少bit就多少bit)
- 抗噪声能力强
- 设计流程成熟
- 但面积和功耗相对大
我习惯在数字域做存算一体,因为调试方便。记得有一次,模拟域方案死活跑不对,换成数字域,两天就调通了。
2.2 模拟域存算一体
模拟域就“野”多了。它利用物理定律直接计算——电流相加、电压相乘、电荷累积。
典型实现:
- 基于电流镜的乘法
- 基于电容的累加
- 基于忆阻器的点积运算
核心优势:模拟计算可以在一个时钟周期内完成大量并行运算,能效比极高。比如一个RRAM阵列,一次读操作就能完成整个矩阵向量乘法。
避坑指南:我曾经做过一个模拟域存内计算芯片,流片回来发现温度漂移导致精度全偏了。后来加了温度补偿电路才搞定。模拟域对工艺、温度、电压都很敏感,设计时一定要留裕量。
2.3 模拟 vs 数字:怎么选?
这个问题没有标准答案。我个人的经验是:
- 追求极致能效 → 模拟域(但要做好精度损失的心理准备)
- 追求通用性和精度 → 数字域(更稳妥)
- 混合方案 → 模拟做粗粒度计算,数字做精调
三、知识体系总览
下面这张图是我自己画的,帮你理清本章的知识结构:
四、我的建议
如果你是刚入门,我建议先从近存计算+数字域开始。为什么?因为成熟度高,工具链完善,不容易踩坑。
等你把基础打牢了,再尝试模拟域存内计算。那个领域虽然难,但一旦做成了,能效提升是数量级的。
小技巧:做模拟域设计时,一定要做蒙特卡洛仿真。我吃过亏,所以现在每次流片前都跑1000次仿真,确保工艺偏差下还能工作。
好了,这一章就到这里。记住:存算一体不是银弹,选对技术路线比什么都重要。
想要更多资料,联系可可