2. 存算一体基础原理
大家好,我是你们这堂课的主讲人。做了十几年芯片架构,我越来越觉得存算一体是个绕不开的方向。今天咱们先聊聊最基础的东西——存储单元和计算单元到底怎么在物理上融合的。
1.1 为什么要把存储和计算揉在一起?
传统的冯·诺依曼架构,说白了就是存储和计算分家。CPU要算个数据,得先去内存里取,算完再存回去。这个来回搬运的过程,就是著名的「存储墙」问题。我当年做AI加速器时,发现大部分功耗都耗在了数据搬运上,真正算的时间反而很少。
存算一体的思路很简单:让存储单元本身具备计算能力。数据不用挪窝,直接在存储的地方算完。这就像你办公桌上堆满了文件,不用每次去档案室取,直接在桌上处理就行。
核心优势:消除数据搬运瓶颈,功耗降低10-100倍,延迟降低5-10倍。
1.2 基于SRAM的存算一体单元
SRAM大家都很熟悉,6个晶体管组成一个存储单元。但怎么让它也能算呢?
我习惯把SRAM存算一体单元分成两类:
- 模拟域计算:利用位线(BL)上的模拟电流累加,实现乘加运算
- 数字域计算:在SRAM阵列外围加数字逻辑,做逐位运算
举个例子,SRAM做向量-矩阵乘法时,权重存在SRAM单元里,输入数据通过字线驱动。每个单元的电流大小代表权重和输入的乘积,所有单元的电流在位线上自然累加——这就是模拟计算。
避坑指南:我曾经在28nm工艺下做过SRAM存算一体芯片,发现模拟域的噪声问题特别头疼。位线上的电流非常微弱,稍微有点工艺偏差,结果就偏了。后来我加了一组参考单元做差分检测,才把精度提上来。
1.3 基于ReRAM的存算一体单元
ReRAM(阻变存储器)是我个人比较看好的技术。它的核心是一个金属-绝缘体-金属结构,通过施加电压改变电阻值。
ReRAM做存算一体的原理:
- 权重用电阻值表示(高阻=0,低阻=1)
- 输入用电压幅度表示
- 输出电流 = 电压 / 电阻,自然实现了乘法
- 多个单元并联,电流累加就是加法
你看,一个简单的交叉阵列(Crossbar Array),就能完成向量-矩阵乘法。这在神经网络推理中太有用了。
注意:ReRAM有个问题——电阻值会漂移。我在项目中遇到过,跑了几个小时后,某些单元的电阻值变了,导致推理精度下降。解决方案是定期做一次「刷新」操作,重新写入权重。
1.4 基于PCM的存算一体单元
PCM(相变存储器)利用硫系化合物在晶态和非晶态之间的电阻差异来存储数据。晶态电阻低,非晶态电阻高。
PCM的优势在于:
- 多级存储能力(一个单元存多个比特)
- 耐久性比ReRAM好
- 与CMOS工艺兼容性好
但PCM也有短板——功耗高。写操作需要加热到600°C以上,电流很大。我建议在需要频繁更新的场景下慎用PCM。
1.5 模拟域 vs 数字域计算对比
这是个老生常谈的问题,但每次讲我都觉得有新体会。咱们直接看对比表:
| 对比维度 | 模拟域计算 | 数字域计算 |
|---|---|---|
| 精度 | 受噪声影响,通常6-8bit | 可做到16bit以上 |
| 功耗 | 极低,每MAC约1fJ | 较高,每MAC约10-100fJ |
| 面积 | 小,存储即计算 | 大,需要额外数字逻辑 |
| 抗干扰能力 | 弱,对工艺偏差敏感 | 强,数字信号有噪声容限 |
| 设计复杂度 | 高,需要模拟电路设计经验 | 低,标准数字流程 |
| 适用场景 | 低精度推理(如边缘AI) | 高精度训练/推理 |
我个人习惯是:推理用模拟域,训练用数字域。为什么?推理对精度要求没那么高,8bit够用了,模拟域省电省面积。训练需要高精度梯度回传,数字域更靠谱。
我的经验:有一次做语音唤醒芯片,要求功耗低于1mW。我试了数字域方案,功耗死活压不下去。换成模拟域后,功耗直接降到0.3mW,精度只掉了0.5%。嗯,这就是选对技术路线的价值。
1.6 三种存储技术的对比
咱们再拉个表,把SRAM、ReRAM、PCM放在一起比比:
| 特性 | SRAM | ReRAM | PCM |
|---|---|---|---|
| 单元面积 | 大(6T) | 小(1T1R) | 中(1T1R) |
| 读写速度 | 快(~1ns) | 中(~10ns) | 慢(~100ns) |
| 耐久性 | 无限 | 10^6-10^8次 | 10^8-10^12次 |
| 多级存储 | 不支持 | 支持(2-4bit) | 支持(2-4bit) |
| CMOS兼容性 | 完美 | 较好 | 好 |
| 成本 | 高 | 低 | 中 |
你想想看,SRAM虽然面积大、成本高,但速度快、耐久性好,适合做缓存级别的存算一体。ReRAM面积小、成本低,适合做大规模存储阵列。PCM介于两者之间,但写功耗是个硬伤。
1.7 知识体系总览
下面这张图是我自己画的,把本章的核心逻辑串起来了:
这张图把本章的核心脉络理清了。从存算一体的核心出发,分三条技术路线——SRAM、ReRAM、PCM,每条路线都有自己的特点和适用场景。最后落到计算方式的选择上,模拟域还是数字域,取决于你的精度和功耗要求。
我的建议:刚开始接触存算一体的同学,先从SRAM模拟域方案入手。SRAM工艺成熟,设计工具链完善,踩坑了也好排查。等把模拟域那套摸透了,再去看ReRAM和PCM。