开场
存算一体芯片这两年是真的火,但不少人一上来就被“选 SRAM 还是 RRAM”这个问题卡住了。
做 AI 推理加速、边缘低功耗设备、还是传感器内预处理,方案选错了,后面流片一遍的成本和时间都是真金白银。我自己在几个项目里评估过基于 SRAM 的存算一体宏单元,也陪团队查过 RRAM 的工艺 PDK,今天就把这两种路线摆在一起,从工作原理、工艺成熟度、电路代价、量产可靠性几个角度做个系统对比,顺便给一张可以直接抄作业的选型决策表。
这篇文章适合以下几类人:正在做存算一体芯片架构选型的工程师、准备立项做 AI 加速器但还没定技术路线的团队负责人、以及想了解为什么 2024 年之后 SRAM 存算一体开始“回暖”、而 RRAM 却在部分场景被冷落的研究生和产品经理。内容不绕弯子,直接说选型里必须关心的那些事。
1. 存算一体为什么重新回到牌桌上
1.1 冯·诺依曼瓶颈与存算一体的反转逻辑
传统芯片的性能天花板早就不是晶体管不够快,而是数据在存储器和计算单元之间搬运太慢、太耗电。用大白话说,CPU 就像一个厨师,内存是冰箱,算一道菜要反复从冰箱拿食材,时间全耗在“来回走路”上了。这个“走路”的过程在芯片里就是访存功耗和数据总线延迟。
存算一体的核心逻辑很简单:把计算直接放进存储器里,让数据待在原处完成运算,省掉大量搬运。矩阵乘加这类 AI 计算特别适合这么做,因为神经网络推理的本质就是反复读取权重和激活值做乘加累加,权重如果能“住在”存储阵列里,运算效率就能大幅提升。
这里有个容易混淆的点:市场上有“存内计算(Computing-in-Memory)”和“存算一体(Processing-in-Memory)”两种说法,很多文章混用,但严格来说,存内计算强调在存储单元内部或阵列内部完成计算,存算一体的范围更宽,还包括把计算逻辑贴近存储阵列放、但不一定在单元内做运算的方案。本文讨论的 SRAM CIM 和 RRAM CIM 都属于典型的存内计算路线。
1.2 SRAM 和 RRAM 在存算一体版图里的位置
从存储介质角度看,SRAM 和 RRAM 代表了两条截然不同的路线:前者是成熟得不能再成熟的易失性存储,工艺和模型完善,但面积大、贵;后者是非易失性存储的新贵,密度高、可断电保存数据,但工艺尚在爬坡期,良率和可靠性挑战很大。
在学术论文里,基于 SRAM 的存算一体论文数量一直不少,原因是它和标准数字 CMOS 工艺兼容度极高,不需要特殊材料,原型验证快。RRAM 存算一体则更多出现在需要低功耗、可断电部署的场景里,比如 IoT 设备端推理、某些专用边缘芯片,它的卖点是能量效率理论上更高,但代价是外围电路复杂度和工艺成熟度风险。
选型时千万不要只看技术指标,而要把“这条路线能不能在你们团队的目标工艺节点下按时、按预算做出符合良率要求的产品”当作最高优先级。SRAM 路线更像是“确定性很高、但优化空间有限”,RRAM 路线则是“上限很高、坑也深”。
2. 两种存储技术的底层差异(选型的物理课)
2.1 SRAM 工作原理与性能边界
SRAM 即静态随机存取存储器,每个存储单元通常由 6 个晶体管构成(6T 结构),依靠两个交叉耦合的反相器保持状态,只要不掉电,数据就不会丢。因为这个特性,它的访问速度极快,几乎是所有存储器里最快的档次,也不需要像 DRAM 那样定期刷新。
在存算一体实现方式上,SRAM CIM 通常把权重存在 6T 或改进型单元里,通过位线输出电压或电流来反映“权重×输入”的乘积结果,然后在同一列上做电流累加,再用 ADC 读出并数字化。这本质上是利用存储单元阵列的模拟特性做多行并行乘法累加。
关于 sram 工作原理,还有几个重要细节会影响选型:首先是单元面积,6T SRAM 单元面积大概在 100 到 200 F² 之间,比 1T1R 的 RRAM 单元(典型面积 10~50 F²)大一到两个数量级;其次是读干扰问题,虽然 SRAM 读写稳定性设计已经很成熟,但在存算一体模式下,多个字线同时导通会改变单元的工作点,必须小心控制位线电压摆幅,否则可能把存储数据改写了;最后是漏电功耗,SRAM 在先进工艺下静态漏电不可忽视,这对低功耗场景是硬伤。
2.2 RRAM 工作原理与性能边界
RRAM(阻变随机存取存储器)的核心是一个金属-绝缘体-金属结构的阻变器件,通过施加电压脉冲让器件在高阻态和低阻态之间切换,从而存储数据。因为不需要持续供电,RRAM 天然具备非易失特性,断电后数据依然保留。
在存算一体应用中,RRAM 通常以 1T1R(一个晶体管加一个阻变器件)阵列形式出现,把权重映射为单元的电导值。当输入电压(对应激活值)施加在字线上时,流过每个单元的电导电流就是“权重×输入”的结果,在位线上自然累加,再用 ADC 读出。相比 SRAM,RRAM 单元面积小、密度高,且权重可以直接存成模拟电导值,理论上能做到很高的单位面积算力。
但 RRAM 的短板也很突出:阻变窗口(高阻与低阻的比值)有限,通常一个数量级左右,导致多比特权重映射困难;器件电导存在波动性,需要复杂的写校验和参考电路来补偿;耐久性只有 10⁵ 到 10⁶ 次写周期,远低于 SRAM 的无限次读写。这些都不是“以后能解决”的小问题,而是直接决定你电路架构设计难度的核心约束。
2.3 核心参数对比表
| 对比维度 | SRAM 存算一体 | RRAM 存算一体 |
|---|---|---|
| 单元结构 | 6T/8T 晶体管 | 1T1R 或交叉阵列 |
| 单元面积 | 约 100~200 F² | 约 10~50 F² |
| 非易失性 | 无,断电丢数据 | 有,断电保留 |
| 读写速度 | 亚纳秒级 | 纳秒级,写较慢 |
| 耐久性 | 近乎无限 | 10⁵~10⁶ 次 |
| 多比特能力 | 较容易,靠数字/模拟混合 | 较难,电导窗口有限 |
| 静态功耗 | 中等偏高 | 极低(非易失) |
| 工艺成熟度 | 极高,各代工厂标准库 | 中等,特定工艺节点可选 |
| 外围电路复杂度 | 相对简单 | 偏置、参考、校验电路复杂 |
| 良率与量产风险 | 低 | 中高 |
这张表里 SRAM 唯一的“硬伤”就是面积大和非易失性缺失,RRAM 则是在制造和可靠性上明显吃力。看起来两者各有千秋,但落到真实产品选型时,场景约束会很快帮你在它们之间做减法。
3. SRAM 存算一体方案选型要点
3.1 SRAM 存算一体适合哪些场景
先说结论:SRAM 存算一体最适合“数据生命周期短、计算精度要求高、工艺节点领先”的实时推理场景。
举几个具体例子。一是端侧语音关键词唤醒,模型很小,权重只有几十 KB,但要求极低延迟和低功耗,SRAM CIM 能让权重常驻在片上,免去反复从外部存储加载数据的开销。二是视频编解码和图像信号处理里的滤波算法,这类算法通常有实时性要求,而且权重更新频繁,SRAM 的无限耐久性就显得很香。三是大模型推理中的部分算子加速,比如 Attention 里的 QKV 乘法和输出投影,权重虽然不是每毫秒都变,但 SRAM CIM 和数字计算单元结合,能起到“暴力卸载乘加负载”的效果。
要注意的是,SRAM 是易失性存储,一旦掉电权重全丢。如果产品有“断点续算”“低功耗待机后秒醒”这类需求,SRAM 路线需要额外配备非易失存储做权重备份和恢复,这部分的面积和功耗成本经常被低估。
3.2 关键电路指标:位线摆幅、ADC 精度、阵列组织
设计一个 SRAM CIM 宏单元,最容易被问到的三个指标是位线摆幅、ADC 位宽和阵列规模。
位线摆幅决定了计算精度和功耗。摆幅越大,信噪比越高,但每做一次计算要耗费的功耗也越大,而且对存储单元稳定性的威胁更大。实践中,常用做法是控制摆幅在 100~200 mV 左右,并用差分位线抵消共模噪声。我见过一个团队为了追求精度把摆幅拉到 300 mV,结果低电压下的写稳定性测试惨不忍睹。
ADC 精度是另一个大头。理论上位线上的电流累加结果是模拟量,送入 ADC 量化后才能和数字流水线衔接。ADC 每增加 1 bit,面积和功耗大致翻倍,所以千万别贪心。业内常用的经验法则是:在 8 bit 权重、8 bit 激活的量化条件下,读电路 ADC 做到 6~7 bit 足够,剩下误差交给算法侧做量化感知训练去补偿。
阵列组织方面,常见选择是每 64 或 128 行共享一条位线做累加,列方向并排放置多个子阵列再拼出更大的 MAC 阵列。行数越多,单次计算吞吐越高,但位线电容越大、累积噪声越大。选 64 还是 128,一定要结合你们目标工作频率去仿,别照搬论文参数。
3.3 从 NVIDIA 的 SRAM 布局得到的信号
最近有个搜索词是“sram(nvidia)”,这里多说两句。NVIDIA 在 GPU 里有大量 SRAM 用作寄存器堆、共享内存和缓存,同时他们也在 ISSCC 等会议上展示过基于 SRAM 的存内计算相关研究。这释放的信号不是“NVIDIA 下一块 GPU 马上要用存算一体”,而是他们在认真评估 SRAM CIM 作为特定算子加速器的可行性,以及在为未来架构储备知识产权。
对我们做选型的人来说,参考价值在于:如果连重量级玩家都在 SRAM CIM 上投入资源,说明这条路线至少在“灵活性和数字生态兼容性”上有不可替代的优势。我们的产品设计也应该优先考虑让 SRAM CIM 宏单元能像普通 SRAM 一样挂进 SoC 总线,这样既能做存储用,又能切到计算模式,一鱼两吃,降低工程风险。
3.4 SRAM 的 EMA 引脚到底是什么
搜索热词里有一个“sram的ema pin是干嘛的”,这里单独解释一下,很多工程师第一次接触带扩展功能的 SRAM 接口时都会被这个缩写困惑。
EMA 并不是所有 SRAM 都有的标准引脚,它通常指“扩展模式访问(Extended Mode Access)”相关信号,出现在一些支持配置寄存器扩展的 SRAM 或伪 SRAM 接口里。当这个引脚有效时,地址线会被解读为寄存器地址而不是存储单元地址,主机可以借此配置芯片的低功耗模式、输出驱动强度、延迟参数等。
如果你只是做普通的存算一体宏单元,多半不会碰到这个引脚;但如果你在集成某款带扩展模式的商业 SRAM IP,看到 EMA 引脚一定要仔细查 datasheet,不要直接接地或悬空。把它拉高可能让你意外进入配置模式,导致存储访问行为异常。这个坑我在项目 review 时见过不止一次。
4. RRAM 存算一体方案选型要点
4.1 RRAM 存算一体适合哪些场景
RRAM 存算一体的高光场景集中在“低功耗 + 非易失 + 权重不常更新”这个交集里。
最典型的就是电池供电的 IoT 设备端推理,比如智能门锁的人脸识别、工业振动传感器的异常检测、助听器的环境音分类。这些设备往往几个月才更新一次模型,但要求待机功耗尽可能低、上电后能立刻开始推理,权重必须掉电不丢。RRAM CIM 可以直接把神经网络权重写成非易失电导值,上电后一个时钟周期就能开始计算,不用等待权重搬移,这在微瓦级功耗预算下是巨大的优势。
另一个适合的场景是持续运行的传感器数据预处理,比如可穿戴设备里的 PPG 信号分析。数据流是一直来的,但设备经常处于极低占空比唤醒状态,RRAM 的低静态功耗优势能直接转化为待机时间的延长。
不过,如果你想做的产品需要频繁在线学习、每秒钟更新权重,RRAM 的耐久性马上会成为瓶颈。10⁵ 次写循环听起来不少,但如果一秒写一次,一天就是 86400 次,不到两天就磨穿了。这类需求还是老实选 SRAM。
4.2 阻变窗口、耐久性、良率如何权衡
RRAM 选型里最核心的一组矛盾是阻变窗口、耐久性和良率之间的三角关系。
阻变窗口如果设计得大一些,高低阻态区分度好,读错率低,但需要的写电压和电流更大,会加速器件磨损,降低耐久性。反过来,如果把写条件调弱来延长寿命,窗口变小,多比特权重映射就更难做,良率也会因为工艺波动而下滑。实践上,很多团队会选择“低阻态目标值取中间区域”的策略,也就是不要把低阻态压得太低,留出对抗工艺波动的余量。
良率问题更直接。RRAM 的阻变层厚度只有几纳米,工艺波动对电导一致性影响很大,设计时会发现阵列角落的单元和中心单元电导偏差明显。常见对策是加写校验循环:写入后读一次,不达标再写,直到满足目标电导范围。这个做法能显著提升良率,但代价是写功耗和时间成倍增加。
如果你所在公司没有和代工厂联合开发 RRAM 工艺的条件,我建议尽量使用代工厂已经量产验证的嵌入式 RRAM IP,而不是自己设计单元版图。自己画单元这事儿,适合高校和研究机构做原型,不适合商业流片节奏。
4.3 外围电路成本与偏置电路设计
很多人只盯着 RRAM 单元本身,低估了外围电路的工作量。RRAM CIM 宏单元的外围电路包括写驱动、限流电路、参考电阻阵列、读出放大器和写校验逻辑,任何一部分没做好,都会让阵列的实际精度远低于论文仿真值。
偏置电路尤其关键。RRAM 单元的读电压必须精确控制在阻变阈值之下,否则会造成读干扰,也就是读一次数据就变了。典型读电压在 0.1~0.3 V 区间,而写电压在 1~3 V 区间,两者差距很大,电源设计上要避免寄生电容耦合造成尖峰。
参考电阻阵列也要多留几个档位。由于不同 batch 流片的器件电导分布可能漂移,如果参考值是固定的,遇到整体偏移就会系统性读出错误。预留可调节的参考档位,配合量产测试阶段的校准流程,是很多团队的实用经验。
5. 选型决策框架:从算力、精度、功耗、成本四个维度把关
5.1 计算负载类型:和连续矩阵乘的匹配度
选型第一步是反过来审视你们的目标工作负载,而不是先比存储器件参数。
如果负载是大量“连续的大矩阵乘法”,比如大模型推理里的 GEMM 算子,存储阵列越大越好、数据复用越多越好,RRAM 的密度优势能放大到极致,因为权重可以大规模地填进阵列里。
如果负载是“碎片化的小规模算子”,比如奖赏函数计算、控制逻辑中的小矩阵处理,SRAM 的灵活性更合适。RRAM 阵列往往需要整行整列地做运算,单个小矩阵可能只占阵列很小一部分,利用率上不去,优势就发挥不出来。
一个实用做法是对你们模型做算子剖析:把计算图里每个算子的输入输出尺寸、权重大小、调用频率列出来,算一算如果映射到 64×64 或 128×128 的存储阵列上,利用率能达到多少。利用率低于 50% 的算子,其实不太适合硬塞进存算一体单元。
5.2 精度敏感与模拟误差容忍度
精度是存算一体最容易被销售 PPT 夸大的点。SRAM CIM 和 RRAM CIM 都有模拟计算的固有误差,但来源不同。
SRAM CIM 的误差主要来自位线累加时的噪声和 ADC 量化误差,因为计算过程和存储数据分离,误差稳定性较好,在不同温度和电压下表现相对一致。
RRAM CIM 的误差则复杂得多,器件电导的时变漂移、不同单元之间的工艺偏差、温度和电压对阻变状态的影响,都会在计算中累积。这就导致一个问题:芯片出厂时测试精度可能是 99%,跑了一段时间后因为电导漂移可能降到 90%。
如果你的产品是安防、工业控制这类对结果稳定性要求极高的场景,我强烈建议先做一个“误差注入”实验:用软件模拟在权重上加一定比例的随机噪声,看最终模型精度退化多少。这个实验成本极低,但能帮你在项目早期就认清模拟计算的真实代价。
5.3 工艺成熟度与供应链成本对比
选型时还要考虑一个非常现实的问题:你们团队能流片的工艺节点里,RRAM 是否可用,以及可用密度和可靠性参数到底是什么水平。
SRAM 在所有主流工艺节点都有标准单元库,从 180 nm 到 5 nm,随便选。RRAM 目前主要在特定工艺节点量产,比如 40 nm 或 28 nm 的嵌入式 RRAM 选项,更先进节点的成熟度还在爬坡。如果你们项目要求用 12 nm 以下节点做高性能计算,RRAM 大概率不是现实选项。
成本方面,值得注意一个隐藏项“改写成本”。RRAM 虽然单元密度高,但写校验循环、偏置电路、参考电路的面积开销经常被低估。我自己见过一个 RRAM 宏单元设计,存储阵列本身面积不大,可外围电路面积几乎是阵列面积的 2 倍,最后整体面积和同容量的 SRAM 方案差不了太多。
如果你们的产品是一次性量产、对成本极度敏感,我建议除了芯片 BOM 成本之外,把“量产测试时间”也算进去。RRAM 的写校验和参考校准会增加测试工时,良率损失也会直接摊到单颗成本里。
5.4 决策矩阵与打分表
把上面这些维度综合成一张打分表,可以快速给不同项目做初筛。以下是我在项目里常用的一套权重打分逻辑,你们可以按实际需求调整权重。
| 评估维度 | 权重建议 | SRAM CIM 得分 | RRAM CIM 得分 |
|---|---|---|---|
| 工艺成熟度 | 0.25 | 10 | 5 |
| 电路复杂度 | 0.20 | 8 | 4 |
| 单位面积算力 | 0.15 | 6 | 9 |
| 非易失能力 | 0.10 | 1 | 10 |
| 精度稳定性 | 0.15 | 9 | 4 |
| 量产良率 | 0.15 | 9 | 4 |
| 加权总分 | 1.00 | 7.7 | 5.1 |
这个表的一个典型应用场景是:如果项目对非易失能力权重提到 0.3(比如低功耗 IoT 设备),那么 RRAM 得分会反超。反之,如果团队在第一颗芯片上更看重“一次流片成功、快速上市”,SRAM 的成熟优势会非常明显。
6. 实操中的坑与经验
6.1 常见问题速查表
下面这几类问题在实际项目里出现频率最高,我把排查思路列成速查表,方便你们踩坑时快速定位。
| 问题现象 | 可能原因 | 排查思路 |
|---|---|---|
| SRAM CIM 低电压下计算错误率陡增 | 位线摆幅过大或工作点设置不当 | 降低摆幅,检查时序余量,必要时增加写辅助电路 |
| RRAM 写入后数据随时间漂移 | 电导保持性不足,温度影响 | 提高写入强度,但在耐久性上做权衡;增加保持性实验 |
| STT 模式换算的功耗比仿真高很多 | 阵列外围电路功耗未计入 | 统一用宏单元级仿真,别只算核心阵列功耗 |
| 不同批次芯片精度差异大 | 工艺偏差导致电导分布偏移 | 增加生产校准步骤,调整参考电阻档位 |
| 芯片初次上电推理结果全错 | 权重未正确初始化 | 检查非易失存储上电读取路径,确认权重加载时序 |
还要提醒一句,无论选哪种路线,样片测试阶段的“温度循环测试”和“老化测试”一定要做足。存算一体芯片的模拟特性对温度敏感,常温下表现良好的芯片在 –20℃ 或 85℃ 下可能完全变样。
6.2 我的选型经验与优先级建议
踩过几次坑之后,我个人的经验是:第一颗存算一体芯片,如果没有特别硬性的非易失需求,优先选 SRAM 路线。原因很简单,SRAM 的工程确定性高,团队可以把精力集中在算法映射、ADC 设计和系统集成这些真正产生差异化的环节,而不是耗费在器件工艺驯服上。
等到团队积累了足够的存算一体设计经验、产品迭代到第二代或第三代,再评估是否引入 RRAM。第二代芯片的架构通常更稳定,这时候把易失性权重换成非易失性,往往比第一代就同时蹚两条新技术路线要靠谱得多。
如果你确实需要在第一代就做 RRAM,我的建议是缩小阵列规模、降低权重位数(比如从 4 bit 降到 2 bit),先把完整链路跑通,再用软件层面的精度补偿抵消硬件位宽损失。这个策略在好几个实际产品里被验证过,比一开始就追求高精度映射更容易落地。
6.3 关于仿真工具链的一个提醒
最后分享一个容易忽略的工具链问题。SRAM CIM 宏单元通常可以在传统 SRAM 编译器生成的模型基础上扩展,仿真工具链成熟,模型精度高;RRAM CIM 则往往需要厂商提供专门的器件模型(如 Verilog-A 模型),不同厂商模型参数差异很大,而且有些模型在统计波动仿真上做得不够精细。
选型前一定让 FAE 提供完整的 Monte Carlo 仿真结果和硅片实测数据对比,别只看典型值仿真曲线。我见过一个项目用过一组很激进的 RRAM 模型参数仿真,精度数据漂亮得发指,一到实测数据,直接掉了两个数量级的良率。
做芯片选型这件事,本质是在信息不完整的情况下做工程决断。SRAM 和 RRAM 没有绝对优劣,只有适不适合你的场景、你的团队、你的产品周期。想清楚这一点,再回头去翻 datasheet,答案其实已经在你心里了。