在这一系列文章中,我们将讨论不同的转储更正方法。我认为这不是一个秘密,在NAND存储器芯片读取过程中出现一些字节错误。字节错误数量取决于以下因素:
NAND存储器芯片的类型(SLC、MLC、TLC);
Contacts清洁度(未清洁芯片读数通常较差);
温度影响(芯片拆焊过程中的高温可能会损坏电池);
NAND单元的磨损程度(如果客户在NAND设备上重写信息数百次,则小单元电容器的质量会变得非常差,读取时会出现大量错误);
当然,如果您想从用户flash驱动器获得100%的恢复,首先您需要修复尽可能多的ECC错误。否则,所有数据都将损坏、不可用或部分损坏:
请记住,字节纠错极其重要!
纠错的基本方法是ECC。通常这是最简单的数据修复方法。如您所知,控制器通常会在每一页中添加附加信息,称为备用区域(服务区(SA))。它包含一些标记(例如,映像建立的标记)、不同的标志和纠错码(ECC)。ECC–是一种特殊的扩展数据,基于最初写入的用户信息。这种通过特殊数学公式扩展的数据有助于查找扇区\范围中的字节错误并修复它们。通常ECC代码具有特殊的长度——选择用于纠错的字节数。ECC字节的最大数量使我们能够在每个扇区\范围内修复更多的错误。
通用MBR扇区来自旧SLC NAND芯片,页面大小为2112字节,扇区大小为528字节大小:
黄色–我们的DA(512字节),蓝色–映像建立的块号标记(6字节),绿色–纠错码(10字节):
我们的软件试图查找以下扇区中的所有字节错误:
并应用ECC代码进行修复:
简单的例子——10个字节的ECC可以修复扇区中的5个字节的数据。100个字节的ECC可以修复扇区中的50个字节的数据。但正如你所知,所有现代NAND存储芯片都有TLC架构,每个芯片中的ECC错误数量非常大。这就是为什么在现代芯片中,每页中16384字节的DA(约10%)/ECC大小可以高达1690字节的ECC!同时,对于旧的SLC芯片,控制器通常每2048字节的DA使用大约40字节(仅2%)。
为了获得良好的ECC校正结果,您应该记住以下几条规则:
1. 在一些旧的SLC和MLC NAND存储芯片中,ECC将不可能应用,直到您进行页面转换;
2. 现代的TLC芯片通常工作在一对复杂的控制器中,用XOR模式对数据进行加密。有时(在AU699x、SSS669x和其他一些中),您应该在XOR准备后应用ECC自动检测!因为XOR在这个控制器家族密码服务区(SA)区域也!
3. 有时现代TLC芯片包含BAD字节插入(添加)!如果你不消除他们,ECC将不会被发现。
4. 当你修复所有ECC错误时,你应该使用ECC建立数据字节图,并检查有多少扇区仍然没有被纠正。它们的数量不应超过5-6%。如果字节错误的数量更大(例如–来自8GB转储的7.1GB未校正数据),则进一步的恢复过程将是无用的。您需要使用其他方法来提高内存转储质量。
欢迎光临 PC3000 军达成数据恢复论坛 (http://www.jundacheng.com/bbs/) | Powered by Discuz! X2 |