资讯动态

存算一体芯片选型:SRAM与RRAM的对比分析与工程实践

发布时间:2026/10/3 14:16:50 来源:尧图企业网站定制
做这行十多年被问得最多的一个问题是新一代AI小盒子到底用SRAM做存算一体还是上RRAM每次展会上总能看到SRAM派和RRAM派各摆各的demo一个讲“已经量产、良率不错”一个讲“非易失、密度碾压”好像两边不在同一个世界里聊天。其实这两类存算一体芯片的适用场景并没有那么重叠但选错代价极大因为流片一次的钱、人力、测试周期都是真金白银。这篇文章不打算给你一个万能答案——那种答案不存在。我把SRAM和RRAM在存算一体里的原理、参数、工程坑、生态成熟度全部摊开结合我自己在存储阵列、数模混合接口和编译器适配上的经验讲清楚你手里的应用到底该押哪边。读完之后你应该能对着自己的模型结构、更新频率和工艺节点直接判断出该走哪条路。1. 别被“存算一体”四个字带偏先分清你站的是哪条赛道很多刚开始做选型的朋友容易犯一个错误把“存算一体”当成一种方案然后在SRAM和RRAM之间做非此即彼的选择。实际上存算一体是一个架构方向SRAM和RRAM只是实现这个方向的存储介质之一。先搞清楚自己在什么位置再谈选型才有意义。1.1 近存、数字存内、模拟存内三种路线完全不是一回事拿AI推理芯片最常见的矩阵乘加MAC计算来说数据搬运消耗的能量远大于计算本身。为了减少搬运行业里演化出三条路线近存计算把计算单元和存储单元封装在一起或者放到同一个interposer上缩短数据路径。典型代表是各类带大缓存的多核AI芯片还有HBM搭配逻辑die的做法。这条路不改变计算方式只是把存储“搬得近一点”。数字存内计算把加法器、乘法器直接做成存储阵列里的数字逻辑块例如在SRAM单元旁边放一个全加器读出来的数据直接在存储体内部完成数字域的加法。精度可控但单位面积的算力密度不如模拟路线。模拟存内计算利用存储单元本身的物理特性比如电流、电荷、电阻值在模拟域直接做乘加。读出一条字线的时候多列的电流自然叠加在一起这就是“乘”和“加”同时发生的物理基础。SRAM存算一体和RRAM存算一体大多属于这一条路线。三条路线不是互斥的。我见过一个很务实的芯片同一个die上小容量权重用数字存内计算保证精度大容量embedding用近存HBM最后再挂一个SRAM模拟宏做高频小矩阵推理。真正的高手不是选阵营而是按数据流把不同宏单元拼起来。1.2 SRAM和RRAM各自占据的生态位从介质特性看SRAM是易失性存储读写无限、速度快、工艺成熟RRAM是非易失性存储密度高、可微缩、断电不丢数据但写寿命有限。放到存算一体的语境里这两个特性直接决定了它们各自的“主场”SRAM适合高频、高耐久、对精度敏感的推理任务尤其是每帧刷新权重、需要在线微调的模型RRAM适合权重相对固定、成百上千次重复读、对存储密度和静态功耗要求极高的场景。听起来很清楚实际选型时你会发现边界被大量“例外”打破。比如有些RRAM工艺也能做到读循环无限次而高频更新时写入功耗又没那么吓人SRAM虽然耐久度高但静态漏电在大batch推理时会让你发热头疼。所以下面两章我们分别拆开看。2. SRAM存算一体为什么它是“最没有惊喜但也最稳”的选择SRAM做存算一体在工艺和EDA工具链上的起点实在太高了。大多数12nm、28nm、40nm工艺的PDK里都有成熟的SRAM compiler你需要做的只是把seed memory宏导出来然后在外围加一点模拟电路。这也是为什么市面上第一批可量产的存算一体芯片绝大多数都选了SRAM。2.1 一颗6T单元如何同时干存储和计算的活经典的6管SRAM单元用两个字线和两根反相器交叉锁存一个bit。平时我们读数据是先把位线预充电到VDD然后打开字线根据存储值让某一条位线通过下拉管放电。存算一体的做法是在这个放电过程里做文章。假设你在同一行上存储了一个权重向量的多个bit然后给字线加一个模拟电压这个电压对应输入值。流经单元下拉管的电流既和存储的bit相关又和字线电压相关天然就是一次乘法。同一列上很多行同时放电电流在位线上叠加又自然完成了加法。最后位线上的累积电流经过一个模数转换器ADC读出来就是一个模拟域的乘加结果。这就是为什么大家常把SRAM存算一体称为“电荷域计算”。它不需要额外的乘加器存储阵列本身就是计算单元。但代价也很直接模拟域的精度不是白来的位线上的寄生电容、器件失配、ADC的量化噪声都会影响最终输出这就是后面要讲的精度工程问题。2.2 SRAM路线的三大杀手锏耐久、速度、成熟度耐久度接近无限SRAM的读操作不改变存储状态写操作是CMOS电平翻转不存在介质磨损问题。这意味着你可以做实时权重微调、在线学习、每帧更新滤波器参数完全不用担心寿命。RRAM做微调训练可能半天就写挂了SRAM完全没这个顾虑。读写速度极快SRAM读延迟通常在亚纳秒到几纳秒级别做实时推理的时候逻辑端和存储端几乎不需要等待。RRAM哪怕号称高速写操作也需要几百纳秒到微秒级的时间来保证阻变可靠这个差距在低延迟场景下是很明显的。工艺成熟度无可挑剔TSMC、Samsung、SMIC还有一堆成熟制程厂SRAM compiler和IP都是现成的。你不需要验证新器件模型不需要和代工厂扯皮RRAM的form电压、良率映射设计周期可以压缩到最低。2.3 SRAM的真正短板容量、漏电以及排查“EMA引脚”的那点事SRAM的短板同样致命。最大的问题是面积。一颗6T单元面积比逻辑门大得多而且必须遵守design rule里严格的接触孔间距和阱布局。这意味着你很难在合理面积里塞下大容量权重。一个8MB的SRAM宏在28nm工艺里可能要占到好几平方毫米这对很多边缘设备来说是奢侈的。第二个问题是静态漏电。SRAM不上电数据就没了上电就必须持续供压保持状态待机功耗在电池设备上很敏感。这也是很多TWS耳机、智能传感器宁可上非易失存储的原因。第三个问题很多人搜“SRAM选型”时会碰到——芯片上有个引脚叫EMA查了半天不知道干嘛的。如果你打开的是某款SoC的SRAM控制器原理图或特定国产存储颗粒手册EMA多半不是通用的JEDEC标准信号名。它在不同厂商的语境里有好几种意思有的指外部存储接口的地址锁存控制有的指调试模式下访问Embedded SRAM的使能信号还有的EMA其实是厂商自定义的“扩展测试通道”先在测试模式下把数据灌进SRAM方便低良率分析。我自己的建议是选型时千万别对着这个名字猜功能一定回到官方数据手册的“Pin Description”表查这个信号连接到内部哪个模块。EMA这类靠近测试链路的信号常年在默认状态下不影响工作但一旦上电时序不对、在外部debug口被拉高拉低会让SRAM莫名进入测试模式数据读到一半全乱。这种问题排查起来非常隐蔽你甚至会怀疑是电压纹波或者solder joint虚焊。2.4 典型代表从大厂L2缓存到创业公司的CIM宏说到SRAM绕不开Nvidia。虽然Nvidia现在的主力计算策略不是严格意义上的模拟存内计算但它把大量SRAM比如Blackwell架构里的大容量L2缓存贴近SM安排本质上是在用近存思路缓解HBM带宽压力让Transformer推理时的权重读取不那么依赖巨贵的CoWoS封装和HBM堆叠。很多国内AI芯片也照这个思路在GPU附近堆大SRAM再用编译器把算子重排到SRAM内部。严格来说这是“SRAM近存计算”不是“SRAM模拟CIM”但它的工程收益甚至比激进CIM来得更稳。创业公司这边我接触到的国内几家采用SRAM CIM方案做语音识别和轻量级图像处理的芯普遍能跑出比普通MCU高一到两个数量级的能效比在10TOPS/W上下浮动的不少。代价是权重容量通常只有几百KB到几MB够跑一些小型CNN和整型量化模型跑不动动辄几个GB的大模型。3. RRAM存算一体非易失和高密度背后的代价不能只看PPTRRAM近几年的声势明显变大很多人大力宣传“非易失、高密度、3D可堆叠”。这些特性放在存算一体里确实诱人尤其是智能物联网设备需要断电保存模型参数的场景。但RRAM不是没有代价尤其是从实验室demo到可量产工业品之间隔着一大堆工程细节。3.1 RRAM的阻变原理与多值化实现RRAM的核心是一层金属氧化物介质夹在上下电极之间。施加正压脉冲时介质中形成导电细丝器件进入低阻态施加反向电压细丝断裂器件回到高阻态。高阻值和低阻值的比例可以做到十倍甚至百倍以上这个比例就是存储窗口。存算一体的玩法在于不加到完全SET或RESET而是用多个电压等级把阻值调成多个中间态。一个器件可以表示2bit甚至4bit这就是多值RRAM。做矩阵乘法时权重存储在阻值里输入电压乘上电导阻值的倒数就得到电流同一列的电流再叠加。每颗器件相当于一个模拟乘法器密度优势非常明显。3.2 RRAM真正的用武之地掉电保持、边缘AI、存内逻辑我给RRAM总结了三个最值得入场的方向掉电保持场景安防摄像头、智能门锁、耳机平时处于深度休眠偶发任务时需要立刻推理。用RRAM掉电前的模型参数直接留在阵列里上电不用加载启动时间几乎为零。而SRAM方案还得配一块Flash在开机时做镜像搬运不仅慢还多了存储介质和搬运链路的成本。权重更新极少的推理场景比如一个已经训练好的NLP意图分类模型部署后几个月不更新。写RRAM的次数屈指可数但它每天被读取成千上万次RRAM的读耐久性完全够用。这种场景下SRAM每次开机都要重新写入反而浪费能量。存内逻辑运算RRAM除了做MAC还能实现逻辑蕴含等操作把布尔运算直接放进存储阵列。这个方向目前在学术界热度很高工程上还在早期但如果你做的是数据密集型极端场景值得关注。3.3 工艺和可靠性的连环坑forming、良率、漂移、写寿命我在实际项目里踩过RRAM最痛的几个坑分享出来希望你避开Forming过程新鲜的RRAM器件需要一次较高的电压来做“一次性激活”这个过程叫forming。如果forming电压控制不好要么细丝形成不彻底要么直接击穿介质。选中芯片量产时必须有一套统计分布的forming电压策略而不是每颗器件用同样电压。良率和映射RRAM阵列总有不合格器件高压下漏电、写不进去、保持不住都可能发生。很多芯片采用“冗余列故障映射”的策略把坏单元标记掉。但这会在你的权重阵列里引入不规则空洞编译器必须跟着做重排。这个工作听着简单实际工程量很大。阻值漂移RRAM阻值会随温度、时间、读干扰发生漂移。HRS可能慢慢掉下来LRS可能慢慢涨上去。设计时如果存储窗口余量不足过几个月设备里的模型精度就悄然下降。所以选料和宏设计时评估烤机老化测试bake test是非常有必要的。写寿命工业级RRAM的写寿命通常在10^5到10^6次量级。比Flash好不少但距离SRAM的无限写差太远。数据集中如果经常做增量学习、强化学习、在线微调你很快会撞上这个天花板。这块要用配套的写计数和磨损均衡机制否则系统寿命不可控。3.4 工艺、IP和生态代工厂到底给不给你打包票做选型不能只看器件本身代工厂的支持程度往往是生死线。目前RRAM在28nm、22nm甚至更先进节点都有可用的嵌入式方案台积电有eRRAM方案国内的代工和IDM也在推进。但和SRAM compiler的“开箱即用”不同RRAM的PDK模型、老化模型、可靠性数据不同代工厂的成熟度差异很大。研发阶段找代工厂拿一个“可以流片”的模型很简单但走到量产可靠性阶段对方能给出的统计数据和失效机制分析才是真正的分水岭。签合同前一定要确认对方能提供多温度、多电压角的RRAM器件模型以及老化漂移仿真支持否则后续做量产筛选和良率优化举步维艰。4. 选型对比六个维度的硬碰硬不卖关子直接上一张我平时做架构选型用的对比表。这只是典型值具体工艺、电压、温度角会使数据浮动但量级和趋势是稳定的。维度SRAM存算一体RRAM存算一体选型提示存储密度低6T单元面积大高1T1R单元面积小且可3D堆叠要放几十MB权重就RRAM几百KB就SRAM读延迟亚纳秒~几纳秒几十纳秒到百纳秒级实时性要求极高优先SRAM写/编程能耗常规CMOS写能耗低需大电压电流编程能耗高且慢权重频繁更新选SRAM耐久度几乎无限写10^5~10^6次读无限在线训练/微调必须SRAM静态功耗易失始终漏电非易失静态功耗极低电池深度休眠选RRAM工艺成熟度各节点成熟IP丰富可选节点少模型和可靠性支持不一想快速流片选SRAM模拟计算精度受漏电和失配影响受阻变随机性和漂移影响更大高精度场景SRAM低位宽RRAM可接受成本面积大大容量昂贵单位容量成本潜在地低大容量需求 RRAM 更有望看到这个表你的应用可能已经有一部分倾向了。但工程决策不是把指标一列就完事关键还是要回到模型本身的数据流。我总结了一个简单的“三问”流程权重多久更新一次每小时甚至每分钟更新直接选SRAM一星期或更久才更新一次RRAM可入局。需要保存的模型参数有多大小于2MBSRAM还有救大于10MB且PCB空间极为有限RRAM是必然方向。设备平时是常供电还是经常断电常供电并且功耗预算宽松SRAM的漏电不是大问题会用纽扣电池撑几年的设备RRAM的优势是压倒性的。这三个问题回答完你的候选方案基本收敛到只剩一个了。如果不收敛那就走混合路线。4.1 混合SRAMRRAM方案开始在一些高端项目里出现老实说我自己做项目时最看好的并不是纯粹的SRAM或RRAM而是把两者放到同一个宏单元里的混合架构。比如RRAM做大容量静态权重保存那些基本不更新的embedding表利用非易失特性省掉Flash搬运步骤SRAM做小容量动态状态存放KV cache、中间激活值、在线统计量保证高频更新不被写寿命卡住。这种混合宏在存算一体里尤其适用因为模型不同层级的数据特性差异太大了。粒度较小的MLP层权重更新相对频繁SRAM合适底层的embedding表、lookup table则是典型的“重读轻写”RRAM合适。两种介质放在同一个die上用统一的内存映射管理虽然设计和验证工作量增加但系统能效和灵活度都比单介质方案好很多。目前这种思路已经在一些先进工艺的AI推理加速芯片里出现后续会越来越多。5. 工程实现细节宏单元、ADC和精度三座绕不开的大山不管最终选了SRAM还是RRAM落到电路设计你要面对的问题高度相似。很多人选型时只盯着介质特性真正流片时才被宏单元设计、精度建模和工具链适配折腾得怀疑人生。5.1 阵列尺寸和ADC位数的折衷决定了你的算力密度模拟存内计算宏单元的面积大头往往不是存储单元本身而是外围的ADC。一个8bit ADC的面积比好几百个SRAM单元都大。所以宏单元设计存在一个尖锐矛盾你想提高并行度就要把更多行同时读到一组位线上但位线电流范围有限ADC分辨率不够时误差会跟着爆掉。工程上一般做法是牺牲一点面积用多个子阵列并行。比如把一个512×512的矩阵拆成16个128×128的子阵列每个子阵列单独配一个ADC。密度不比单个大阵列差但每条位线上的累积行数少了电流范围更可控ADC位数只要6~8bit就够了。这条经验对SRAM和RRAM都一样。唯一区别是RRAM的单元电导离散性更大可能对ADC的动态范围要求更严要留更多余量。5.2 精度的账要算到系统层面而不是只看ADC位数常有人觉得“我做8bit ADC精度就是8bit”。这个直觉是错的。模拟MAC的误差来源非常多单元阈值失配、位线寄生电容、IR drop、ADI的增益误差、ADC量化噪声、时序抖动……把这些全加在一起有效精度往往只有5~6bit8bit ADC只能帮你尽量逼近这个上限。我强烈建议在流片前先建一个行为级模型把阵列噪声、ADC量化、温度漂移全部灌进你的神经网络里跑一遍。比如下面这段Python伪代码就是我在做精度仿真时常用的思路import numpy as np def quantize(x, bits): levels 2**bits - 1 return np.clip(np.round(x * levels) / levels, -1, 1) def compute_imc_sim(weight, input, adc_bits6, noise_sigma0.02): # 模拟域每列累积叠加噪声 mac weight input # 加入阵列随机失配和ADC量化 noise np.random.normal(0, noise_sigma, mac.shape) return quantize(mac noise, adc_bits) # 对比fp32结果算有效精度 # ...跑完这类离线仿真你才能知道自己真实需要的ADC位数和阵列噪声上限。不要等到MPW回片再后悔那代价太大了。根据我的经验6bit ADC配合低噪声SRAM阵列在做int8量化模型时通常能保住端到端精度损失在1%以内RRAM如果阻值漂移控制不好最好把位宽压到4bit才稳妥。5.3 编译器要不要重写取决于你的存储映射抽象层存算一体芯片的价值高度依赖编译器。如果你的芯片对外暴露的是一个自定义的MAC宏单元那编译器必须把神经网络算子降级成一系列“写入权重、加载输入、触发ADC、读出结果”的指令。这个过程远不是改个算子库能搞定的。近几年有一部分团队采用了折中方案把存算一体宏封装成类似PIMprocessing-in-memory的抽象层让编译器看到的还是标准GEMM接口然后由底层runtime拆分成“权重预加载 模拟前向”两个阶段。这个方法加速了软件迁移但会掩盖一部分阵列配置的灵活性比如不同ADC bit、不同通道数的动态组合。选型时留意一个问题供应商是否提供了和你目标框架TFLite、ONNX Runtime或自研inference引擎对接的编译器插件如果没有你就要做好自研几个月的准备。很多芯片评测分数漂亮最后死在软件落地周期太长上。6. 不同应用场景SRAM还是RRAM我直接给你结论每个场景都有不同的约束条件。下面是几个最近IP讨论里反复出现的典型应用和我的建议可以直接照着做选型。6.1 语音唤醒/手势识别低功耗永远在线优先RRAM这类设备常年在收听音频或捕捉手势但只在小段时间内真正计算。核心诉求是“平时不耗电、醒来快”。RRAM的非易失特性让你可以经常进入深度掉电状态模型参数不掉、唤醒向量不掉。SRAM要维持数据就得一直供电或者搭配Flash每次启动重新加载既费电又慢。所以这种场景我几乎无脑推荐RRAM。6.2 LLM推理加速器看数据规模主流仍是SRAM近存RRAM是长期变量LLM推理的权重动不动就是GB级别纯SRAM宏根本放不下RRAM的大容量优势理论上很诱人。但LLM推理同时需要KV cache高频读写KV cache的更新频率远高于权重这块用RRAM很容易写坏。所以当前比较现实的方案是主体还是HBM 大SRAM近存SRAM承担激活值、KV cache和部分权重未来如果RRAM能到3D堆叠更大容量并且写寿命再上一个量级才可能成为Transformer权重的主力存储介质。Nvidia这类大厂往SRAM L2里塞更多缓存本质上也是看中近存传输能效比不是因为SRAM能存下全部模型。大模型场景下的RRAM我认为至少还需要三到五年的工艺和可靠性积累。6.3 在线学习/边缘微调没得选只能SRAM如果设备需要根据现场数据不断微调模型哪怕只是几分钟调一次权重写寿命就是一道硬门槛。RRAM写一次要经过细丝形成和断裂过程频繁写还可能导致阻值分布漂移。SRAM写操作是无损的就算每天微调几千次也不会对寿命产生实质影响。这个场景我基本不会给RRAM留位置除非你只把RRAM当“冷启动系统盘”高频微调的部分仍放在SRAM。6.4 小批量、自定义工艺的专用加速器混合方案更吃香有些企业会为特定算法流片比如超分辨率、雷达信号处理、生物特征匹配。这类芯片应用固定、功耗预算固定并且对成本敏感。我的推荐是把权重分成两大类静态部分放RRAM动态中间量放SRAM再把MAC计算直接嵌到存储阵列里。这种混合方案在能效、密度和灵活性上都是最优解但需要团队同时熟悉两种介质的设计和可靠性问题门槛高回报也高。7. 落地前的最后提醒比参数表更重要的几个“避坑”经验临近结尾分享几个我在实际项目里总结出的经验算不上教科书内容但确实能帮你省下几十万流片费。首先不要迷信TOPS/W的标称值。很多芯片宣传的TOPS/W是在最优条件下测出来的特定电压、特定pipeline、特定矩阵尺寸甚至不含系统级功耗。真实系统跑起来ADC功耗、输入输出数据搬运、编译器io调度这些往往都吃掉一半能效。我会让供应商给出“包含ADC和片外接口的端到端能效”数据做不到的就说明他们还不够坦诚。其次可靠性筛选要做在选型阶段不要做在量产阶段。SRAM没什么好说的RRAM一定记得问代工厂要不同温度下的老化数据1000小时125℃的高温存储测试、高低温循环测试、读干扰测试这些都会直接影响模型长期精度。如果对方只能提供“我们内部测试过、没问题”这种话术而没有具体数据那你就要非常谨慎了。还有一个容易被忽略的细节EMA这类测试与调试引脚的管理。不管SRAM还是RRAM宏单元供应商提供的memory compiler都会带一组测试复用信号。很多团队把它们随手接到一个GPIO上量产或现场调试时误触发导致芯片表现异常。我现在的规矩是所有测试引脚必须在顶层封装里拉到固定电平或者用专门的测试寄存器控制绝不允许悬浮或默认拉高。这些问题一旦发生现场查起来极其痛苦。工具链的适配度也必须列进你选型评分表。供应商的编译器是否支持你常用的算子集是否方便接入你现有的部署流程一个算法落地能力弱的芯片即使纸面算力再强也只会在你手上变成一个昂贵的FPGA替代品。这是SRAM和RRAM选型之外更底层的共同考验。回到一开始的问题SRAM还是RRAM实际上如果你能用好“静态权重放RRAM、动态状态放SRAM”的混合思路很多场景根本不用二选一。但如果你面对的是一个资源紧张、团队规模有限的常规项目我的建议是快速迭代、强调通用性的项目选SRAM严格要求低功耗、闪开即用、模型长期稳定不更新的产品才值得赌RRAM。这是最稳妥、最能交付真东西的路子。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑