片上存储器:SRAM、ROM、eFlash 与缓存,为什么片上内存又贵又小
更新时间:2026-09-05。本文是「集成电路大类 · 芯片设计」**入门层(beginner)**第二十二篇新正文。一颗芯片里有什么 里 SoC 有大片「存储器」,布局规划 里 SRAM 是要靠边摆的大块宏单元。这一篇专门讲芯片里的存储:为什么 CPU 里的缓存那么小却那么贵、SRAM 和 DRAM 和 Flash 有什么区别。
本文要回答的问题
- 寄存器、SRAM、DRAM、Flash 都是存储器,差在哪?
- 为什么片上缓存(cache)只有几十 KB~几 MB,而内存条能有几十 GB?
- SRAM 为什么占面积那么大?什么是 SRAM compiler?
- 掉电后数据还在不在,由什么决定?
一、存储器层级金字塔
计算机/芯片里的存储不是一种,而是按「越快越贵越稀少、越慢越便宜越海量」排成金字塔:
二、四种主要存储器对照
| 类型 | 单元 | 速度 | 密度/成本 | 掉电 | 典型用途 |
|---|---|---|---|---|---|
| 寄存器 | 触发器(好几个门/位) | 最快(同主频) | 最稀疏、最贵 | 丢失 | 运算暂存、状态 |
| SRAM | 6 管(6T)双稳态单元 | 很快(ns 级) | 低密度、较贵 | 丢失 | 片上缓存 cache、片上 RAM |
| DRAM | 1 管 1 电容(1T1C) | 中(需刷新) | 高密度、便宜 | 丢失(电容漏电要刷新) | 外挂 DDR 主存 |
| Flash/eFlash | 浮栅/电荷陷阱 | 慢(写尤其慢) | 高密度、便宜 | 不丢(非易失) | 存程序/固件(MCU eFlash)、外挂 eMMC/UFS |
| ROM/eFuse | 固定/一次性烧写 | 快/中 | 极小面积 | 不丢 | 启动代码、修调信息、密钥 |
三、为什么 SRAM 又贵又大:6 管单元
SRAM 存 1 比特要用 6 个晶体管(6T 单元):两个反相器交叉耦合形成「双稳态」锁住 0/1,再加两个访问管。相比之下,一个逻辑门也就几个管、但一个 SRAM bit 就要 6 管,且单元版图排得极密。结果是 SRAM 的每比特面积远大于逻辑、密度远低于 DRAM——所以片上缓存只能做 KB~MB 级,做得越大芯片越贵(见 一颗芯片里有什么 里「SRAM 占大片面积」)。
DRAM 则用 1 个管 + 1 个电容(1T1C) 存电荷表示 0/1,密度高得多、便宜得多,但电容会漏电,必须周期性「刷新」,且工艺特殊,通常不集成在逻辑芯片里、而是外挂成 DDR 内存条(见 SoC 里的存储控制器)。
四、SRAM 不是手写的:SRAM compiler
工程上 SRAM 不是用 Verilog 一个个触发器拼的(那样又大又慢),而是用 foundry/第三方提供的 SRAM compiler(存储器编译器):给定「深度 × 位宽」,自动生成一个优化过的 SRAM 宏单元(macro)——定制版图、带译码器和灵敏放大器,速度和密度都最优。它作为硬核宏在 布局规划 里靠边摆,也是 DFT 的 MBIST 重点自测对象。
五、为什么要有缓存层级
CPU 运算极快,但从外挂 DRAM 取数要几十上百个周期,远跟不上。于是在芯片内用 SRAM 做多级缓存(L1/L2/L3 cache):把最常用的数据/指令放在离核最近、最快的 SRAM 里,尽量少去慢的 DRAM 取。这是典型的「用贵但快的小存储,加速便宜但慢的大存储」。MCU 这类小芯片则把程序存在片上嵌入式 Flash(eFlash)、数据放片上 SRAM,上电即可运行、不需要外挂内存(见 SoC/ASIC/MCU 区别)。
六、这一篇在知识体系里的位置
- 想看 SRAM 宏单元在版图上怎么摆、为何靠边 → 布局规划是什么;
- 想知道 SRAM 怎么在量产里自测 → 可测性设计 DFT 入门(MBIST);
- 想看存储控制器怎么通过总线连 CPU → 片上总线 AMBA 入门、中断与 DMA;
- 想理解 MCU/SoC 存储配置差异 → SoC/ASIC/MCU 区别。
总结
一句话总结:片上存储按「越快越贵越稀少」排成金字塔——寄存器(触发器,最快最贵、仅存运算暂存)、SRAM(6 管双稳态单元,速度快但每比特面积大、掉电丢失,用来做片上缓存和片上 RAM)、DRAM(1 管 1 电容、密度高便宜但要刷新且工艺特殊,故外挂成 DDR)、Flash(慢但便宜海量且非易失,存程序固件,MCU 常用片上 eFlash);正因为 SRAM 一个 bit 就要 6 个管、密度远低于逻辑和 DRAM,片上缓存只能做到 KB~MB 级且很贵,工程上用 SRAM compiler 按「深度×位宽」生成优化过的硬核宏、在 floorplan 里靠边摆并由 MBIST 自测;而多级缓存(L1/L2/L3)的意义,就是用离核最近、最快的小片 SRAM 缓存常用数据,掩盖外挂 DRAM 几十上百周期的高延迟,是「用贵快小存储加速便宜慢大存储」的经典权衡。