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