电子说
选型会上常被问到一个问题:SD NAND要不要主机配合做垃圾回收?答案是不用——不是"建议不用",是结构上就没给主机留这个口子。主机发标准SD读写命令,GC在芯片内部由控制器自己完成,外部连感知都感知不到。为什么raw NAND不行而它行?这跟控制器的位置直接相关。

一、根源:页写块擦的物理规则
NAND不能像SRAM那样随机覆写:数据按页写入(常见2KB或4KB一页),擦除却按块进行(一块几十上百页),写过的页不擦不能重写。文件系统删文件只释放逻辑地址,旧数据还躺在物理页上。无效页累积、空闲页减少,就必须有人清理:有效数据搬走、整块擦除腾空间,这就是GC。
注意GC不是文件系统的活——FAT、LittleFS看到的是逻辑扇区,不知道物理块在哪,也没有发起块擦除的通道。GC属于FTL的职责。所以问题的本质是:FTL跑在哪?
二、raw NAND:GC压在主机上的三笔账
裸SPI NAND这类raw NAND只暴露读页、写页、擦块三类操作,没有控制器、没有FTL,GC必须由主机固件实现,代价体现在三笔账上。资源开销:搬数据要CPU拷贝、RAM做页缓存、Flash空间存映射表和坏块表,MCU上这些资源本来就紧。掉电风险:GC进行到一半断电,映射表和块状态处于中间态,恢复逻辑要自己设计,测试覆盖到什么程度往往心里没底。寿命博弈:选块策略直接影响磨损均衡效果,策略粗糙会让热点块提前耗尽P/E次数,调好算法需要对NAND物理特性有相当深的理解。
说白了,raw NAND把管理责任全甩给了主机。大处理器上不算事,MCU场景等于每个项目都在重复造同一套轮子,造得好不好全看团队功底。
三、SD NAND:控制器把FTL整个包了
SD NAND在颗粒和主机之间加了一层硬件——Flash控制器。内部是三层:底层NAND阵列,仍遵循页写块擦;中间控制器固件,即完整FTL,映射、GC、坏块管理、磨损均衡、掉电保护全在这一层;上层标准SD/SPI接口,只暴露512字节扇区的块设备抽象。

主机和物理阵列之间隔着控制器固件,能操作的最小单位是逻辑扇区,根本接触不到物理块——SD协议里压根没有"擦块"这个命令。主机连块擦除都发起不了,主机GC自然无从谈起。这不是功能裁剪,而是接口抽象层面的彻底隔离。
GC内部链路是这样跑的:日志结构写入,新数据写新页、旧页置无效;控制器持续统计各块无效页比例和擦写次数;空闲块低于水位线启动回收,按"无效页多且兼顾磨损"的策略选块;有效页经ECC校验后搬移、映射同步更新;原块擦除归还空闲池。掉电保护固件全程介入,配合内部储能电容保证映射和搬移数据一致,米客方德工业级SD NAND经过12万次随机掉电测试,覆盖的就是回收中断这类异常路径。OP冗余空间从物理容量中预留,主机不可见。
四、"零干预"的边界
主机不做GC,不代表完全透明,两点要清楚。一是写入延迟抖动:GC与写入并发时个别写命令响应变长,这是所有受管NAND(SD NAND、eMMC、SD卡都属于这一类)的固有表现,超时留余量、文件系统带重试即可,读操作延迟稳定。二是容量差异:标称与可用容量的差值,一部分是文件系统格式开销,一部分是内部OP,比例由厂商按颗粒类型调校好,不能也不用调整。
反过来,主机虽不能干预GC,却能观测它的结果:Smart Function提供累计写入量、坏块数、剩余寿命、掉电次数等健康参数。实用做法是用这些数据做长期记录,配合H2testw这类填充测试跑写满循环,会观察到一个规律——存储占用越接近满容量,空闲块越少,GC越频繁,写入抖动也越明显。主机调不了GC参数,但容量规划时给空闲块留缓冲,本身就是在给回收创造空间。
顺便澄清一个常见疑问:有人觉得主机不做GC就"失去控制权",其实该控制的层面主机仍然握在手里——文件系统的簇大小、写入策略、文件布局都由主机决定,而这些恰恰决定了数据冷热分布和碎片化程度,反过来影响内部GC效率。日志类应用采用追加写、定期整段删除的模式,无效页成片出现,回收效率很高;频繁小文件随机覆盖写的模式,则会把块切得很碎,回收时搬运量大。应用层把写入模式设计好,比干预芯片内部机制有效得多。
五、本质:从"裸设备"到"受管设备"
SD NAND不需要主机做GC,根本原因是它属于managed NAND(受管NAND)架构:NAND阵列加内置控制器,FTL在芯片内闭环。eMMC、UFS同理,主机也不做GC;raw SPI NAND属于raw NAND架构,管理责任天然在主机。

两类架构没有绝对优劣,只有场景适配:raw NAND胜在成本和灵活性,适合有能力自研FTL的团队;受管方案胜在开发简单、行为确定、可靠性有厂商测试背书,适合MCU资源有限、项目周期紧、又要求宽温与掉电可靠的工控、车载、医疗产品。以米客方德MKDV系列为例,SLC颗粒P/E寿命10万次、工作温度-40℃到85℃、LGA-8封装仅6×8mm,1Gb到8Gb各容量软硬件Pin-to-Pin兼容,后期扩容不改板、不重画PCB,就是典型的受管NAND形态。选型时把"GC谁来做"这笔账算进去,决策就清晰了——你买的不只是存储容量,还有一整套已经验证过的闪存管理能力。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !