NAND Flash原理及概述

内容纲要

NAND Flash 详细说明

1. NAND 到底是什么

NAND Flash 是一种非易失性存储介质,断电后数据仍能保存。
它的核心特点不是“像硬盘一样按块覆盖写”,而是:

  • page 为基本读写单位
  • block 为基本擦除单位
  • 擦除前不能随意覆盖写
  • 天生存在坏块
  • 需要 ECC、坏块管理、磨损均衡

工程上如果说 NAND,通常默认指的是 Raw NAND,也就是裸 NAND 器件。


2. NAND 的基本组织结构

NAND 一般按下面几层组织:

  • Cell
  • Page
  • Block
  • Plane
  • LUN
  • Die

最重要的是前三层:

Page

Page 是最基本的读写单位,典型大小常见为:

  • 2KB
  • 4KB
  • 8KB
  • 16KB

很多器件还会给每个 page 配一个 OOB/Spare 区,用来存:

  • ECC 校验数据
  • 坏块标记
  • 文件系统/FTL 元数据

Block

Block 是最基本的擦除单位,一个 block 由多个 page 组成。
典型可能是:

  • 64 pages/block
  • 128 pages/block
  • 256 pages/block

为什么这很重要

因为 NAND 的物理约束是:

  • 读:按 page
  • 写:按 page
  • 擦:按 block

这就决定了上层软件不能简单地像磁盘那样“就地覆盖写”。


3. NAND 的工作原理

NAND 单元通过浮栅或电荷陷阱存储电荷状态。
读操作通过感知阈值电压来判断存储值;写操作本质上是编程;擦除则通常以 block 为单位清空电荷状态。

从软件视角最重要的结论只有三个:

  1. 写入会损耗介质
  2. 擦除比读写慢得多
  3. 读出的比特错误率会随寿命和工艺演进而上升

这就是为什么 NAND 必须和:

  • ECC
  • 坏块管理
  • 磨损均衡
  • 垃圾回收

这些机制一起使用。


4. NAND 的类型

按每个 cell 存的 bit 数,常见有:

  • SLC:1 bit/cell
  • MLC:2 bit/cell
  • TLC:3 bit/cell
  • QLC:4 bit/cell

SLC

特点:

  • 速度快
  • 寿命高
  • BER 低
  • 成本高

适合:

  • 工业
  • 启动区
  • 高频写日志
  • 高可靠设备

MLC

特点:

  • 成本和性能平衡
  • 寿命低于 SLC

TLC

特点:

  • 单位容量成本更低
  • 写入和读扰更敏感
  • ECC 和管理策略要求更高

QLC

特点:

  • 容量成本优先
  • 延迟和寿命压力更大

5. NAND 的接口与标准

Raw NAND 最常见的标准脉络有两类:

  1. ONFI
  2. Toggle DDR

5.1 ONFI

ONFI 全称是 Open NAND Flash Interface
它的目标是把 NAND 的接口、参数页和部分行为标准化,降低主控适配成本。

ONFI 的几个关键价值:

  • 标准化 parameter page
  • 标准化器件识别
  • 标准化接口能力描述
  • 支持更高速的数据传输模式

5.2 Toggle DDR

Toggle DDR 更多见于部分大厂高速 NAND 体系。
核心思路是进一步提升数据传输效率和接口速度。

工程上要记住的是:

  • ONFI/Toggle 解决的是“接口和传输”
  • 它们不等于“你就不用做 ECC 和坏块管理”

6. NAND 的时序

NAND 的 timing 很重要,因为它和 eMMC/UFS 这种受管设备完全不是一套思路。

NAND 时序一般分成两类:

6.1 接口级时序

这部分关注主机如何在总线上把命令、地址、数据送给 NAND。

典型参数:

  • tCLS/tCLH
  • tALS/tALH
  • tDS/tDH
  • tWP/tWH
  • tRP/tREH
  • tRC/tWC

这些大多是 ns 级。

6.2 阵列内部时序

这部分反映 NAND 内部真的在干什么。

典型参数:

  • tR:读出 page 所需时间
  • tPROG:编程一个 page 所需时间
  • tBERS:擦除一个 block 所需时间

典型量级通常是:

  • tR:几十到上百 us
  • tPROG:几百 us
  • tBERS:几 ms

这意味着什么

这意味着:

  • 接口信号很快
  • 但阵列内部操作并不快

所以很多 NAND 系统的瓶颈不在“总线频率”,而在:

  • program
  • erase
  • ECC
  • block recycle

7. NAND 的访问流程

7.1 读流程

主机典型流程:

  1. 发读命令
  2. 发列地址/行地址
  3. 等待 ready/busy
  4. 读出 page 数据
  5. 读出 OOB
  6. 做 ECC 校验和纠错

7.2 写流程

主机典型流程:

  1. 发 program setup
  2. 发地址
  3. 写数据和 OOB
  4. 发 program confirm
  5. 等待 busy 完成
  6. 读状态

7.3 擦除流程

主机典型流程:

  1. 发 erase setup
  2. 发 block 地址
  3. 发 erase confirm
  4. 等待 busy
  5. 读状态

这意味着主机必须真的理解 NAND 协议。


8. NAND 为什么难用

Raw NAND 难用,不是因为接口线多,而是因为它把复杂性都留给了系统。

系统必须自己解决:

  • ECC
  • 坏块管理
  • 磨损均衡
  • FTL 或 UBI
  • 断电保护
  • 元数据一致性
  • 块回收

如果这些处理不好,就会出现:

  • 数据读不回
  • 写入失败率上升
  • 寿命衰减过快
  • 量产后随机坏

9. ECC 为什么是 NAND 的核心

随着工艺演进和 TLC/QLC 普及,NAND 原始误码率越来越高。
所以 ECC 从“可选优化”变成“系统生死线”。

常见 ECC 方案:

  • Hamming
  • BCH
  • LDPC

粗略理解:

  • 老 SLC/低密度时代,ECC 压力较小
  • 新工艺/高密度时代,ECC 强度必须明显提高

如果 SoC NAND controller 的 ECC 能力不够,后期寿命会很危险。


10. 坏块管理

NAND 出厂就可能带坏块,后续使用过程中也会继续长坏块。

所以系统必须做到:

  • 识别出厂坏块
  • 运行期发现新增坏块
  • 避免关键数据落在坏块
  • 建立坏块表或坏块策略

坏块管理是 Raw NAND 系统量产稳定性的关键之一。


11. 磨损均衡与垃圾回收

因为 NAND 擦写次数有限,所以不能让少数 block 被反复写爆。

这就需要:

  • Wear Leveling
  • Garbage Collection

Wear Leveling

目标:

  • 让擦写分布更均匀

Garbage Collection

目标:

  • 回收失效页所在 block
  • 迁移有效数据
  • 释放新块

代价:

  • 写放大
  • 延迟抖动

12. 软件栈

在 Linux 里,Raw NAND 通常走:

  • MTD
  • UBI
  • UBIFS

或某些系统自己做:

  • 专用 FTL
  • 专用日志存储层

MTD

直接面向 flash 语义,不假装自己是块设备。

UBI

负责把坏块、磨损和卷管理抽象起来。

UBIFS

运行在 UBI 之上的文件系统。

这套栈比 eMMC 的块设备栈复杂得多,但也更符合 Raw NAND 的物理现实。


13. NAND 的优点

Raw NAND 的优点主要有:

  • cost per bit 通常更低
  • 控制权高
  • 可深度定制
  • 可针对特定 workload 做优化
  • 某些场景可实现更可预测的行为

特别适合:

  • 成本极敏感产品
  • 有成熟 NAND 团队的公司
  • 工业日志型系统
  • 专用设备

14. NAND 的缺点

Raw NAND 的缺点也非常明显:

  • 开发难度高
  • 驱动/BSP 依赖强
  • 量产验证周期长
  • 对 ECC 和坏块策略要求高
  • 软件栈复杂
  • 不适合小团队快速量产

换句话说:

Raw NAND 便宜的只是器件,不是整个系统。


15. 适合用 NAND 的场景

更适合选 Raw NAND 的情况通常是:

  • 团队有成熟 MTD/UBI/FTL 经验
  • SoC 自带强 NAND controller 和 ECC
  • 需要最低存储 BOM
  • 负载模型固定
  • 愿意投入长期验证和维护

如果这些条件不满足,很多项目最后都会转向 eMMC。


16. 总结

可以把 Raw NAND 概括成一句话:

它不是一个现成块设备,而是一种需要系统自己接管管理的闪存介质。

它的价值在于:

  • 成本低
  • 控制权高
  • 可定制性强

它的代价在于:

  • 软件复杂
  • 风险高
  • 量产难

17. 参考资料

  1. Micron, “Choosing the right NAND”
    https://www.micron.com/products/storage/nand-flash/choosing-the-right-nand

  2. Micron, “ONFI advantages”
    https://www.micron.com/products/storage/nand-flash/onfi-advantages

  3. ONFI Workgroup
    https://onfi.org/

  4. ONFI 3.0 新闻稿
    https://investors.micron.com/news-releases/news-release-details/onfi-announces-publication-30-standard-pushes-data-transfer

  5. Alliance Memory Parallel NAND datasheet
    https://www.alliancememory.com/wp-content/uploads/AllianceMemory_AS9Fxx_Series_1Gb_2Gb_4Gb_8Gb_x8bits_SLC_Parallel_NAND_Fl.pdf

  6. Kioxia Serial NAND datasheet brief
    https://europe.kioxia.com/content/dam/kioxia/newidr/productinfo/datasheet/201910/DST_TC58CYG2S0HRAIJ-TDE_EN_36007.pdf

版权声明

版权声明

内容来源及使用限制

欢迎访问 TomgZHE研习社(网址:https://blog.tomgzhe.com)。本网站部分文章内容源自网络,仅作学习交流与参考分享;若您发现有内容涉嫌侵权,请立即联系 tomgzhe@qq.com,我们将在接到通知后的 48 小时内核实并删除相关侵权内容。

软件资源相关规定

本网站为个人非盈利性质的站点,所有软件资源均来自网络。这些资源仅用于个人学习、研究和参考,严禁用于任何商业用途。您下载和使用本网站软件资源即表示您同意仅将其用于学习目的,若因违反此规定导致任何法律纠纷或损失,责任由您自行承担。

原创版权

本网站上的原创内容,包括但不限于文字作品、自行设计的图片、独家制作的音频视频等,其版权均归本网站所有。未经本网站书面授权,任何组织或个人不得擅自复制、转载、摘编、传播或以其他任何方式使用这些原创内容。如需使用,请提前与我们联系并获得书面许可,同时需在显著位置注明出处及作者信息。

转载与引用规范

若您需转载本网站文章,务必注明文章来源为 “[ https://blog.tomgzhe.com/index.php/2026/07/15/nand-flash/ ],原文链接:[ https://blog.tomgzhe.com/index.php/2026/07/15/nand-flash/ ]”;对于有明确作者署名的文章,还需完整保留作者姓名。在引用本网站内容时,请确保内容准确无误,并遵循学术及行业的引用规范。

Like (0)
Donate 微信扫一扫打赏 微信扫一扫打赏 支付宝扫一扫打赏 支付宝扫一扫打赏
tomgzhe的头像tomgzhe
Previous 18小时前
Next 15小时前

相关推荐

发表回复

Please Login to Comment
联系我们

联系我们

400-800-6666

在线咨询: QQ交谈 邮件:tomgzhe@qq.com 工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
SHARE
TOP
蛇年新气象!从2025年2月起,本博客将在保留科技板块基础上,新增生活美学、个人成长等多元内容,希望能为大家带来更丰富的阅读体验,敬请期待!