ECC記憶體校驗演算法

2021-08-19 23:38:42 字數 2893 閱讀 1020



ecc的全稱是error checking and correction,是一種用於

nand

的差錯檢測和修正演算法。如果操作時序和電路穩定性不存在問題的話,

nand flash

出錯的時候一般不會造成整個

block

或是page

不能讀取或是全部出錯,而是整個

page

(例如512bytes

)中只有乙個或幾個

bit出錯。

ecc能糾正1

個位元錯誤和檢測2

個位元錯誤,而且計算速度很快,但對

1位元以上的錯誤無法糾正,對

2位元以上的錯誤不保證能檢測。

校驗碼生成演算法:ecc

校驗每次對

256位元組的資料進行操作,包含列校驗和行校驗。對每個待校驗的

bit位求異或,若結果為

0,則表明含有偶數個

1;若結果為

1,則表明含有奇數個

1。列校驗規則如表

1所示。

256位元組資料形成

256行、

8列的矩陣,矩陣每個元素表示乙個

bit位。

其中cp0 ~ cp5

為六個bit位,表示

column parity

(列極性),

cp0為第0、

2、4、

6列的極性,

cp1為第1、

3、5、

7列的極性,

cp2為第0、1、

4、5列的極性,

cp3為第2、3、

6、7列的極性,

cp4為第0、

1、2、

3列的極性,

cp5為第4、

5、6、

7列的極性。

用公式表示就是:

cp0=bit0^bit2^bit4^bit6, 表示第

0列內部

256個

bit位異或之後再跟第2列

256個

bit位異或,再跟第

4列、第

6列的每個

bit位異或,這樣,

cp0其實是

256*4=1024

個bit

位異或的結果。

cp1 ~ cp5 

依此類推。

行校驗如下圖所示

其中rp0 ~ rp15

為十六個

bit位,表示

row parity

(行極性),

rp0為第0、

2、4、

6、….252、

254 

個位元組的極性

rp1-----1、3、

5、7……253、

255 

rp2----0、1

、4、5

、8、9…..252、

253 

(處理2

個byte

,跳過2

個byte

)rp3---- 2、3

、6、7

、10、11…..254

、255 

(跳過2

個byte

,處理2

個byte

)rp4---- 處理4個

byte

,跳過4

個byte

;rp5---- 跳過

4個byte

,處理4

個byte

;rp6---- 處理8個

byte

,跳過8

個byte

rp7---- 跳過

8個byte

,處理8

個byte

;rp8---- 處理16個

byte

,跳過16

個byte

rp9---- 跳過

16個byte

,處理16

個byte

;rp10----處理32個

byte

,跳過32

個byte

rp11----

跳過32

個byte

,處理32

個byte

;rp12----處理64個

byte

,跳過64

個byte

rp13----

跳過64

個byte

,處理64

個byte

;rp14----處理

128個

byte

,跳過128

個byte

rp15----

跳過128

個byte

,處理128

個byte

;可見,rp0 ~ rp15 每個

bit位都是

128個位元組(也就是

128行)即

128*8=1024

個bit

位求異或的結果。

綜上所述,對

256位元組的資料共生成了6個

bit的列校驗結果,16個

bit的行校驗結果,共22個

bit。在

nand

中使用3

個位元組存放校驗結果,多餘的兩個

bit位置

1。存放次序如下表所示:

以k9f1208

為例,每個

page

頁包含512

位元組的資料區和

16位元組的

oob區。前

256位元組資料生成3位元組

ecc校驗碼,後

256位元組資料生成3位元組

ecc校驗碼,共6位元組

ecc校驗碼存放在

oob區中,存放的位置為

oob區的第0、

1、2和

3、6、

7位元組。

TCP UDP 校驗演算法

經常看計算機網路相關的書時,每次看到關於ip或者是udp報頭校驗和時,都是一笑而過,以為相當簡單的東西,不就是16bit資料的相加嗎!最近在學習ping命令的源待時,看到裡面有關於校驗和的演算法。一頭霧水,後來查詢資料,看到校驗和是16bit字的二進位制反碼和。總是覺得很奇怪,為什麼會用反碼和,而不...

VB CRC校驗演算法實現

以下是crc16位 校驗函式,使用的是查表法 private function crc16 data as byte as string dim crc16hi as byte dim crc16lo as byte crc16hi hff crc16lo hff dim i as integer ...

奇偶校驗演算法

1即計算出所給數中包含1的個數 方法一 每一位分別異或 時間複雜度o n n代表數字數 函式功能 如果1的個數為奇數個,則返回1,如果1的個數為偶數個,則返回0。parity check unsigned x return val 0x1 取末位運算.val的二進位制形式最後一位位1則返回1,為0則...