概述
NAND Flash 是一种非易失性随机访问存储介质,基于浮栅(Floating Gate)晶体管技术。它是当今最广泛使用的闪存存储技术,广泛应用于 SSD、U盘、存储卡、嵌入式存储(eMMC/UFS)等领域。
基础原理
存储单元结构
NAND Flash 的基本存储单元是浮栅晶体管:
| 组成部分 |
功能说明 |
| 控制栅极(Control Gate) |
施加编程/读取电压 |
| 浮栅(Floating Gate) |
存储电荷,实现数据保存 |
| 隧道氧化层(Tunnel Oxide) |
隔离浮栅与衬底,电荷通过量子隧穿效应穿过 |
| 源极(Source) |
晶体管源端 |
| 漏极(Drain) |
晶体管漏端 |
| 衬底(Substrate) |
P型硅衬底 |
数据存储原理
- 编程(Program):向浮栅注入电荷,提高阈值电压,表示逻辑”0”
- 擦除(Erase):从浮栅释放电荷,降低阈值电压,表示逻辑”1”
- 读取(Read):检测阈值电压来判断存储的数据值
注意:NAND Flash 中逻辑”1”表示未编程状态(擦除态),逻辑”0”表示已编程状态。
制造工艺
加工过程
1
| 沙子(SiO₂) → 提纯 → 单晶硅 → 晶圆(Wafer) → 光刻/蚀刻 → 晶粒(Die) → 封装 → 芯片
|
一片晶圆可以划分成多个芯片。在芯片未封装前,每一个小块(晶粒/Die)就是一个独立功能的芯片。封装后成为闪存颗粒芯片。
制程演进
| 制程节点 |
特征尺寸 |
代表产品 |
| 2D NAND |
15-19nm |
早期 SSD、存储卡 |
| 3D NAND (V-NAND) |
32-176层+ |
现代 SSD、eMMC 5.1 |
| QLC 3D NAND |
96-232层+ |
大容量消费级 SSD |
芯片组织结构
NAND Flash 芯片采用层次化的组织结构:
1 2 3 4 5 6 7
| 芯片(Chip/Device) └── 目标(Target/LUN) └── 管芯(Die) └── 平面(Plane) └── 块(Block) └── 页(Page) └── 字节(Byte)
|
各层级说明
| 层级 |
说明 |
典型规模 |
| 芯片(Device) |
物理封装单元 |
1-8 个 Die |
| 管芯(Die) |
独立操作单元,共享 I/O 总线 |
1-4 个 Plane |
| 平面(Plane) |
支持多平面并行操作 |
1024-8192 个 Block |
| 块(Block) |
最小擦除单位 |
64-256 个 Page |
| 页(Page) |
最小编程/读取单位 |
2KB-16KB + Spare Area |
| Spare Area |
存储 ECC、坏块标记等元数据 |
64-1280 Bytes |
操作特性
| 操作类型 |
最小单位 |
典型时间 |
说明 |
| 读取(Read) |
页(Page) |
25-100μs |
可随机读取任意页 |
| 编程(Program) |
页(Page) |
200-2000μs |
必须在擦除后的页上编程 |
| 擦除(Erase) |
块(Block) |
1.5-10ms |
整块擦除,所有位恢复为”1” |
重要约束:
- 编程前必须先擦除(不能直接覆盖写入)
- 擦除以块为单位,编程以页为单位
- 同一块内的页必须按顺序编程(不能随机写入)
存储类型
SLC/MLC/TLC/QLC
| 类型 |
每单元比特数 |
电压等级 |
寿命(P/E次数) |
速度 |
成本 |
| SLC |
1 bit |
2 |
60,000-100,000 |
最快 |
最高 |
| MLC |
2 bits |
4 |
3,000-10,000 |
快 |
较高 |
| TLC |
3 bits |
8 |
1,000-3,000 |
中等 |
较低 |
| QLC |
4 bits |
16 |
100-1,000 |
较慢 |
最低 |
- SLC(Single-Level Cell):每个单元存储 1 bit,可靠性和速度最高
- MLC(Multi-Level Cell):每个单元存储 2 bits,性价比较好
- TLC(Triple-Level Cell):每个单元存储 3 bits,消费级主流
- QLC(Quad-Level Cell):每个单元存储 4 bits,适合读密集型应用
接口协议
常见 NAND Flash 接口
| 接口类型 |
数据线 |
速度 |
应用场景 |
| 原始 NAND (Raw NAND) |
8/16-bit 并行 |
40-400 MT/s |
嵌入式系统直接访问 |
| eMMC |
1/4/8-bit |
最高 400MB/s (eMMC 5.1) |
手机、嵌入式设备 |
| UFS |
串行差分 |
最高 2.9GB/s (UFS 3.1) |
高端手机、移动设备 |
| ONFI |
8/16-bit 并行 |
最高 1.2GT/s |
SSD 控制器 |
| Toggle DDR |
8-bit 并行 |
最高 1.2GT/s |
SSD 控制器 |
原始 NAND 信号线
| 信号 |
方向 |
说明 |
| I/O[7:0] |
双向 |
数据/地址/命令复用总线 |
| CLE |
输入 |
命令锁存使能(Command Latch Enable) |
| ALE |
输入 |
地址锁存使能(Address Latch Enable) |
| CE# |
输入 |
芯片使能(Chip Enable,低有效) |
| RE# |
输入 |
读使能(Read Enable,低有效) |
| WE# |
输入 |
写使能(Write Enable,低有效) |
| WP# |
输入 |
写保护(Write Protect,低有效) |
| R/B# |
输出 |
就绪/忙(Ready/Busy,低有效表示忙) |
关键技术
坏块管理(Bad Block Management)
NAND Flash 天然存在坏块,需要进行管理:
| 坏块类型 |
说明 |
| 出厂坏块 |
制造过程中产生的固有坏块,在 Spare Area 中标记 |
| 使用坏块 |
使用过程中因 P/E 次数耗尽或数据保持失败产生的坏块 |
磨损均衡(Wear Leveling)
| 策略 |
说明 |
| 动态磨损均衡 |
将新数据写入擦写次数最少的空闲块 |
| 静态磨损均衡 |
将很少更新的”冷数据”迁移到擦写次数多的块 |
纠错编码(ECC)
| ECC 类型 |
纠错能力 |
适用场景 |
| Hamming |
1-bit |
SLC NAND |
| BCH |
4-72 bit |
MLC/TLC NAND |
| LDPC |
超强纠错 |
3D TLC/QLC NAND |
闪存转换层(FTL)
FTL(Flash Translation Layer)是 NAND Flash 管理的核心组件:
| 功能 |
说明 |
| 地址映射 |
逻辑地址到物理地址的转换 |
| 垃圾回收 |
回收无效页占用的块空间 |
| 磨损均衡 |
均匀分配各块的擦写次数 |
| 坏块管理 |
标记和替换坏块 |
| 写放大控制 |
减少实际写入与逻辑写入的比值 |
常用操作命令
| 命令 |
代码 |
说明 |
| Read 1st Cycle |
0x00 |
读操作第一个周期 |
| Read 2nd Cycle |
0x30 |
读操作第二个周期 |
| Page Program 1st |
0x80 |
页编程第一个周期 |
| Page Program 2nd |
0x10 |
页编程第二个周期 |
| Block Erase 1st |
0x60 |
块擦除第一个周期 |
| Block Erase 2nd |
0xD0 |
块擦除第二个周期 |
| Read Status |
0x70 |
读取状态寄存器 |
| Read ID |
0x90 |
读取芯片 ID |
| Reset |
0xFF |
芯片复位 |
相关知识
NAND Flash 是现代存储系统的核心技术基石。理解 NAND Flash 的组织结构、操作特性和管理技术,对于 eMMC 存储、SSD 固件开发以及嵌入式系统调试(配合 JTAG/SWD 接口)具有重要意义。本文与 EMMC-基础、JTAG-SWD-DAP 等硬件基础文章共同构成存储与调试的技术知识体系。