RAM的 Parity 與 ECC
一、概念介紹
1.1 Parity的概念
Parity,即奇偶校驗位,指在數據存儲和傳輸中,字節中額外增加一個比特位,用來檢驗錯誤。它常常是從兩個或更多的原始數據中產生一個冗余數據。一個字節數據的校驗位等于8bit數據異或即:p=x0^x1^x2^x3^x4^x5^x6^x7。此時,實際的數據傳輸序列為9bit:數據+奇偶校驗位。
Parity 這個概念可能最初接觸到可能是在使用串口調試助手時,它有個可選的奇偶校驗,就是為了指示數據傳輸過程中,發送方和接受方數據序列1的個數是否一致。如果不一致,說明數據在傳輸的鏈路中可能出錯了。
優點:
結構簡單,只需異或計算就可以實現,數據量小時實現代價小。
缺點:
1、不能修正錯誤:只知道校驗的數據中有部分比特發生錯誤,無法判斷哪幾個比特發送錯誤。
2、有偶數個比特位時,則無法判斷出錯。
3、數據位寬較大時實現代價大:如1024比特數據,需要256bit的校驗位。
1.2 ECC的概念
ECC是“Error Correcting Code”的簡寫,ECC是一種能夠實現“錯誤檢查和糾正”的技術。通過上面的分析我們知道Parity機制是通過在原來數據位的基礎上增加一個數據位來檢查當前8位數據的正確性,隨著數據位每增加8比特,檢驗位需要增加1比特。當數據量為256字節時,需要256個比特位,并且出錯的數據無法恢復。由此,一種存儲檢錯糾錯機制出現了,這就是ECC。ECC同樣通過增加校驗位來進行錯誤判斷,但是能夠進行錯誤糾正。
優點:
1):大量數據位實現代價低:8比特數據需要5個校驗位,256字節(256*8比特)的數據值需要5個列校驗位和11行校驗位
2)能夠糾正錯誤:在內存中ECC能夠容許錯誤,并可以將錯誤更正,使系統得以持續正常的操作,不致因錯誤而中斷
缺點:
1):只能修復1比特錯誤
當數據只有單比特錯誤時,ECC能夠進行錯誤修復;超過2比特的數據錯誤,將無法修復,ECC只能輸出多比特錯誤信號。
2):不保證能檢測超過2比特的錯誤。
超過2比特的錯誤不一定能檢測出來。
3):算法復雜,邏輯級數比較深,時序不好收斂。
二、應用場景
在IC設計中RAM模塊需要輸出信號有Parity信號和ECC信號。這樣能夠在一定程度上確保芯片的可測性以及可靠性。特別是在邏輯設計中使用的鏈表RAM或者控制RAM,如果這類RAM底層有壞塊而導致RAM讀出的數據某bit發生錯誤,可能會導致系統掛死。為了減少出現這種情況的風險,一般會對這類RAM做ECC計算邏輯,而像數據流RAM或者配置RAM可以只做Parity校驗。
事實上,在做Parity計算時,并不需要嚴格按照每字節增加1bit Parity校驗位,這樣對于大位寬的RAM而言,僅僅為了實現校驗錯誤,實現代價太大。因此,可以一個RAM做一個Parity校驗位。而對于ECC而言,一般針對位寬較小的RAM。
三、實現細節
Parity是同一個data所有比特的異或,在data_in寫入的時候進行異或計算得到parity_in,同時寫入到RAM中,讀出data的得到data_out,對data_out進行異或計算得到parity_out,若parity_out與parity_in(ram讀出數據所攜帶)不相等,則表示數據有錯誤。
此外,在RAM的寫側和讀側加入Parity計算邏輯時,特別是大位寬的RAM,則需要考慮reg2mem和mem2reg時序是否收斂的問題,一般情況下處理是寫側計算Parity后打拍后寫入,讀側打拍后再做Parity計算邏輯。
ECC負責糾錯,能夠修正1bit的數據。算法比較復雜,可以參考以下博客,不在敘述。
參考博客:
https://blog.csdn.net/wzsalan/article/details/79842220
https://blog.csdn.net/icxiaoge/article/details/79996456
責任編輯:xj
原文標題:IC基礎:RAM 的 Parity 與 ECC
文章出處:【微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
-
IC
+關注
關注
36文章
5907瀏覽量
175276 -
RAM
+關注
關注
8文章
1367瀏覽量
114545 -
ECC
+關注
關注
0文章
97瀏覽量
20536
原文標題:IC基礎:RAM 的 Parity 與 ECC
文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論