存储器件基础:SRAM、DRAM、Flash、RRAM、MRAM、PRAM原理与特性对比
做存算一体芯片,说白了就是在跟存储器打交道。你选什么存储器件,直接决定了你的架构能做什么、不能做什么。我这些年折腾过不少项目,从最早的SRAM宏单元到后来的RRAM阵列,踩过的坑真不少。今天咱们就把这些主流存储器件掰开揉碎了聊一聊。
SRAM:静态随机存取存储器
SRAM是我用得最多的器件,没有之一。它的基本单元是6个晶体管(6T结构),两个交叉耦合的反相器构成锁存器,再加上两个访问管。
核心特点:速度快,功耗低,但面积大。一个bit要6个管子,密度上不去。
我在做一款AI加速器时,用SRAM做片上缓存。当时觉得它读写快、不需要刷新,省心。结果呢?芯片面积被缓存吃掉了一大半。嗯,这就是代价。
- 读操作:字线(WL)拉高,位线(BL/BLB)预充电,通过差分电压读出数据
- 写操作:字线拉高,位线强制写入目标电平
- 保持:只要不掉电,数据一直存在
避坑指南:我曾经在低电压设计中吃过亏。SRAM在0.8V以下,静态噪声容限急剧下降,读写容易出错。如果你要做近阈值计算,务必用定制SRAM单元,别直接用库里的标准单元。
DRAM:动态随机存取存储器
DRAM的原理很简单——一个晶体管加一个电容。电容存电荷,有电荷代表1,没电荷代表0。但电容会漏电,所以需要定期刷新。
你想想看,一个bit只要一个管子加一个电容,密度比SRAM高多了。所以DRAM才能做到GB级别。但代价是什么?速度慢,而且需要刷新控制器。
| 参数 | SRAM | DRAM |
|---|---|---|
| 单元面积 | ~100F² | ~6F² |
| 读速度 | ~1ns | ~10ns |
| 写速度 | ~1ns | ~10ns |
| 刷新需求 | 无 | 64ms |
| 功耗 | 静态功耗高 | 刷新功耗高 |
我做过一个项目,想用DRAM做存内计算。结果发现,DRAM的刷新操作会打断计算,而且读出来的是模拟信号,需要ADC转换。折腾了半年,最后还是换成了SRAM。不是说DRAM不好,而是它不适合所有场景。
Flash:闪存
Flash是非易失性存储的王者。NOR Flash和NAND Flash,两种架构,各有千秋。
NOR Flash:随机读取快,适合存代码。但写入慢,擦除需要整块操作。
NAND Flash:密度高,成本低,适合存数据。但读取需要按页操作,随机访问慢。
注意:Flash的擦写寿命有限,一般SLC是10万次,MLC只有1万次左右。我在做存算一体芯片时,用Flash做权重存储,结果训练几次后单元就坏了。后来改用RRAM才解决问题。
Flash的编程原理是Fowler-Nordheim隧穿或热电子注入。说白了,就是让电子穿过氧化层,存到浮栅里。擦除时再把电子拉出来。这个过程对氧化层有损伤,所以寿命有限。
RRAM:阻变随机存取存储器
RRAM是我现在最看好的存算一体器件。它的原理是在金属氧化物中形成或断裂导电细丝,改变电阻值。
我参与过一个RRAM宏单元的设计项目。当时最头疼的是器件一致性——同一个晶圆上,不同单元的set电压能差20%。后来通过优化工艺和加外围补偿电路,才把良率提上去。
- Set操作:施加正电压,形成导电细丝,电阻从高变低
- Reset操作:施加负电压,断裂导电细丝,电阻从低变高
- Read操作:施加小电压,读取电流大小
RRAM的优势:速度快(~ns级),功耗低,CMOS兼容性好,可三维集成。特别适合做存算一体中的权重存储。
MRAM:磁随机存取存储器
MRAM利用磁性隧道结(MTJ)的隧穿磁阻效应存储数据。两个磁性层的磁化方向平行时电阻低,反平行时电阻高。
MRAM的速度和SRAM差不多,但它是非易失的。我见过一个设计,用MRAM替代SRAM做缓存,待机功耗直接降了90%。但MRAM的写入电流大,写功耗高,这是个硬伤。
STT-MRAM(自旋转移矩MRAM)是目前的主流。它用自旋极化电流翻转磁化方向,比传统MRAM的写功耗低不少。但说实话,MRAM的存储窗口还是偏小,读干扰问题需要小心处理。
PRAM:相变随机存取存储器
PRAM利用硫系化合物在晶态和非晶态之间的电阻差异存储数据。晶态电阻低,非晶态电阻高。
PRAM的优点是 scalability 好,可以做到很高的密度。但它的写入需要加热,功耗大,速度也慢。我在评估PRAM做存算一体时发现,它的多级存储能力不错,一个单元可以存2-3个bit。但温度稳定性是个问题——环境温度高了,非晶态容易自发结晶,数据就丢了。
特性对比总结
好了,咱们把这几类器件放在一起看看。我整理了一个对比表,方便你快速参考。
| 特性 | SRAM | DRAM | Flash | RRAM | MRAM | PRAM |
|---|---|---|---|---|---|---|
| 非易失 | 否 | 否 | 是 | 是 | 是 | 是 |
| 读速度 | ~1ns | ~10ns | ~50ns | ~10ns | ~2ns | ~50ns |
| 写速度 | ~1ns | ~10ns | ~1ms | ~10ns | ~5ns | ~100ns |
| 写功耗 | 低 | 中 | 高 | 低 | 中 | 高 |
| 耐久性 | 无限 | 无限 | 10⁴-10⁶ | 10⁶-10¹² | 10¹⁵ | 10⁸-10¹² |
| 密度 | 低 | 高 | 很高 | 高 | 中 | 高 |
| CMOS兼容 | 完美 | 好 | 好 | 好 | 中 | 中 |
做存算一体架构时,我的建议是:
- 计算密集、要求低延迟:用SRAM做片上缓存
- 大容量、非易失、可重构:用RRAM或MRAM
- 成本敏感、容量优先:考虑Flash或PRAM
- 不要迷信单一器件:混合使用往往效果更好
我的经验:选存储器件时,别只看datasheet上的参数。一定要做硅验证,跑实际的工作负载。我见过太多项目,仿真时数据漂亮,流片回来一跑就翻车。特别是RRAM和MRAM,工艺波动大,一定要留足设计余量。
这张图把六种存储器件的关系和特性都串起来了。你可以看到,易失性存储(SRAM、DRAM)和非易失性存储(Flash、RRAM、MRAM、PRAM)是两大阵营。在存算一体架构中,我们往往需要混合使用——用SRAM做快速缓存,用RRAM或MRAM做权重存储。
好了,这一章的内容就到这儿。记住,选存储器件没有银弹,关键看你的应用场景和设计约束。下一章我们会深入RRAM的器件物理和建模,那是做存算一体芯片的核心基础。