本节摘要:存储器的一切分类与取舍,根子都写在存储单元的物理机理里——一个六管触发器与一个单管电容的差异,决定了 SRAM 与 DRAM 分别霸占金字塔的哪一层。
本章主线的第一站。要看懂"为什么要分层",得先承认一个物理事实:不存在又快又大又便宜的存储材料。本节从存储单元的机理出发,把常用器件按"快慢、大小、断电记不记得"三个维度排开,金字塔的形状就自己浮现了。
SRAM 用六管触发器存一位:电流在两个反相器构成的环路里循环自锁,只要不断电,状态永远稳定,读取不破坏数据,速度能与处理器核心并驾齐驱。代价是六只管子才存一位,占面积、费硅片,密度上不去、价格下不来。
DRAM 的思路是釜底抽薪:一只晶体管加一只电容存一位,电容有电荷为 1、无电荷为 0。管子少了,密度翻了数量级,价格降了数量级——但电容会漏电,电荷几十毫秒内流失,必须周期性地读出、放大、写回,这个动作叫刷新。刷新占走了带宽,读写也慢于 SRAM 一大截。快与大的矛盾在这里是分子级的,没有任何工艺进步能同时讨好两边。
只读家族的脉络同样由机理驱动。掩膜 ROM 出厂即定型;PROM 允许烧一次;EPROM 用紫外线擦除,芯片顶上那扇石英窗是整整一代工程师的共同记忆;EEPROM 按字节电擦除;Flash 在 EEPROM 基础上按块擦除,密度与成本大幅改善,于是从固件一路扩张到 U 盘与固态硬盘。 NOR Flash 可按字节随机读、适合直接跑代码,NAND Flash 顺序吞吐高、适合存文件——今天"代码存 NOR、数据存 NAND"的分工仍是嵌入式板卡设计的默认。

选存储器时商家给一堆参数,真正需要盯住的是四项。访问时间:从地址稳定到数据可用的间隔,与 2.2 节的采样窗口直接对话——上一章插等待状态的账,就是拿它算的。存取周期:连续两次访问的最小间隔,通常略大于访问时间,决定持续吞吐。刷新周期:DRAM 每行必须在规定时间内刷一遍,刷新机制占用总线的时间要在带宽预算里扣掉。数据保持:断电后数据能不能活下来,这条把器件一分为二——易失的 SRAM、DRAM 管运行时数据,非易失的 ROM 家族管固件与文件。
| 器件 | 典型访问时间 | 易失性 | 密度 | 在系统里的岗位 |
|---|---|---|---|---|
| SRAM | 一至几十纳秒 | 易失 | 低 | Cache、快速缓冲 |
| DRAM | 数十纳秒 | 易失 | 高 | 主存 |
| NOR Flash | 数十至百纳秒读 | 非易失 | 中 | 固件、可直接执行 |
| NAND Flash | 微秒级页操作 | 非易失 | 很高 | 数据存储、固态盘 |
背景:一块多路采集卡要在中断间隙里暂存高速采样流,主存带宽分不出来给它,设计者考虑加一片缓存。操作:候选是两套方案——SRAM 直挂总线,或用 DRAM 加自刷新控制。先算需求:采样流稳定写入,无突发放大,容量需求在百千字节级;再算代价:SRAM 容量达标后价格翻倍,但控制逻辑零额外开销;DRAM 芯片便宜,却要配刷新控制器,且刷新窗口可能与采集写入冲突,需要写缓冲兜底。结果:项目最终选 SRAM,理由是采集卡的生命线是"绝不能漏采",控制路径越短越可靠。解读:容量小、访问模式可预期的场合,SRAM 的贵换来的是确定性;DRAM 的经济性要在容量上到兆级、访问由操作系统统一调度时才兑现。变式:若采样流改为突发成帧后批量上传,NAND Flash 加队列也能胜任——选择随访问模式而变,不随潮流而变。
选好器件只是第一步,把它拼成系统需要两道算术。位扩展:手头芯片每片只有四位宽,系统要八位——两片并联,地址与片选共用,数据线各接一半。字扩展:单片容量不够——多片级联,数据线并联,高位地址经译码器产生片选,谁被选中谁发言。实际工程常常两法并用:先用位扩展凑够字长,再用字扩展凑够容量。设计记录里必须写清地址线的切分表——它与 6.1 节的端口译码是同一门手艺。
一道保险叫纠错。存储器是电子世界里的"易耗品":宇宙射线、电源毛刺都可能翻转一位。普通场合丢一位无伤大雅,服务器与工控场合就是事故,于是给每份数据附加校验位:简单方案能查出错误,汉明码方案能查出并纠正一位错误,服务器内存标配的 ECC 正是这一路。纠错的代价是存储与带宽的额外开销——又是一次"可靠性换资源"的权衡,与本册反复出现的取舍逻辑同款。
刷新的税也能量化。典型 DRAM 每六十四毫秒要把全部行刷一遍,按八千行计,平均每八纳秒就要安排一次刷新操作;每次刷新占住总线几十纳秒,粗算下来带宽的百分之二到五要交给刷新。日常应用无感,但带宽预算本就紧张的采集与显示系统里,这笔税要提前入账——存储器的标称带宽与到手带宽之间,刷新是常驻的扣款项之一,与 1.3 节讲的"峰值对有效"呼应成对。
问:为什么现在主存不用 SRAM? 密度的账算不过来:同容量下 SRAM 的硅面积是 DRAM 的好几倍,价格随面积走。金字塔的分层就是让 SRAM 只在 Cache 里干它擅长的快活,容量的大活交给 DRAM——各安其位。
问:Flash 磨损是怎么回事? 浮栅晶体管每次擦写都会轻微老化,擦写次数有上限。固态盘与嵌入式文件系统的磨损均衡算法,本质是把写入均匀摊到所有单元上,让整块介质同生共死。做嵌入式存储设计时,写入频率与寿命预算要提前算——这是 7.2 节之外另一处"模拟前端式"的隐性工程。
金字塔画好了,但 CPU 与主存之间近两个数量级的落差靠什么填平?下一站进入 Cache 的机关内部。