天天看點

ecc

ECC是在奇偶校驗的基礎上發展而來。我們知道,在數字電路中,最小的資料機關就是叫“比特(bit)”,也叫資料“位”,“比特”也是記憶體中的最小機關,它是通過“1”和“0”來表示資料高、低電平信号。在數字電路中8個連續的比特是一個位元組(byte),在記憶體中不帶“奇偶校驗”的記憶體中的每個位元組隻有8位,若它的某一位存儲出了錯誤,就會使其中存儲的相應資料發生改變而導緻應用程式發生錯誤。而帶有“奇偶校驗”的記憶體在每一位元組(8位)外又額外增加了一位用來進行錯誤檢測。比如一個位元組中存儲了某一數值(1、0、1、0、1、0、1、1),把這每一位相加起來(1+0+1+0+1+0+1+1=5),5是奇數,如果采用奇校驗(即一個位元組(8位)加上檢錯的那1位共9位對應數字的和為奇數),那麼檢錯的那一位就應該是0(5+0=5才是奇數),如果采用偶校驗(即一個位元組(8位)加上檢錯的那1位共9位對應數字的和為偶數)那麼檢錯的那一位就應該是1(5+1=6才是偶數)當CPU傳回讀取存儲的資料時,它會再次相加前8位中存儲的資料,計算結果是否與校驗位相一緻。當CPU發現二者不同時就會嘗試糾正這些錯誤。但Parity的不足是:當記憶體查到某個資料位有錯誤時,不能準确定位存在錯誤的資料位,也就不一定能修正錯誤。

Parity記憶體是通過在原來資料位的基礎上增加一個校驗位來檢查資料位上8位資料的正确性,但随着資料位的增加校驗位也成倍增加,八位資料位需要一位校驗位,十六位資料位需要兩位校驗位。ECC也是在原來的資料位上外加校驗位來實作的。它與Parity不同的是如果資料位是8位,則需要增加5位來進行ECC錯誤檢查和糾正,資料位每增加一倍,ECC隻增加一位檢驗位,也就是說當資料位為16位時ECC位為6位,32位時ECC位為7位,資料位為64位時ECC位為8位,依此類推,資料位每增加一倍,ECC位隻增加一位。ECC有更多位數的校驗位,容錯能力更強。