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