2. SRAM与DRAM:AI芯片的“记忆双雄”
大家好,我是你们的老朋友。今天我们来聊聊AI芯片里最基础、也最关键的两个存储单元——SRAM和DRAM。说实话,我做了十几年芯片,跟这哥俩打交道的时间比跟家人还多。你想想看,没有它们,再强的算力也白搭。
很多刚入行的朋友容易混淆这两者。我刚开始做AI加速器时,也踩过坑。有一次项目赶进度,我拍脑袋选了某款DRAM做片上缓存,结果带宽死活上不去,最后只能推倒重来。嗯,从那以后,我再也不敢小看存储架构的选择了。
2.1 SRAM工作原理:快如闪电的“寄存器”
SRAM,全称静态随机存取存储器。说白了,它就是用晶体管搭出来的一个“锁存器”。只要不断电,数据就能一直保持,不需要刷新。
它的基本单元是6个晶体管(6T结构)。两个交叉耦合的反相器构成一个锁存器,再加两个传输门用于读写。我习惯把它想象成一个跷跷板——一边高,另一边就低,稳定得很。
核心要点:SRAM的“静态”二字,指的就是不需要周期性刷新。这是它和DRAM最大的区别。
读写过程其实很简单:
- 读操作:先预充位线到高电平,然后打开字线。如果存储的是“1”,位线放电慢;如果是“0”,放电快。通过检测这个电压差,就能读出数据。
- 写操作:强制拉低或拉高位线,然后打开字线。只要驱动能力够强,就能把锁存器翻转过来。
我在项目中遇到过一个问题:SRAM的读操作其实是破坏性的。虽然不像DRAM那么严重,但读的时候位线会放电,如果读得太频繁,可能会影响稳定性。所以设计时一定要留足时序裕量。
2.2 DRAM工作原理:密度至上的“电容桶”
DRAM就完全不一样了。它用一个晶体管加一个电容(1T1C)来存储数据。电容里有没有电荷,代表“1”或“0”。
你想想看,电容会漏电啊!所以DRAM必须定期刷新,一般每64ms要刷新一遍。这就是“动态”二字的由来。
避坑指南:我曾经在一个边缘AI项目里,直接用DDR4做模型参数存储。结果发现刷新操作占用了大量带宽,导致推理延迟飙升。后来我改用SRAM做缓存,才把延迟降下来。记住:DRAM的刷新开销,在高实时性场景下是个大坑。
DRAM的读写流程:
- 读操作:打开字线,电容上的电荷会共享到位线上。通过灵敏放大器检测微小的电压变化(只有几百毫伏)。读完后,电容里的电荷会被破坏,所以必须立即写回去。
- 写操作:强制位线到目标电平,打开字线,给电容充电或放电。
这里有个关键点:DRAM的读操作是破坏性的。每次读完,数据就没了,必须马上恢复。这也是为什么DRAM的访问延迟比SRAM高很多。
2.3 两者对比:各有千秋
我整理了一张对比表,方便大家直观理解:
| 特性 | SRAM | DRAM |
|---|---|---|
| 存储单元 | 6个晶体管 | 1个晶体管+1个电容 |
| 速度 | 极快(1-3ns) | 较慢(10-50ns) |
| 密度 | 低(6T/bit) | 高(1T1C/bit) |
| 功耗 | 静态功耗高 | 刷新功耗高 |
| 是否需要刷新 | 否 | 是(64ms周期) |
| 读操作 | 非破坏性 | 破坏性(需恢复) |
| 成本 | 高 | 低 |
从这张表能看出来,SRAM和DRAM其实是互补的。SRAM快但贵,适合做片上缓存;DRAM便宜但慢,适合做主存。
2.4 在AI芯片中的应用
AI芯片对存储的要求很特殊。我参与过几款AI加速器的设计,总结下来有几点:
- 权重存储:模型参数通常很大(几百MB到几GB),用DRAM更划算。但为了减少带宽压力,我会在片上放一块SRAM做权重缓存。
- 激活值存储:中间计算结果,数据量中等,但访问频率极高。我建议用SRAM,因为延迟敏感。
- 查找表(LUT):比如量化用的缩放因子,数据量小但需要快速访问。SRAM是首选。
个人经验:我习惯在AI芯片里设计一个三级存储架构:L1 SRAM(几KB,单周期访问)、L2 SRAM(几百KB,几个周期)、L3 DRAM(几GB,几十个周期)。这样既能保证性能,又能控制成本。
举个例子,我做过一个边缘AI芯片,目标功耗只有1W。我用了256KB的SRAM做片上缓存,外加64MB的LPDDR4。推理时,权重先加载到SRAM,然后逐层计算。这样DRAM的访问次数减少了80%,功耗也降下来了。
2.5 知识体系图
下面这张图展示了SRAM和DRAM在AI芯片中的核心逻辑关系:
从这张图能看出来,SRAM和DRAM在AI芯片里是分工合作的。SRAM负责快、小、贵的场景,DRAM负责大、慢、便宜的场景。两者缺一不可。
好了,这一章的内容就到这里。记住:选SRAM还是DRAM,没有绝对的好坏,关键看你的应用场景。下一章我们会深入缓存一致性,到时候再聊。
想要更多资料,联系可可