MK米客方德从推出业界第一颗基于SLC开发的SD NAND产品至今,出货量已逾1000万颗,容量覆盖128MB~64GByte,64GB大容量为Nano SD NAND。MK拥有先进的NAND Flash管理技术,如ECC纠错、坏块管理、磨损平均算法、掉电保护等,能大幅提升产品的速度和系统性能。这就是为什么SD NAND深受越来越多行业应用青睐的原因。在此,今天就和大家深入探讨MK的SD NAND的掉电保护机制。
图一:SD NAND产品图
众所周知,掉电可以分正常掉电和异常掉电,正常掉电不会导致数据的丢失。而在设备日常工作中,异常掉电的发生不可避免,当发生异常掉电时,如果没有合理的掉电保护机制,就会引发很多问题,最终导致所有用户数据的丢失。
所谓的异常掉电,就是设备(Device)在没有收到主机(Host)的掉电通知时就被断电;或者收到主机的掉电通知,但还没有来得及处理缓存的用户数据、映射表以及闪存的块信息等写入闪存就被断电了。异常掉电可能会导致数据的丢失,比如缓存在存储芯片中的数据来不及写到闪存,掉电导致这部分数据丢失。所以,异常掉电保护机制的目的一方面是尽可能恢复用户数据,把损失减到最低;另一方面是让存储芯片经历异常掉电后还能正常工作。
现在主要讲一下SD NAND异常掉电恢复SPOR (Sudden Power Off Recovery), MK SD NAND的异常掉电恢复主要就是映射表的恢复重建。如果我们读取物理地址Pa x,就能读到元数据x和用户数据x,而元数据是有逻辑地址La x和时间戳的,因此我们就能获得映射:La x→Pa x。元数据和用户数据存储示例如表一所示。
|
元数据 |
用户数据 |
备注 |
|
La 1,TS1... |
User data 1 |
Pa 1 |
|
La 2,TS2... |
User data 2 |
Pa 2 |
|
La 3,TS3... |
User data 3 |
Pa 3 |
|
La 4,TS4... |
User data 4 |
Pa 4 |
|
La 5,TS5... |
User data 5 |
Pa 5 |
|
La 6,TS6... |
User data 6 |
Pa 6 |
|
La 7,TS7... |
User data 7 |
Pa 7 |
|
La 8,TS8... |
User data 8 |
Pa 8 |
|
La 9,TS9... |
User data 9 |
Pa 9 |
|
... |
... |
... |
|
La x-1,TS... |
User data x-1 |
Pa x-1 |
|
La x,TS... |
User data x |
Pa x |
那么,MK SD NAND又是如何快速恢复映射表的呢?这就需要定期把SD NAND中RAM的数据(包括映射表和缓存的用户数据)和相关的状态信息如擦写次数,读取次数及其它信息等写入到闪存中去。
假设在做完快照C后,做下一个快照D之前,在X处发生了异常掉电,那么设备重上电的话,就可以在闪存中读取到最新的快照信息,由于异常掉电,从快照C处到X处新产生的映射关系丢失。由于之前绝大多数的映射关系都被快照C保存,因此需要重建的映射关系仅仅是快照C之后产生的映射关系,这部分关系的恢复,仅需扫描一些局部的物理空间,由此可见,映射表重建速度大大加快。
嵌入式芯片由于封装芯片形式所受限,如果在硬件上设计异常断电防护功能会有所限制,因此一般掉电保护主要依靠主控端的固件算法来实现的。而 MK米客方德 的一系列产品均有做强化异常断电防护机制,在不同的测试场景下进行异常断电测试5000次,保证数据的存储可靠性。
|
MK SD NAND 产品选型表 |
||||||
|
产品类型 |
容量 |
型号 |
工作温度 |
尺寸 |
Flash类型 |
关键特征 |
|
MKDN系列 |
32Gbit |
MKDN032GCL-AA |
-25℃~85℃ |
9x12mm |
MLC |
支持1.8v/3.3v IO电压 |
|
64Gbit |
MKDN064GCL-AA |
-25℃~85℃ |
MLC |
支持1.8v/3.3v IO电压 |
||
|
128Gbit |
MKDN128GCL-ZA |
-25℃~85℃ |
TLC |
LDPC 纠错算法;支持1.8v/3.3v IO电压 |
||
|
256Gbit |
MKDN256GCL-ZA |
-25℃~85℃ |
TLC |
LDPC 纠错算法;支持1.8v/3.3v IO电压 |
||
|
512Gbit |
MKDN512GCL-ZA |
-25℃~85℃ |
TLC |
LDPC 纠错算法;支持1.8v/3.3v IO电压 |
||
|
32Gbit |
MKDN032GIL-AA |
-25℃~85℃ |
pSLC |
P/E Cycles 5万次,工业级;支持1.8v/3.3v IO电压 |
||
|
64Gbit |
MKDN064GIL-ZA |
-25℃~85℃ |
pSLC |
P/E Cycles 5万次,工业级;支持1.8v/3.3v IO电压 |
||
|
MKDV系列 |
1Gbit |
MKDV1GCL-AB |
-25℃~85℃ |
6x8mm |
SLC |
|
|
2Gbit |
MKDV2GCL-AB |
-25℃~85℃ |
SLC |
|
||
|
4Gbit |
MKDV4GCL-AB |
-25℃~85℃ |
SLC |
|
||
|
32Gbit |
MKDV032GCL-STH |
-25℃~85℃ |
MLC |
|
||
|
64Gbit |
MKDV064GCL-STH |
-25℃~85℃ |
MLC |
|
||
|
1Gbit |
MKDV1GIL-AS |
-40℃~85℃ |
SLC |
工业级宽温,数据保持力10年 |
||
|
2Gbit |
MKDV2GIL-AS |
-40℃~85℃ |
SLC |
工业级宽温,数据保持力10年 |
||
|
4Gbit |
MKDV4GIL-AS |
-40℃~85℃ |
SLC |
工业级宽温,数据保持力10年 |
||
|
8Gbit |
MKDV8GIL-AS |
-40℃~85℃ |
SLC |
工业级宽温,数据保持力10年 |
||