暫存式記憶體

暫存式記憶體(Error-correcting code memory,縮寫 ECC memory),即套用了能夠實現錯誤檢查和糾正技術的記憶體條。

基本介紹

  • 中文名:暫存式記憶體
  • 實現:錯誤檢查和糾正技術的記憶體
  • 另外一種奇偶校驗位技術
  • 數據單位:比特(bit)
技術原理,ECC記憶體誤區,備註,

技術原理

在ECC技術出現之前,記憶體中套用最多的另外一種錯誤檢查技術,就是奇偶校驗位技術。
數字電路中,最小的數據單位就是叫“比特(bit)”,也叫數據“位元”。“比特”也是記憶體中的最小單位,它是通過“1”和“0”來表示數據高、低電平信號的。在數字電路中8個連續的比特是一個位元組,不帶“奇偶校驗”的記憶體中的每個位元組只有8位,若它的某一位存儲出了錯誤,就會使其中存儲的相應數據發生改變而導致應用程式發生錯誤。
而帶有“奇偶校驗”的記憶體在每一位元組(8位)外又額外增加了一位用來進行錯誤檢測。比如一個位元組中存儲了某一數值(1、0、1、0、1、0、1、1),把這每一位相加起來(1+0+1+0+1+0+1+1=5)。對於偶校驗,若其結果是奇數,校驗位就定義為1,反之則為0;對於奇校驗則相反。當CPU返回讀取存儲的數據時,它會再次相加前8位中存儲的數據,計算結果是否與校驗位相一致。當CPU發現二者不同時就會試圖糾正這些錯誤。
但Parity有個缺點,當記憶體查到某個數據位有錯誤時,卻並不一定能確定在哪一個位,也就不一定能修正錯誤。所以帶有奇偶校驗記憶體的主要功能僅僅是“發現錯誤”,並能糾正部分簡單的錯誤。
Parity記憶體是通過在原來數據位的基礎上增加一個數據位來檢查當前8位數據的正確性,但隨著數據位的增加,Parity用來檢驗的數據位也成倍增加,就是說當數據位為16位時它需要增加2位用於檢查,當數據位為32位時則需增加4位,依此類推。特別是當數據量非常大時,數據出錯的幾率也就越大,對於只能糾正簡單錯誤的奇偶檢驗的方法就顯得力不從心了。正是基於這樣一種情況,一種新的記憶體技術應允而生了,這就是錯誤檢查和糾正(Forward error correction,ECC)。這種技術也是在原來的數據位上外加校驗位來實現的,不同的是兩者增加的方法不一樣,這也就導致了兩者的主要功能不太一樣。
它與Parity不同的是如果數據位是8位,則需要增加5位來進行ECC錯誤檢查和糾正,數據位每增加一倍,ECC只增加一位檢驗位,也就是說當數據位為16位時ECC位為6位,32位時ECC位為7位,數據位為64位時ECC位為8位,依此類推。在記憶體中ECC能夠容許錯誤,並可以將錯誤更正,使系統得以持續正常的操作,不致因錯誤而中斷,且ECC具有自動更正的能力,可以將Parity無法檢查出來的錯誤位查出並將錯誤修正。

ECC記憶體誤區

目前是一談到伺服器記憶體,大家都一致強調要買ECC記憶體,認為ECC記憶體速度快,其實是一種錯誤地認識。ECC記憶體成功之處並不是因為它速度快,而是因為它有特殊的糾錯能力,使伺服器保持穩定。
ECC本身並不是一種記憶體型號,也不是一種記憶體專用技術,它是一種廣泛套用於各種領域的計算機指令中,是一種指令糾錯技術,確保伺服器的正常運行。之所以說它並不是一種記憶體型號,那是因為並不是一種影響記憶體結構和存儲速度的技術。它可以套用到不同的記憶體類型之中,就象我們在前面講到的“奇偶校正”記憶體,它也不是一種記憶體,最開始套用這種技術的是EDO記憶體,現在的SD也有套用,而ECC記憶體主要是從SD記憶體開始得到廣泛套用,而新的DDR、RDRAM也有相應的套用,目前主流的ECC記憶體其實是一種SD記憶體。

備註

ECC記憶體還需要主機板支持,並在BIOS中進行相應的設定,目前只套用在大多數伺服器主機板

相關詞條

熱門詞條

聯絡我們