1. SRAM概述:从基本原理到SoC中的关键角色
大家好,我是老李。做芯片设计这么多年,SRAM可以说是打交道最多的模块之一。今天咱们就来聊聊SRAM的那些事儿。
说实话,SRAM这东西看着简单,但真要把它吃透,还真得下点功夫。我记得刚入行那会儿,总觉得SRAM就是个存储数据的黑盒子,直到有一次项目里SRAM漏电导致芯片功耗超标,才逼着我好好研究了一番它的内部结构。
1.1 SRAM的基本原理
SRAM,全称是Static Random Access Memory,静态随机存取存储器。说白了,就是一种只要不断电,数据就能一直保持的存储器。
为什么叫"静态"?因为它不需要像DRAM那样定期刷新。你想想看,这在实际使用中省了多少事。
SRAM的核心工作原理其实很简单:
- 存储单元:每个bit由一个锁存器(latch)来保存
- 读写操作:通过字线(Word Line)和位线(Bit Line)进行访问
- 保持状态:只要供电,数据就不会丢失
核心要点:SRAM的"静态"特性来源于其双稳态电路结构。两个反相器交叉耦合,形成正反馈,能稳定地保持"0"或"1"状态。
1.2 6T单元结构详解
6T SRAM单元,就是由6个晶体管组成的存储单元。这是目前最主流的SRAM单元结构。
我给大家画个结构图,这样更直观:
这个6T结构,我拆开来讲:
- M1、M3:两个NMOS下拉管,构成反相器的下拉网络
- M2、M4:两个PMOS上拉管,构成反相器的上拉网络
- M5、M6:两个NMOS传输管,负责读写时的通路控制
M1-M4组成两个交叉耦合的反相器,这就是存储的核心。M5和M6是访问管,由字线WL控制。
经验之谈:我在做28nm工艺的SRAM编译器时,发现6T单元的尺寸比例非常关键。M1/M3的驱动能力要强于M5/M6,否则读操作时可能会破坏存储数据。这个叫"读干扰"问题,后面我们会详细讲。
1.3 SRAM在SoC中的角色
现在的SoC芯片,说白了就是一堆IP核的集合。SRAM在其中扮演什么角色?我给你列几个关键场景:
| 应用场景 | 典型容量 | 性能要求 |
|---|---|---|
| CPU缓存(L1/L2) | 32KB - 2MB | 超高速,1-3周期访问 |
| GPU帧缓冲 | 1MB - 16MB | 高带宽,多端口 |
| 网络处理器包缓存 | 512KB - 8MB | 低延迟,高吞吐 |
| AI加速器权重存储 | 1MB - 32MB | 高密度,低功耗 |
我做过一个AI芯片的项目,里面光SRAM就占了芯片面积的60%以上。你想想看,这玩意儿有多重要。
SRAM在SoC里主要干这几件事:
- 缓存数据:CPU和GPU的L1/L2/L3缓存,几乎全是SRAM
- 临时存储:FIFO、寄存器文件、查找表
- 配置存储:芯片配置寄存器、状态机状态存储
- 数据缓冲:不同时钟域之间的数据同步
注意:SRAM的面积和功耗在先进工艺下越来越成为瓶颈。我曾经遇到一个7nm的项目,SRAM的漏电功耗占了芯片总功耗的40%。这可不是个小数目。
1.4 SRAM与DRAM的区别
很多新手会问:SRAM和DRAM到底有啥区别?我直接给你对比一下:
| 对比项 | SRAM | DRAM |
|---|---|---|
| 存储单元 | 6个晶体管(6T) | 1个晶体管+1个电容(1T1C) |
| 速度 | 极快(1-5ns) | 较慢(10-50ns) |
| 密度 | 低(6倍晶体管) | 高(1倍晶体管) |
| 功耗 | 静态功耗较高 | 需要刷新,动态功耗高 |
| 刷新 | 不需要 | 需要(64ms刷新一次) |
| 成本 | 高 | 低 |
| 典型应用 | CPU缓存、寄存器 | 主存、内存条 |
为什么会这样?我解释一下:
速度差异:SRAM用锁存器存数据,信号翻转快。DRAM靠电容存电荷,充放电需要时间。我在项目中测过,同样工艺下SRAM比DRAM快3-5倍。
密度差异:6T vs 1T1C,这个差距很明显。DRAM的密度能做到SRAM的4-8倍。所以主存用DRAM,缓存用SRAM。
功耗差异:SRAM静态功耗大,因为6个管子一直在耗电。DRAM虽然静态功耗小,但需要定期刷新,这个刷新操作也耗电。
我的建议:选型时记住一个原则——速度优先选SRAM,容量优先选DRAM。如果既要速度又要容量,那就用SRAM做缓存,DRAM做主存,搞个层次化存储架构。
嗯,SRAM的基本概念就讲到这里。这些是后面深入学习SRAM编译器设计的基础,大家一定要理解透。下一节我们会讲SRAM的读写操作时序,到时候我会结合波形图来演示。
公众号:蓝海资料掘金营,微信deep3321