工作原理 

除了能夠檢查到并改正單比特錯誤之外,ECC 碼還能檢查到(但不改正)單 DRAM 芯 片上發(fā)生的任意 2 個隨機錯誤, 并最多可以檢查到 4 比特的錯誤。 當有多比特錯誤發(fā)生的時 候,ECC 內存會生成一個不可隱藏(non-maskable interrupt)的中斷(NMI),會中止系統(tǒng) 運行,以避免出現(xiàn)數(shù)據(jù)惡化。

顯然 ECC 碼的長度跟數(shù)據(jù)的長度是成對數(shù)關系,當數(shù)據(jù)長度在 64 位以上的時候,ECC 碼在空間占用上就會凸現(xiàn)優(yōu)勢。此外,ECC 校驗最大的優(yōu)點是如果數(shù)據(jù)中有一位錯誤,它 不但能發(fā)現(xiàn)而且可以對其更正,ECC 校驗還可以發(fā)現(xiàn) 2~4 位錯誤(不能更正),當然這樣 的情況出現(xiàn)的幾率是非常低的。但 ECC 碼的校驗算法比奇偶校驗復雜不少,需要專門的芯 片來支持,所以普通的電腦主板不一定支持。而且因為系統(tǒng)需要時間來等待校驗的結果,所 以 ECC 校驗會降低系統(tǒng)速度 2%-3% 左右,但這小小的代價換來系統(tǒng)穩(wěn)定性的大大提高可以 說事非常值得的。

注意:ECC 不是一種內存類型,只是一種內存技術,不僅以前的 EDO 內存可以有、SD 內存也可有,現(xiàn)在主流的 DDR 內存同樣可以有,所以在現(xiàn)在服務器配置中我們都可見到 “512MB ECC DDR-400 內存”之類的字樣。那是因為它并不是一種影響內存結構和存儲速度 的技術,可以應用到不同的內存類型之中,就象我們經(jīng)常到的“奇遇校正”內存技術一樣。 ECC 內存技術雖然可以同時檢測和糾正單一比特錯誤,但如果同時檢測出兩個以上比 特的數(shù)據(jù)有錯誤,則無能為力。但隨著基于 Intel 處理器架構服務器的 CPU 性能呈幾何級的 倍數(shù)提高,而硬盤驅動器的性能同期只提高了 5 倍。因此為了獲得足夠的性能,服務器需要 大量的內存來臨時保存在 CPU 上讀取的數(shù)據(jù)。這樣大的數(shù)據(jù)訪問量就導致單一內存芯片上 每次訪問時通常要提供 4(32 位)或 8(64 位)比特以上的數(shù)據(jù)。一次性讀取這么多數(shù)據(jù), 出現(xiàn)多位數(shù)據(jù)錯誤的可能性會大大地提高,而 ECC 又不能糾正雙比特以上的錯誤,這樣就 很可能造成全部比特數(shù)據(jù)的丟失,系統(tǒng)就很快崩潰了。IBM 的 Chipkill 技術是利用內存的子 結構方法來解決這一難題。

Chipkill 內存子系統(tǒng)的設計原理是這樣的:在 Chipkill 技術支持下,單一內存芯片,無 論數(shù)據(jù)寬度是多少,只有一個給定的 ECC 識別碼,它的影響最多為一比特。舉個例子來說 明的就是,如果使用 4 比特寬的 SDRAM,4 比特中的每一位奇偶性將分別組成不同的 ECC 識別碼,每個 ECC 單元可單獨用一個數(shù)據(jù)位來保存的,也就是說這些識別碼分別保存在不 同的內存空間中。因此,即使整個內存芯片出了故障,每個 ECC 單元也將最多出現(xiàn)一比特 壞數(shù)據(jù)。這種情況完全可以通過 ECC 邏輯修復,從而保證內存子系統(tǒng)的容錯性,保證了服 務器在出現(xiàn)故障時,有強大的自我恢復能力。

Chipkill 內存控制器所提供的存儲保護在概念上和具有校驗功能的磁盤陣列類似,在寫 數(shù)據(jù)的時候,把數(shù)據(jù)寫到多個 DIMM 內存芯片上。這樣,每個 DIMM 所起的作用和存儲陣 列相同。如果其中任何一個芯片失效了,它只影響到一個數(shù)據(jù)字節(jié)的某一比特,因為其他比 特存儲在另外的芯片上。 出現(xiàn)錯誤后, 內存控制器能夠從失效的芯片重新構造“失去”的數(shù)據(jù), 使得服務器可以繼續(xù)正常工作。 采用這種 Chipkill 內存技術的內存可以同時檢查并修復 4 個 錯誤數(shù)據(jù)位,進一步提高服務器的實用性。

新型的第三代 Chipkill 內存技術已經(jīng)集成到了 IBM 的 X 架構芯片組中, 不必另外定制。 與 ECC 技術相比,Chipkill 內存技術更加有效,它提供對每個 DIMM 內存芯片糾正 4 比特 錯誤的能力。如果內存發(fā)生錯誤,Chipkill 內存將自動和平穩(wěn)地讓出錯的內存芯片離線,而 服務器繼續(xù)保持正常工作。

由于 Chipkill 內存技術是通過內存控制器提供的,所以可以在標準的 ECC DIMM 內存 上實現(xiàn),并且對于操作系統(tǒng)是透明的。目前 Chipkill 內存技術不僅在 IBM 的 x 系列服務器 廣泛采用,而且通過授權許多國內外品牌服務器中使用,如寶德公司的 64 位新至強機架式 服務器 PR2520(該公司還有許多其它服務器也支持這一內存技術,如 PT4050R 和 PR2520 等)、方正公司的方正圓明 MT500 等。

分享到

zhaohang

相關推薦