第二讲:核心器件基础——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 混合器件存算一体架构

你看,决策逻辑其实很简单:

  • 权重频繁更新(比如在线学习)→ 选 SRAM,速度快、耐久度高
  • 权重固定(比如离线训练好的模型)→ 选 RRAM 或 Flash,密度高、非易失
  • 对延迟极度敏感(比如 L1 缓存)→ 选 SRAM
  • 对面积成本敏感(比如大模型)→ 选 RRAM 或 Flash

我个人习惯,在做一个存算一体芯片时,会先画一张这样的决策树。然后根据应用场景,把不同器件分配到不同模块。

举个例子。我最近在做的一个视觉推理芯片:

  • 第一层卷积的权重 → RRAM(因为权重固定,而且需要高密度)
  • 中间激活值 → SRAM(因为每帧都在变,读写频繁)
  • 全连接层的权重 → Flash(因为全连接层参数多,Flash 成本低)

这样搭配下来,能效比纯 SRAM 方案提升了 5 倍,面积节省了 60%。

一个小技巧:如果你用 RRAM 做权重存储,记得在芯片上电后先做一次“forming”操作。这是 RRAM 的初始化过程,能保证所有单元的阻值一致性。我吃过这个亏,第一次流片没加 forming 电路,结果芯片一致性差得一塌糊涂。

好了,今天的内容就到这里。三种器件的脾气都摸清楚了,下一讲咱们就可以开始搭架构了。

想要更多资料,联系可可