定義
ECC校驗(yàn)是一種內(nèi)存糾錯(cuò)原理,它是比較先進(jìn)的內(nèi)存錯(cuò)誤檢查和更正的手段。ECC內(nèi)存即糾錯(cuò)內(nèi)存,簡(jiǎn)單的說(shuō),其具有發(fā)現(xiàn)錯(cuò)誤,糾正錯(cuò)誤的功能,一般多應(yīng)用在高檔臺(tái)式電腦/服務(wù)器及圖形工作站上,這將使整個(gè)電腦系統(tǒng)在工作時(shí)更趨于安全穩(wěn)定。
技術(shù)原理
內(nèi)存是一種電子器件,在其工作過(guò)程中難免會(huì)出現(xiàn)錯(cuò)誤,而對(duì)于穩(wěn)定性要求高的用戶來(lái)說(shuō),內(nèi)存錯(cuò)誤可能會(huì)引起致命性的問(wèn)題。內(nèi)存錯(cuò)誤根據(jù)其原因還可分為硬錯(cuò)誤和軟錯(cuò)誤。硬件錯(cuò)誤是由于硬件的損害或缺陷造成的,因此數(shù)據(jù)總是不正確,此類錯(cuò)誤是無(wú)法糾正的;軟錯(cuò)誤是隨機(jī)出現(xiàn)的,例如在內(nèi)存附近突然出現(xiàn)電子干擾等因素都可能造成內(nèi)存軟錯(cuò)誤的發(fā)生。
為了能檢測(cè)和糾正內(nèi)存軟錯(cuò)誤,在ECC技術(shù)出現(xiàn)之前,首先出現(xiàn)的是內(nèi)存“奇偶校驗(yàn)(Parity)”。內(nèi)存中最小的單位是比特,也稱為“位(bit)”,位有只有兩種狀態(tài)分別以1和0來(lái)標(biāo)示,每8個(gè)連續(xù)的比特叫做一個(gè)字節(jié)(byte)。不帶奇偶校驗(yàn)的內(nèi)存每個(gè)字節(jié)只有8位,如果其某一位存儲(chǔ)了錯(cuò)誤的值,就會(huì)導(dǎo)致其存儲(chǔ)的相應(yīng)數(shù)據(jù)發(fā)生變化,進(jìn)而導(dǎo)致應(yīng)用程序發(fā)生錯(cuò)誤。而奇偶校驗(yàn)就是在每一字節(jié)(8位)之外又增加了一位作為錯(cuò)誤檢測(cè)位。在某字節(jié)中存儲(chǔ)數(shù)據(jù)之后,在其8個(gè)位上存儲(chǔ)的數(shù)據(jù)是固定的,因?yàn)槲恢荒苡袃煞N狀態(tài)1或0,假設(shè)存儲(chǔ)的數(shù)據(jù)用位標(biāo)示為1、1、1、0、0、1、0、1,那么把每個(gè)位相加(1+1+1+0+0+1+0+1=5),結(jié)果是奇數(shù)。對(duì)于偶校驗(yàn),校驗(yàn)位就定義為1,反之則為0;對(duì)于奇校驗(yàn),則相反。當(dāng)CPU讀取存儲(chǔ)的數(shù)據(jù)時(shí),它會(huì)再次把前8位中存儲(chǔ)的數(shù)據(jù)相加,計(jì)算結(jié)果是否與校驗(yàn)位相一致。從而一定程度上能檢測(cè)出內(nèi)存錯(cuò)誤,奇偶校驗(yàn)只能檢測(cè)出錯(cuò)誤而無(wú)法對(duì)其進(jìn)行修正,同時(shí)雖然雙位同時(shí)發(fā)生錯(cuò)誤的概率相當(dāng)?shù)停媾夹r?yàn)卻無(wú)法檢測(cè)出雙位錯(cuò)誤。
通過(guò)上面的分析我們知道Parity內(nèi)存是通過(guò)在原來(lái)數(shù)據(jù)位的基礎(chǔ)上增加一個(gè)數(shù)據(jù)位來(lái)檢查當(dāng)前8位數(shù)據(jù)的正確性,但隨著數(shù)據(jù)位的增加Parity用來(lái)檢驗(yàn)的數(shù)據(jù)位也成倍增加,就是說(shuō)當(dāng)數(shù)據(jù)位為16位時(shí)它需要增加2位用于檢查,當(dāng)數(shù)據(jù)位為32位時(shí)則需增加4位,依此類推。特別是當(dāng)數(shù)據(jù)量非常大時(shí),數(shù)據(jù)出錯(cuò)的幾率也就越大,對(duì)于只能糾正簡(jiǎn)單錯(cuò)誤的奇偶檢驗(yàn)的方法就顯得力不從心了,正是基于這樣一種情況,一種新的內(nèi)存技術(shù)應(yīng)允而生了,這就是ECC(錯(cuò)誤檢查和糾正),這種技術(shù)也是在原來(lái)的數(shù)據(jù)位上外加校驗(yàn)位來(lái)實(shí)現(xiàn)的。不同的是兩者增加的方法不一樣,這也就導(dǎo)致了兩者的主要功能不太一樣。它與Parity不同的是如果數(shù)據(jù)位是8位,則需要增加5位來(lái)進(jìn)行ECC錯(cuò)誤檢查和糾正,數(shù)據(jù)位每增加一倍,ECC只增加一位檢驗(yàn)位,也就是說(shuō)當(dāng)數(shù)據(jù)位為16位時(shí)ECC位為6位,32位時(shí)ECC位為7位,數(shù)據(jù)位為64位時(shí)ECC位為8位,依此類推,數(shù)據(jù)位每增加一倍,ECC位只增加一位。總之,在內(nèi)存中ECC能夠容許錯(cuò)誤,并可以將錯(cuò)誤更正,使系統(tǒng)得以持續(xù)正常的操作,不致因錯(cuò)誤而中斷,且ECC具有自動(dòng)更正的能力,可以將Parity無(wú)法檢查出來(lái)的錯(cuò)誤位查出并將錯(cuò)誤修正。
示例
ECC(Error Checking and Correcting,錯(cuò)誤檢查和糾正)內(nèi)存,它同樣也是在數(shù)據(jù)位上額外的位存儲(chǔ)一個(gè)用數(shù)據(jù)加密的代碼。當(dāng)數(shù)據(jù)被寫入內(nèi)存,相應(yīng)的ECC代碼與此同時(shí)也被保存下來(lái)。當(dāng)重新讀回剛才存儲(chǔ)的數(shù)據(jù)時(shí),保存下來(lái)不ECC代碼就會(huì)和讀數(shù)據(jù)時(shí)產(chǎn)生的ECC代碼做比較。如果兩個(gè)代碼不相同,他們則會(huì)被解碼,以確定數(shù)據(jù)中的哪一位是不正確的。然后這一錯(cuò)誤位會(huì)被拋棄,內(nèi)存控制器則會(huì)釋放出正確的數(shù)據(jù)。被糾正的數(shù)據(jù)很少會(huì)被放回內(nèi)存。假如相同的錯(cuò)誤數(shù)據(jù)再次被讀出,則糾正過(guò)程再次被執(zhí)行。重寫數(shù)據(jù)會(huì)增加處理過(guò)程的開銷,這樣則會(huì)導(dǎo)致系統(tǒng)性能的明顯降低。如果是隨機(jī)事件而非內(nèi)存的缺點(diǎn)產(chǎn)生的錯(cuò)誤,則這一內(nèi)存地址的錯(cuò)誤數(shù)據(jù)會(huì)被再次寫入的其他數(shù)據(jù)所取代。
審核編輯:符乾江
-
嵌入式
+關(guān)注
關(guān)注
5096文章
19189瀏覽量
308035 -
ECC
+關(guān)注
關(guān)注
0文章
97瀏覽量
20663
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論