SRAM基础:存储单元结构、读写时序、功耗特性
SRAM(Static Random-Access Memory,静态随机存取存储器)是Cache系统中最重要的物理载体。与DRAM需要周期性刷新不同,SRAM利用双稳态触发器结构实现数据保持,只要供电不中断,数据就不会丢失。理解SRAM的存储单元结构、读写时序和功耗特性,是进行Cache容量规划、延迟优化和功耗预算的前提。本节将从晶体管级原理出发,逐步建立SRAM的工程认知框架。
上图展示了SRAM的核心架构:左侧为6T存储单元的晶体管级结构,中间为读写时序的关键参数,右侧为功耗构成,底部则呈现了Cache阵列的组织方式。下面我们将逐一深入解析。
2.1 6T存储单元结构:双稳态的核心
SRAM存储单元最经典的结构是6T(6晶体管)单元,它由两个交叉耦合的反相器(4个晶体管)和两个访问管(2个晶体管)组成。交叉耦合反相器形成正反馈回路,使得节点Q和QB始终处于互补状态——当Q为高电平时,QB为低电平,反之亦然。这种双稳态特性是SRAM无需刷新即可保持数据的根本原因。
- 保持状态:字线WL为低电平,访问管M5、M6关断,存储节点与位线隔离。交叉耦合反相器通过VDD和GND持续供电,维持Q和QB的互补电平。
- 读操作:预充电电路将BL和BLB预充至VDD,然后WL拉高,M5、M6导通。假设Q存储"1"(高电平),则BL通过M5-MN1路径放电,BLB保持高电平,形成BL/BLB的差分电压。灵敏放大器检测到约50-100mV的电压差后,放大为满摆幅逻辑电平。
- 写操作:写驱动电路将BL和BLB强制驱动为目标值(如写"0"时BL=0,BLB=1),WL拉高后,访问管导通,强驱动能力迫使存储节点翻转。
6T单元的设计需要权衡多个因素:访问管的宽长比(W/L)决定了读写速度与稳定性;反相器的驱动强度影响数据保持能力;单元面积则直接决定了Cache的密度。在实际工艺中,6T单元的面积约为140-200F²(F为特征尺寸),是芯片中最基本的重复单元。
2.2 读写时序:从地址到数据的完整路径
SRAM的读写时序决定了Cache的访问延迟,是处理器性能的关键约束。一次完整的读操作包含以下阶段:
- 地址译码:地址信号经过行译码器和列译码器,选中目标字线和位线。行译码延迟约占总访问时间的30%-40%。
- 字线激活:WL从低电平跳变至高电平,访问管导通。字线脉冲宽度(tWP)需要足够长,确保位线产生足够的差分电压。
- 位线放电:存储单元通过访问管对位线放电,BL/BLB之间产生差分信号。位线电容越大,放电时间越长。
- 灵敏放大:当差分电压达到灵敏放大器的失调电压(通常50-100mV)时,放大器被使能,快速将差分信号放大为CMOS电平。
- 数据输出:放大后的数据通过输出驱动级送到数据总线。
| 时序参数 | 符号 | 典型值(28nm工艺) | 说明 |
|---|---|---|---|
| 地址访问时间 | tAA | 0.8-1.2ns | 从地址稳定到数据有效的延迟 |
| 字线脉冲宽度 | tWP | 0.3-0.5ns | WL保持高电平的时间,需保证位线差分建立 |
| 建立时间 | tSU | 0.1-0.2ns | 数据在时钟沿前需稳定的时间 |
| 保持时间 | tH | 0.05-0.1ns | 时钟沿后数据需保持的时间 |
| 写恢复时间 | tWR | 0.2-0.3ns | 写操作完成后字线释放的时间 |
2.3 功耗特性:动态与静态的博弈
SRAM的功耗分为动态功耗和静态功耗两大类。动态功耗发生在读写操作时,主要包括位线充放电功耗、字线驱动功耗和灵敏放大器功耗;静态功耗则是数据保持时的漏电功耗,包括亚阈值漏电和栅极漏电。
动态功耗的计算公式为:P_dynamic = α × C × VDD² × f,其中α为翻转因子(读写操作时位线翻转的概率),C为位线电容,VDD为供电电压,f为工作频率。位线电容是动态功耗的主要来源——一条位线上通常挂载64-128个存储单元,其寄生电容可达100-200fF。
静态功耗在先进工艺下日益突出。28nm工艺下,6T单元的保持漏电约为10-50pA/bit;而7nm工艺下,漏电可能增加到100-200pA/bit。一个2MB的L3 Cache,仅漏电功耗就可能达到0.5-1W。降低静态功耗的常用技术包括:
- 电源门控(Power Gating):当Cache块空闲时,切断其供电,可降低漏电90%以上。
- 体偏置(Body Biasing):通过反向体偏置增加阈值电压,降低亚阈值漏电。
- 多阈值工艺:在非关键路径使用高阈值晶体管,降低漏电。
2.4 案例拆解:L1 Cache SRAM阵列的功耗优化
某移动处理器设计团队需要优化32KB L1数据Cache的功耗。该Cache采用8路组相联结构,每路4KB,行大小64B。初始设计在28nm工艺下,工作电压0.9V,频率2GHz,实测动态功耗为85mW,静态功耗为12mW。
分析过程:通过功耗仿真工具(如PrimeTime PX)分析发现,动态功耗中位线充放电占55%,字线驱动占20%,灵敏放大器占15%,其他占10%。进一步分析发现,读操作时位线预充电至满摆幅VDD,但实际只需要50mV差分电压即可被灵敏放大器识别,存在明显的能量浪费。
优化措施:
- 位线预充电电压降低:将预充电电压从VDD降至0.8V(约0.72V),位线充放电功耗降低约36%。
- 分层位线架构:将128行存储单元分为4个32行的子阵列,每个子阵列有独立的局部位线,通过局部灵敏放大器连接至全局位线。局部位线电容从150fF降至40fF,动态功耗显著下降。
- 时钟门控:对未访问的Cache路实施时钟门控,减少无效翻转。
结果对比:优化后动态功耗降至52mW(降低39%),静态功耗降至10mW(降低17%),总功耗从97mW降至62mW。代价是芯片面积增加约8%(分层位线需要额外的灵敏放大器),访问延迟增加约50ps(局部-全局位线传输延迟)。
2.5 常见误区与设计复盘
在SRAM设计实践中,工程师常犯以下错误:
- 误区一:只关注单元面积而忽视布线资源。6T单元本身面积很小,但位线、字线的金属布线可能占据30%-40%的阵列面积。合理的布局规划(如将位线放在M2层、字线放在M3层)至关重要。
- 误区二:忽略读扰动(Read Disturb)问题。读操作时,访问管导通会将存储节点与位线连接,如果位线电容过大或访问管驱动过强,可能翻转存储节点内容。设计时需保证SNM(静态噪声容限)大于100mV。
- 误区三:时序分析只关注典型条件。SRAM的时序受工艺、电压、温度(PVT)影响显著。SS工艺角、0.81V电压、125°C条件下,tAA可能比典型条件恶化30%以上。必须进行全PVT覆盖的时序收敛。
- 误区四:功耗评估忽略漏电的温度效应。漏电功耗随温度呈指数增长,85°C时的漏电可能是25°C时的3-5倍。移动设备在游戏等高负载场景下,芯片温度可达90°C以上,漏电功耗可能成为主要功耗来源。
- 在项目初期就建立SRAM编译器的评估流程,使用foundry提供的memory compiler生成不同容量、不同端口的SRAM宏单元,获取面积、时序、功耗数据。
- 对于定制SRAM设计,务必进行完整的可靠性验证,包括电迁移(EM)、自热效应(Self-Heating)和ESD保护检查。
- 在Cache架构层面,考虑使用多bank结构降低单次访问的位线数量,从而降低动态功耗。
- 建立功耗-性能-面积的权衡模型,在项目早期确定最优的SRAM配置参数。