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