存储芯片概述:从分类到接口演进
大家好,我是老张。做存储芯片接口设计十几年了,今天咱们聊聊存储芯片的底子。说实话,很多刚入行的工程师,甚至一些老手,对存储芯片的分类和层级结构都模模糊糊。我见过不少项目,因为选错了存储类型,导致整个系统性能瓶颈,最后不得不返工重做。所以,这一章咱们把基础打牢。
一、存储芯片分类:四大金刚
存储芯片的世界,说白了就是「速度」和「容量」的博弈。你想想看,没有一种存储能同时做到又快又大又便宜。所以,我们根据应用场景,把它们分成了四大类:DRAM、NAND、NOR 和 SRAM。
核心观点:选型时,先问自己三个问题——要快?要容量大?还是数据断电不能丢?答案决定了你用哪一类。
1. DRAM(动态随机存取存储器)
DRAM 是我们最熟悉的,电脑内存条就是它。它的特点是:速度快,但断电数据就没了。为什么叫「动态」?因为它需要不停地刷新(Refresh),否则电容里的电荷会漏掉,数据就丢了。
我个人习惯把 DRAM 比作「工作台」。你正在处理的数据,都放在工作台上,随手就能拿。但工作台空间有限,而且一断电,台面上的东西全没了。
- 典型应用: 内存条、显卡显存、手机运行内存
- 接口趋势: 从 DDR3 到 DDR5,再到 HBM(高带宽内存),速度越来越快,位宽越来越宽
- 避坑指南: 我曾经在一个项目中,因为没算好 DRAM 的刷新周期,导致系统在高温下频繁死机。嗯,这里要注意,DRAM 的刷新时序,一定要留够余量。
2. NAND Flash(与非闪存)
NAND 是存储界的「容量王」。你的 U 盘、固态硬盘(SSD)、手机存储,全是它。它的特点是:容量大、非易失(断电不丢数据),但速度比 DRAM 慢,而且有写入寿命限制。
NAND 的存储单元是串联的,就像一串葡萄。读取时,需要整串整串地读。所以它不适合随机读写,更适合顺序读写。
- 典型应用: SSD、U 盘、eMMC、UFS
- 接口趋势: 从 SLC 到 MLC、TLC、QLC,甚至 PLC,每个单元存的 bit 数越来越多,但寿命和速度在下降。接口从 ONFI 到 Toggle,速度从 50MT/s 到现在的 1600MT/s 以上
- 避坑指南: 我遇到过有人把 NAND 当 NOR 用,直接执行代码,结果系统跑飞了。记住,NAND 不能直接运行代码,它需要先读到 RAM 里再执行。
3. NOR Flash(或非闪存)
NOR 是「小而快」的代表。它的特点是:读取速度快,支持随机访问,可以直接在上面执行代码(XIP,eXecute In Place)。但容量做不大,成本也高。
NOR 的存储单元是并联的,所以可以像内存一样按地址访问。很多嵌入式系统的启动代码,就放在 NOR Flash 里。
- 典型应用: BIOS/UEFI、嵌入式系统启动代码、物联网设备
- 接口趋势: 从 SPI 到 Quad SPI,再到 Octal SPI,速度越来越快。现在还有 HyperFlash 和 Xccela 这类高性能 NOR
- 避坑指南: 我曾经调试过一个板子,NOR 读数据总是出错。查了半天,发现是 SPI 总线的走线太长,信号反射导致的。所以,高速 SPI 接口,走线长度一定要控制好。
4. SRAM(静态随机存取存储器)
SRAM 是速度之王。它不需要刷新,数据只要供电就能保持。但它的缺点是:容量小、成本极高、占面积大。一个 SRAM 单元需要 6 个晶体管,而 DRAM 只需要 1 个晶体管加 1 个电容。
SRAM 通常用在 CPU 的缓存(Cache)里,或者一些对速度要求极高的场景。
- 典型应用: CPU 的 L1/L2/L3 Cache、FPGA 内部 Block RAM、网络设备缓冲区
- 接口趋势: 异步 SRAM 逐渐被同步 SRAM(如 QDR、RLDRAM)取代,速度更快,但接口也更复杂
- 避坑指南: 嗯,这里要注意,SRAM 虽然快,但功耗不小。我在一个低功耗项目中,就因为用了大容量 SRAM,导致待机电流超标。后来换成了伪静态 RAM(PSRAM),才解决了问题。
二、存储层级结构:金字塔模型
为什么系统里要有这么多存储?说白了,就是为了平衡「速度」和「成本」。你想想看,如果全部用 SRAM,速度快是快了,但 1GB 的 SRAM 价格能买一套房,谁用得起?
所以,现代计算机系统采用了一个金字塔形的存储层级结构:
| 层级 | 存储类型 | 速度 | 容量 | 成本 |
|---|---|---|---|---|
| 第 1 层(最顶层) | 寄存器(Register) | 最快(~0.3ns) | 最小(几十字节) | 最高 |
| 第 2 层 | SRAM(Cache) | 很快(~1ns) | 较小(几 MB) | 很高 |
| 第 3 层 | DRAM(主存) | 快(~10ns) | 中等(几 GB) | 中等 |
| 第 4 层 | NAND Flash(SSD) | 较慢(~100μs) | 大(几 TB) | 较低 |
| 第 5 层(最底层) | 机械硬盘(HDD) | 最慢(~10ms) | 最大(几十 TB) | 最低 |
这个金字塔的规律是:越往上,速度越快,容量越小,成本越高。越往下,速度越慢,容量越大,成本越低。
为什么会这样?因为程序访问数据有「局部性原理」——你正在用的数据,大概率接下来还会用(时间局部性),而且它旁边的数据,你也可能用到(空间局部性)。所以,把最常用的数据放在最快的存储里,不常用的放在慢的存储里,这样整体性能最优。
个人经验: 我在做 SoC 设计时,经常要调整 Cache 的大小。Cache 太小,命中率低,CPU 老要去访问 DRAM,性能上不去。Cache 太大,成本高,而且命中率提升有限。一般来说,2MB 的 L2 Cache 是个不错的平衡点。
三、接口技术演进趋势:从并行到串行,从低速到高速
存储芯片的接口,这些年变化太大了。我刚开始做这行时,还是并行接口的天下。现在呢?串行接口成了主流。为什么?
说白了,并行接口有两大痛点:一是信号同步难,那么多根线,要保证同时到达,频率一高就出问题。二是引脚太多,芯片封装成本高,PCB 布线也麻烦。
串行接口就不一样了。它用差分信号,抗干扰能力强,频率可以做得非常高。而且引脚少,封装小,布线也简单。
下面我列几个典型的接口演进:
- DRAM 接口: 从 SDRAM(单倍数据率)到 DDR(双倍数据率),再到 DDR2、DDR3、DDR4、DDR5。每一代,频率翻倍,电压降低。现在还有 HBM(高带宽内存),用 TSV(硅通孔)技术把 DRAM 堆叠起来,带宽高得吓人。
- NAND 接口: 从传统的并行 NAND(8 位或 16 位),到现在的串行 NAND(SPI NAND)。但高性能 SSD 还是用并行接口,比如 ONFI 和 Toggle,速度从 50MT/s 一路飙到 1600MT/s 以上。
- NOR 接口: 从并行 NOR 到 SPI NOR,再到 Quad SPI、Octal SPI。现在还有 HyperBus 和 Xccela,速度能到 400MB/s 以上。
- 通用接口: 比如 eMMC、UFS、NVMe。这些接口把存储控制器和存储芯片封装在一起,对外提供标准接口,大大简化了系统设计。
注意: 接口速度越来越快,对信号完整性的要求也越来越高。我曾经调试一个 DDR4 的板子,因为走线等长没做好,导致数据眼图闭合,系统跑不起来。所以,高速接口设计,一定要做仿真,不要凭经验瞎猜。
嗯,这一章的内容就到这里。存储芯片的分类、层级结构和接口演进,是后面所有章节的基础。你把这些搞清楚了,后面学 DDR 接口、NAND 接口、NOR 接口时,就会轻松很多。
下一章,咱们聊聊 DDR 接口的详细设计,包括时序、电气特性、PCB 布局等。到时候我会分享一些我在实际项目中的踩坑经历,保证让你少走弯路。