ECC(Error Checking and Correcting,錯誤檢查和糾正)記憶體,它同樣也是在資料位上額外的位儲存一個用資料加密的程式碼。當資料被寫入記憶體,相應的ECC程式碼與此同時也被儲存下來。當重新讀回剛才儲存的資料時,儲存下來的ECC程式碼就會和讀資料時產生的ECC程式碼做比較。如果兩個程式碼不相同,他們則會被解碼,以確定資料中的那一位是不正確的。然後這一錯誤位會被拋棄,記憶體控制器則會釋放出正確的資料。被糾正的資料很少會被放回記憶體。假如相同的錯誤資料再次被讀出,則糾正過程再次被執行。重寫資料會增加處理過程的開銷,這樣則會導致系統性能的明顯降低。如果是隨機事件而非記憶體的缺點產生的錯誤,則這一記憶體地址的錯誤資料會被再次寫入的其他資料所取代。
ECC校驗是什麼:
ECC記憶體即糾錯記憶體,簡單的說,其具有發現錯誤,糾正錯誤的功能,一般多應用在高檔臺式電腦/伺服器及圖形工作站上,這將使整個電腦系統在工作時更趨於安全穩定。
記憶體是一種電子器件,在其工作過程中難免會出現錯誤,而對於穩定性要求高的使用者來說,記憶體錯誤可能會引起致命性的問題。記憶體錯誤根據其原因還可分為硬錯誤和軟錯誤。硬體錯誤是由於硬體的損害或缺陷造成的,因此資料總是不正確,此類錯誤是無法糾正的;軟錯誤是隨機出現的,例如在記憶體附近突然出現電子干擾等因素都可能造成記憶體軟錯誤的發生。
為了能檢測和糾正記憶體軟錯誤,首先出現的是記憶體“奇偶校驗”。記憶體中最小的單位是位元,也稱為“位”,位有隻有兩種狀態分別以1和0來標示,每8個連續的位元叫做一個位元組(byte)。不帶奇偶校驗的記憶體每個位元組只有8位,如果其某一位儲存了錯誤的值,就會導致其儲存的相應資料發生變化,進而導致應用程式發生錯誤。而奇偶校驗就是在每一位元組(8位)之外又增加了一位作為錯誤檢測位。在某位元組中儲存資料之後,在其8個位上儲存的資料是固定的,因為位只能有兩種狀態1或0,假設儲存的資料用位標示為1、1、1、0、0、1、0、1,那麼把每個位相加(1+1+1+0+0+1+0+1=5),結果是奇數。對於偶校驗,校驗位就定義為1,反之則為0;對於奇校驗,則相反。當CPU讀取儲存的資料時,它會再次把前8位中儲存的資料相加,計算結果是否與校驗位相一致。從而一定程度上能檢測出記憶體錯誤,奇偶校驗只能檢測出錯誤而無法對其進行修正,同時雖然雙位同時發生錯誤的機率相當低,但奇偶校驗卻無法檢測出雙位錯誤。
ECC(Error Checking and Correcting,錯誤檢查和糾正)記憶體,它同樣也是在資料位上額外的位儲存一個用資料加密的程式碼。當資料被寫入記憶體,相應的ECC程式碼與此同時也被儲存下來。當重新讀回剛才儲存的資料時,儲存下來的ECC程式碼就會和讀資料時產生的ECC程式碼做比較。如果兩個程式碼不相同,他們則會被解碼,以確定資料中的那一位是不正確的。然後這一錯誤位會被拋棄,記憶體控制器則會釋放出正確的資料。被糾正的資料很少會被放回記憶體。假如相同的錯誤資料再次被讀出,則糾正過程再次被執行。重寫資料會增加處理過程的開銷,這樣則會導致系統性能的明顯降低。如果是隨機事件而非記憶體的缺點產生的錯誤,則這一記憶體地址的錯誤資料會被再次寫入的其他資料所取代。
使用ECC校驗的記憶體,會對系統的效能造成不小的影響,不過這種糾錯對伺服器等應用而言是十分重要的,帶ECC校驗的記憶體價格比普通記憶體要昂貴許多。