在 嵌入式系统开发领域,存储器作为信息交互的核心载体,其技术特性直接影响着系统性能与稳定性。然而,有些人在面对 Linux、安卓等复杂操作系统环境时,理解其存储机制尚存局限,为突破这些技术瓶颈,飞凌嵌入式希望通过对存储相关知识的分享,助力大家构建完整的存储知识体系框架。 首先,嵌入式场景中常用来存储数据的介质分为两类: Managed NAND,以eMMC(embedded Multi-Media Card)TF卡、SD卡为主内部带有存储管理控制器。 Raw NAND,以NAND为主的未带有存储管理功能,只包含简单IO逻辑控制。 上图描述了NAND存储和eMMC存储的关系,NAND Controller代指核心板的CPU,NAND指实际参与存储的区域,由此看出实际上eMMC和NAND的区别在于存储管理控制是在eMMC内部还是核心板的 CPU。存储管理主要包括功能:坏块管理、ECC校验、磨损均衡、数据保持和地址管理及映射等。
01存储的相关概念存储类型分为SLC、MLC、TLC、QLC。嵌入式常用类型低存储容量一般为SLC和MLC,高存储容量一般是TLC。
SLC (Single-Level Cell) 速度快,寿命长,价格贵,理论擦写次数在10万次左右。
MLC (Multi-Level Cell) 速度较快,寿命较长、价格较贵,理论擦写次数在3000-5000次。
TLC (Trinary-Level Cell) 速度较慢,寿命较短、价格最便宜,理论擦写次数在1000-3000次。
QLC (Quad-Level Cell) 容量可以做的更大,成本上更低,劣势就是P/E寿命更短。
pSLC (pseudo SLC) 以 MLC的FLASH为基础,但在每个Cell中只存1 bit而不是2 bit数据。由于在同一个Cell中跟SLC一样只存储一个bit,但又不是真的 SLC,所以称之pSLC。依上述原理,若将MLC用做pSLC,存储空间将减半,寿命通常可以提升到3万次左右。
P/E (Program/Erase Count) :擦写寿命。耐用性两个指标之一。
TBW (Total Bytes Written) :总写入量。是厂商用以界定质保期的数值,即超过了这个数值的写入量之后,厂商就不再给予质保服务。耐用性两个指标之一。
FW (Firmware) :由于eMMC内部控制器属于软件编程控制器,会需要固件,eMMC在存储厂家出厂前已经烧录对应固件。
WA (Write amplification) :写放大。表示实际写入的物理数据量是写入数据量的多少倍,即:闪存写入的数据量÷主控写入的数据量 = 写放大。
GC(Garbage Collection) :垃圾回收。NAND介质的存储写入是按照页(Page)写入,是按照块(Block)擦除。
02eMMC和NAND的差异(1)eMMC与NAND对比
-
(2) eMMC的相关特点
(3)NAND的相关特点系统的驱动主要是由 SoC厂家及系统上游逻辑决定,针对不同的NAND存储介质无法发挥出最大优势,或者存在驱动逻辑兼容性问题。
NAND容易出现位翻转、坏块等情况,相比eMMC内部管理,CPU管理需要占用较大系统开销用来维护存储内容。
接口标准采用ONFI接口协议,但是不同厂家的NAND的页、OOB区及块大小等配置存在差异,如果物料停产需要换型会存在镜像不兼容风险。
NAND的布局控制是由CPU管理,对应的分区管理和逻辑定制会有很大的灵活性,根据实际应用场景制定不同的管理策略。
NAND单位存储寿命较长。
综上,产品存储选型建议使用带有管理功能的eMMC。
03存储使用建议[color=rgba(0, 0, 0, 0.9)]eMMC:建议预留25%空间,避免频繁触发GC。
由于存储的最小写入单元是Page,最小的擦除单元是Block。以16K page举例,如果单次写入小于 一个Page的数据,会造成写放大。如果单次写入数据远远小于Page的大小,写放大会很严重。最终会导致寿命大大缩短。建议对小数据先通过DDR内存进行缓冲,缓冲一定数据再组合写入。
使用中如果出现异常断电,定期需要对文件系统使用工具扫描修复,避免由于异常断电数据未及时 保存导致文件系统异常。如果是频繁异常掉电场景,可以增加硬件加掉电保护措施,用来保证系统稳定性。
产品设计初期,需要结合实际应用场景存储数据的频率,为保证产品寿命要求,评估选择合适的存储类型和容量。
04飞凌嵌入式赋能(1)针对eMMC,根据对寿命及健康信息读取分析,让应用掌握更全面的存储信息,并作出合理的调整。
(2)针对NAND,根据增加手段统计实际NAND的擦写、搬移、标记等信息,给出应用IO操作改善建议。
(3)针对所有类型存储,根据对终端设备不同使用场景特点采集分析,评估出更适合场景的应用编写参考。
- 终端实际应用场景主要集中在:日志循环存储、应用关键数据参数存储及缓冲数据。
- 日志循环存储特点:循环擦写,写入频繁,读取不频繁。和文件系统同时存在,会出现写频繁 和只读混放数据,会影响整体的稳定性。举例:大部分eMMC的损耗平衡特性是全盘范围,软件上的文件系统分区未实现想要的数据隔离效果,这个其实可以在初期评估阶段解决。
- 关键数据特点:小数据量状态信息,比较重要,信息量不大。
- 缓冲数据特点:顺序写入,整体擦除。
实际软件开发过程中,根据如上数据特点,为保证产品稳定性在如下3个阶段给出优化方案:
除上述优化策略外,不同eMMC、NAND厂家在满足接口协议标准前提下提供了不同的优化特性,部分优化特性需要结合操作系统修改才能发挥出更好的效果。
05总 结存储稳定性直接关乎到最终产品的稳定性,本文围绕eMMC和NAND的特性做了对比介绍,目的是帮助研发工程师在实际开发产品过程中更简单、更高效。
|
网友评论