NAND Flash ECC算法长度计算
轉載地址:https://blog.csdn.net/kangear/article/details/9009301
NAND Flash中常用的糾錯方式
?????? 因為閃存中會有出錯的可能,如果沒有使用ECC模塊,讀出的數據和寫入的數據會有不匹配的可能,也許一個文件中只有一兩個bit不匹配,這也是不能容忍的。相對來說SLC中出錯概率比較低,所以使用一個糾錯能力不強的Hanming碼就可以了,在MLC中Hanming碼就顯得力不從心了,需要糾錯能力更強的RS或者BCH糾錯方式了。
?????? BCH擅長處理隨機錯誤,由于NAND Flash自身的特點,出現隨機錯誤的概率更大一些,所以在MLC中目前應用最多的還是BCH方式。
?????? ECC校驗都需要在增加一些額外的空間來存放ECC效驗碼。所以常用的在NAND Flash中4K Page的并不是4096Byte,而是1024+128Byte之類的, 有時候會有更多的額外空間218B;額外空間越多意味著可以使用糾錯能力越強的ECC,因為對于同一ECC算法糾錯能力越強需要的額外空間越大。
?
對于BCH算法
目前通常以512Byte或者1024Byte為單位處理,因為BCH按位處理數據,所以是4096bit或者8192bit,這里的4096/8192bit是原始數據,BCH需要生成一定的校驗數據。下面簡要介紹下原理
設最大糾錯能力為t
如果選用512B的原始數據長度,則模式為BCH(8191,8191-13×t,t,13)
如果選用1024B的原始數據長度,則模式為BCH(16383,16383-14×t,t,14)
校驗數據長度就是13×t,或者14×tbit
舉例:
按照4bit的ECC來計算,每512Byte會產生13*4=52,52/8=7,所以需要7B的空間。在WINCE BSP中4bit ECC是按照8B來存儲,是為了方便對齊,最后一個byte是填充00。
按照8bit的ECC來計算,每512Byte會產生13B的空間。
按照16bit的ECC來計算,每512Byte會產生26B的空間。
所以平均1024+32Byte的MLC 大多建議使用8bit/512Byte ECC
平均1024+45Byte的MLC大多建議使用24Bit/1024Byte ECC, 此時需要14×24bit=42Byte的檢驗數據空間
總結
以上是生活随笔為你收集整理的NAND Flash ECC算法长度计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Laravel集成Maatwebsite
- 下一篇: VUE 数据分页