2. 存储基础入门

在讨论 eMMC 与文件系统可靠性之前,必须先建立对底层存储介质的正确认知。很多“文件系统损坏”“数据丢失”“设备偶发无法启动”的问题,根源并不在文件系统代码,而在于对半导体存储分类、NAND Flash 物理特性以及 eMMC 封装形态的理解偏差。本节从存储分类出发,逐层下沉到 NAND 的物理约束,再回到 eMMC 这一典型产品形态,帮助读者建立“从晶体管到文件系统”的完整链路认知。

一、半导体存储分类:易失与非易失的分水岭

半导体存储首先按“断电后数据是否保留”分为两大类:易失性存储(Volatile)与非易失性存储(Non-Volatile)。易失性存储以 SRAM、DRAM 为代表,读写速度快、可字节寻址、寿命近乎无限,但断电即失,通常作为 CPU 缓存和运行内存。非易失性存储则包括 ROM、NOR Flash、NAND Flash 以及新型存储(如 3D XPoint、MRAM 等),断电后数据仍能保留,是固件、操作系统和用户数据的最终归宿。

在嵌入式与移动设备中,NOR Flash 与 NAND Flash 是最常见的两种非易失存储。NOR 支持随机访问、可直接执行代码(XIP),但容量小、成本高、写入慢;NAND 则以页为单位读写、以块为单位擦除,容量大、单位成本低、写入速度快,但存在坏块、位翻转和擦写寿命限制。eMMC 正是以 NAND Flash 为存储介质、并集成控制器的一体化封装方案。

核心结论:文件系统的可靠性设计,本质上是在“NAND 的物理缺陷”与“上层逻辑一致性”之间建立缓冲与补偿机制。

二、NAND Flash 物理特性:可靠性问题的源头

NAND Flash 的基本存储单元是浮栅晶体管(Floating Gate Transistor),通过向浮栅注入或移出电荷来表示 0 和 1。这一物理机制决定了 NAND 的几个关键特性:

  • 擦除先于写入:NAND 不能像 RAM 一样直接覆盖写。写入前必须先擦除整个块,擦除单位(Block)远大于读写单位(Page),通常一个块包含 64~512 个页。
  • 有限擦写寿命:SLC 约 10 万次,MLC 约 3000 次,TLC 约 1000 次,QLC 更低。超过寿命后误码率急剧上升。
  • 坏块与位翻转:出厂即存在坏块,使用中也会新增坏块;读取时可能发生随机位翻转,需要 ECC 纠错。
  • 读干扰与保持力:频繁读取相邻页会干扰目标页电荷;长期断电后电荷泄漏会导致数据保持力下降。
  • 页/块结构:典型页大小 4KB~16KB,块大小 256KB~8MB,另含 OOB(Spare Area)用于存放 ECC、坏块标记和元数据。

这些特性直接决定了 NAND 必须配合控制器进行坏块管理、ECC 纠错、磨损均衡和垃圾回收。裸 NAND 直接跑文件系统几乎必然导致数据损坏,这也是 eMMC 出现的根本原因。

半导体存储分类 → NAND 物理特性 → eMMC 封装结构 易失性存储 SRAM / DRAM 非易失性存储 ROM / NOR / NAND NAND Flash 物理特性 • 擦除先于写入(Block > Page) • 擦写寿命有限(SLC/MLC/TLC) • 坏块与随机位翻转 • 读干扰 / 数据保持力下降 • 页含 OOB 存放 ECC 与元数据 裸 NAND 直接使用的风险 • 无坏块管理 → 写入坏块即失败 • 无 ECC → 位翻转直接损坏数据 • 无磨损均衡 → 局部块提前耗尽 • 无垃圾回收 → 写入放大与卡顿 • 文件系统无法感知物理约束 eMMC 一体化封装 主机接口:MMC / SD 协议,8-bit 数据总线 控制器:坏块管理 / ECC / 磨损均衡 / GC NAND 阵列:SLC / MLC / TLC 存储介质 eMMC 典型应用场景 智能手机 / 平板 系统盘 + 用户数据 车机 / 工业网关 宽温、长期可靠运行 智能电视 / 机顶盒 固件 + 缓存 + 日志 物联网终端 低成本、小容量启动盘 共同点:需要块设备抽象、掉电保护与文件系统一致性

三、eMMC 概念:把控制器和 NAND 封装在一起

eMMC(embedded MultiMediaCard)是由 JEDEC 标准化的嵌入式存储方案,其核心思想是:把 NAND Flash 颗粒与一个专用控制器封装在同一颗 BGA 芯片内,对外提供标准的 MMC/SD 接口。主机侧不再直接面对裸 NAND 的物理复杂性,而是看到一个“块设备”。

eMMC 内部通常包含以下关键模块:

  1. NAND 阵列:实际存储介质,可能是 SLC、MLC 或 TLC,容量从 4GB 到 512GB 不等。
  2. 控制器:负责坏块管理、ECC 纠错、磨损均衡、垃圾回收、读干扰管理等。
  3. FTL(Flash Translation Layer):将主机逻辑地址映射到 NAND 物理地址,屏蔽擦除块与写入页的差异。
  4. 主机接口:支持 1/4/8-bit 数据总线,速率从 legacy 到 HS400 等模式。
  5. 分区与 Boot 区:通常包含 Boot Area、RPMB、General Purpose 分区和 User Data 区。

对文件系统而言,eMMC 呈现为一个可随机读写的块设备,但它的底层仍然受 NAND 物理规律支配。因此,文件系统的日志、写顺序、刷盘策略,都会通过 FTL 放大或缓解 NAND 的磨损与掉电风险。

四、典型应用场景与选型对照

eMMC 广泛应用于对成本、体积和可靠性有综合要求的嵌入式设备。下表给出常见场景与关注点的对照:

应用场景 典型容量 关键关注点 文件系统建议
智能手机 / 平板 64GB~512GB 随机读写性能、掉电一致性 F2FS / ext4 + 日志
车机 / 工业网关 8GB~64GB 宽温、长期擦写寿命、坏块增长 ext4 + 只读根 + 数据分区
智能电视 / 机顶盒 4GB~32GB 固件升级安全、日志写入量 UBIFS / ext4 + 双分区
物联网终端 1GB~8GB 低成本、启动可靠性 只读 squashfs + 小数据区

五、常见误区与复盘

误区一:把 eMMC 当成“不会坏的硬盘”。eMMC 内部有控制器,但 NAND 的擦写寿命、坏块增长和掉电风险依然存在,只是被封装隐藏了。
误区二:认为文件系统可以完全解决掉电问题。文件系统日志能保证元数据一致性,但无法阻止 FTL 映射表在掉电时丢失,也无法修复已经发生的位翻转。
复盘建议:在项目早期就确认 eMMC 的 pSLC 配置、分区布局、RPMB 使用方式和文件系统挂载参数,并在老化测试中监控坏块增长与写入放大,而不是等到量产后再补救。

理解半导体存储分类、NAND 物理特性和 eMMC 封装结构,是后续讨论文件系统可靠性、掉电保护、磨损均衡和坏块策略的基础。只有把物理层的约束看清楚,才能在软件层做出正确的设计取舍。