第二讲:核心器件基础——RRAM、SRAM、Flash 的工作原理与存算一体角色
各位同学好,我是你们的老朋友。今天咱们聊聊存算一体架构里最底层的“砖瓦”——存储器件。
说实话,我刚入行那会儿,总觉得器件是搞工艺的人该操心的。直到有一次,我设计的一个存算一体加速器,仿真跑得飞快,流片回来却死活达不到预期能效。查了三个月,最后发现是器件特性没吃透,选型出了问题。从那以后,我养成了一个习惯:先摸清器件的脾气,再谈架构设计。
今天咱们就掰开揉碎,看看 RRAM、SRAM、Flash 这三兄弟,在存算一体里到底扮演什么角色。
一、RRAM:阻变存储器,存算一体的“新贵”
RRAM 的工作原理,说白了就是“电阻开关”。
它有一个金属-绝缘体-金属的三明治结构。给一个电压脉冲,绝缘层里会形成导电细丝,器件就变成低阻态(比如 1kΩ);再给一个反向脉冲,细丝断了,又回到高阻态(比如 100kΩ)。
嗯,这里要注意:RRAM 的阻值不是只有两个状态。通过控制电压脉冲的幅度和宽度,你可以把阻值调到中间某个值。这就是多比特存储的基础。
核心优势:
- 非易失性——断电不丢数据
- 高密度——可以做到 4F² 单元面积
- 与 CMOS 工艺兼容——我见过最成熟的方案是 28nm 节点
在存算一体里,RRAM 最适合做权重存储。为什么?
你想想看,神经网络推理时,权重是固定的。RRAM 的非易失性正好派上用场——上电即用,不需要加载。我在一个边缘推理芯片项目里,就是用 RRAM 阵列直接做矩阵向量乘法。输入电压,读出电流,电流自然就是乘加结果。省掉了数据搬运,能效比传统方案提升了 10 倍以上。
避坑指南:我曾经踩过一个坑——RRAM 的阻值会漂移。高温下,低阻态会慢慢变高。如果你的系统对精度要求高(比如 8bit 以上),一定要加 read-verify 机制,或者用差分结构。
二、SRAM:静态随机存储器,速度之王
SRAM 大家都很熟了。6 个晶体管组成一个锁存器,只要不断电,数据就稳稳地待在那里。
它的速度有多快?1ns 以内。我做过一个测试,28nm 的 SRAM,读延迟只有 0.8ns。这个速度,CPU 和 GPU 都追不上。
但代价也很明显:
- 面积大——6T 单元,密度远低于 RRAM
- 易失性——断电就丢
- 静态功耗——漏电流不小
在存算一体里,SRAM 的角色是计算缓存。
举个例子。我做过一个稀疏神经网络加速器,权重是动态生成的。这时候 RRAM 就不合适了——你总不能每次更新权重都擦写一遍吧?SRAM 正好,读写都快,而且可以无限次改写。
我习惯把 SRAM 用在激活值存储和中间结果缓存上。说白了,就是那些频繁读写、对延迟敏感的数据,交给 SRAM 最放心。
注意:SRAM 做存算一体有个天然缺陷——它只能做数字计算。你想用模拟方式做乘加?不行,SRAM 的读电流太小,信噪比不够。所以 SRAM 方案通常走数字路线,比如用位线加法树。
三、Flash:浮栅晶体管,老当益壮
Flash 是存算一体里的“老将”。它的原理是浮栅存储电荷,改变阈值电压。
你想想看,一个 Flash 单元,写一次要 10μs 到 1ms,读只要 10ns。这个读写不对称的特性,决定了它的用途。
在存算一体里,Flash 最适合做离线训练好的权重存储。
我参与过一个语音唤醒芯片的项目,用的就是 NOR Flash 阵列。为什么选 Flash?因为成本低,而且工艺成熟。28nm 的 eFlash 方案,每比特成本只有 SRAM 的 1/5。
但 Flash 有个大问题——耐久度。擦写次数只有 10 万次左右。你想想看,如果做在线学习,权重频繁更新,Flash 很快就报废了。
三种器件的对比:
| 特性 | RRAM | SRAM | Flash |
|---|---|---|---|
| 非易失性 | 是 | 否 | 是 |
| 读延迟 | ~10ns | ~1ns | ~10ns |
| 写延迟 | ~10ns | ~1ns | ~10μs |
| 单元面积 | 4F² | ~120F² | ~4F² |
| 耐久度 | 10⁶~10⁸ | 无限 | 10⁴~10⁵ |
| 典型应用 | 权重存储 | 激活缓存 | 离线模型 |
四、存算一体中的器件角色分配
好了,三种器件都讲完了。你可能会问:到底该用哪个?
我的经验是:没有万能器件,只有合适的搭配。
下面这张图,是我自己总结的存算一体器件选型逻辑:
你看,决策逻辑其实很简单:
- 权重频繁更新(比如在线学习)→ 选 SRAM,速度快、耐久度高
- 权重固定(比如离线训练好的模型)→ 选 RRAM 或 Flash,密度高、非易失
- 对延迟极度敏感(比如 L1 缓存)→ 选 SRAM
- 对面积成本敏感(比如大模型)→ 选 RRAM 或 Flash
我个人习惯,在做一个存算一体芯片时,会先画一张这样的决策树。然后根据应用场景,把不同器件分配到不同模块。
举个例子。我最近在做的一个视觉推理芯片:
- 第一层卷积的权重 → RRAM(因为权重固定,而且需要高密度)
- 中间激活值 → SRAM(因为每帧都在变,读写频繁)
- 全连接层的权重 → Flash(因为全连接层参数多,Flash 成本低)
这样搭配下来,能效比纯 SRAM 方案提升了 5 倍,面积节省了 60%。
一个小技巧:如果你用 RRAM 做权重存储,记得在芯片上电后先做一次“forming”操作。这是 RRAM 的初始化过程,能保证所有单元的阻值一致性。我吃过这个亏,第一次流片没加 forming 电路,结果芯片一致性差得一塌糊涂。
好了,今天的内容就到这里。三种器件的脾气都摸清楚了,下一讲咱们就可以开始搭架构了。
想要更多资料,联系可可