天天看點

Parity(奇偶校驗)和ECC(錯誤檢查和糾正)

Parity(奇偶校驗)

1、什麼是parity?

奇偶校驗是一種資料校驗機制,用于判斷資料在存儲過程中是否發生了比特位錯誤。常用于存儲結構中,如RAM。存儲結構的最小單元為“位元組”,即Byte。每個位元組含有8比特,另外增加1比特作為校驗位。如下圖(1)所示,校驗位為是以比特位異或産生,即當8比特有奇數個1時,校驗位為1,當有偶數個1時校驗位為0。

存儲資料時,會對8比特資料進行異或運算得到校驗位y0,并且随8比特資料一塊存到RAM中。

當讀取存儲資料時,會對讀出的8比特資料進行異或運算得到新的校驗位y1,并與校驗位y0進行對比,如果y1和y0不一緻,則表示資料存取不一緻,出現錯誤。

校驗位:         y=x0^x1^x2^x3^x4^x5^x6^x7

2、parity有什麼特點:

優點:

結構簡單,隻需異或計算就可以實作,資料量小時(8比特)實作代價小。

缺點:

1、不能修正錯誤:隻知道8比特中有部分比特發生錯誤,無法判斷哪幾個比特發送錯誤。

2、有偶數個比特位時,無法判斷出錯。如下圖所示,x5和x2均發生變化時,校驗位仍未1,無法檢測出錯誤。

3、資料位寬較大時實作代價大:如1024比特資料,需要256bit的校驗位。

X7 X6 X5 X4 X3 X2 X1 X0 y
1 1 1 1 1 1
1 1 1 1

ECC(錯誤檢查和糾正)

1、什麼是ECC

通過上面的分析我們知道Parity機制是通過在原來資料位的基礎上增加一個資料位來檢查目前8位資料的正确性,随着資料位每增加8比特,檢驗位需要增加1比特。當資料量為256位元組時,需要256個比特位,并且出錯的資料無法恢複。由此,一種存儲檢錯糾錯機制出現了,這就是ECC。ECC同樣通過增加校驗位來進行錯誤判斷,但是能夠進行錯誤糾正。

2、ECC有什麼特點:

優點:

1):大量資料位實作代價低:8比特資料需要5個校驗位,256位元組(256*8比特)的資料值需要5個列校驗位和11行校驗位

2)能夠糾正錯誤:在記憶體中ECC能夠容許錯誤,并可以将錯誤更正,使系統得以持續正常的操作,不緻因錯誤而中斷

缺點:

1):隻能修複1比特錯誤

當資料隻有單比特錯誤時,ECC能夠進行錯誤修複;超過2比特的資料錯誤,将無法修複,ECC隻能輸出多比特錯誤信号。

2):不保證能檢測超過2比特的錯誤

超過2比特的錯誤不一定能檢測出來

 3、ECC是如何實作的:

實作細節

為什麼能夠單比特糾錯

為什麼不能糾正兩比特的資料

為什麼不能保證檢測出多比特資料?

https://blog.csdn.net/qq_30866297/article/details/52104197--ECC原理

https://blog.csdn.net/nhczp/article/details/1700031

Parity與ECC的應用場景

在IC設計中RAM子產品輸出信号有Parity信号和ECC信号。

parity 信号表示RAM中寫入的資料data_in跟讀出的資料是否一緻。

ECC負責糾錯,能夠修正1bit的資料。

Parity是同一個data所有比特的異或,在data_in寫入的時候進行異或計算得到parity_in,同時寫入到RAM中,讀出data的得到data_out,對data_out進行異或計算得到parity_out,若parity_out與parity_in不相等,則表示資料有錯誤

https://blog.csdn.net/ysmz4/article/details/9309287

https://blog.csdn.net/nhczp/article/details/1700031

繼續閱讀