工作原理 

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

顯然 ECC 碼的長度跟數(shù)據(jù)的長度是成對數(shù)關(guān)系,當數(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 碼的校驗算法比奇偶校驗復(fù)雜不少,需要專門的芯 片來支持,所以普通的電腦主板不一定支持。而且因為系統(tǒng)需要時間來等待校驗的結(jié)果,所 以 ECC 校驗會降低系統(tǒng)速度 2%-3% 左右,但這小小的代價換來系統(tǒng)穩(wěn)定性的大大提高可以 說事非常值得的。

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

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

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

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

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

分享到

zhaohang

相關(guān)推薦