工作原理 

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

顯然 ECC 碼的長度跟數(shù)據(jù)的長度是成對數(shù)關(guān)系,當(dāng)數(shù)據(jù)長度在 64 位以上的時(shí)候,ECC 碼在空間占用上就會(huì)凸現(xiàn)優(yōu)勢。此外,ECC 校驗(yàn)最大的優(yōu)點(diǎn)是如果數(shù)據(jù)中有一位錯(cuò)誤,它 不但能發(fā)現(xiàn)而且可以對其更正,ECC 校驗(yàn)還可以發(fā)現(xiàn) 2~4 位錯(cuò)誤(不能更正),當(dāng)然這樣 的情況出現(xiàn)的幾率是非常低的。但 ECC 碼的校驗(yàn)算法比奇偶校驗(yàn)復(fù)雜不少,需要專門的芯 片來支持,所以普通的電腦主板不一定支持。而且因?yàn)橄到y(tǒng)需要時(shí)間來等待校驗(yàn)的結(jié)果,所 以 ECC 校驗(yàn)會(huì)降低系統(tǒng)速度 2%-3% 左右,但這小小的代價(jià)換來系統(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)存”之類的字樣。那是因?yàn)樗⒉皇且环N影響內(nèi)存結(jié)構(gòu)和存儲(chǔ)速度 的技術(shù),可以應(yīng)用到不同的內(nèi)存類型之中,就象我們經(jīng)常到的“奇遇校正”內(nèi)存技術(shù)一樣。 ECC 內(nèi)存技術(shù)雖然可以同時(shí)檢測和糾正單一比特錯(cuò)誤,但如果同時(shí)檢測出兩個(gè)以上比 特的數(shù)據(jù)有錯(cuò)誤,則無能為力。但隨著基于 Intel 處理器架構(gòu)服務(wù)器的 CPU 性能呈幾何級的 倍數(shù)提高,而硬盤驅(qū)動(dòng)器的性能同期只提高了 5 倍。因此為了獲得足夠的性能,服務(wù)器需要 大量的內(nèi)存來臨時(shí)保存在 CPU 上讀取的數(shù)據(jù)。這樣大的數(shù)據(jù)訪問量就導(dǎo)致單一內(nèi)存芯片上 每次訪問時(shí)通常要提供 4(32 位)或 8(64 位)比特以上的數(shù)據(jù)。一次性讀取這么多數(shù)據(jù), 出現(xiàn)多位數(shù)據(jù)錯(cuò)誤的可能性會(huì)大大地提高,而 ECC 又不能糾正雙比特以上的錯(cuò)誤,這樣就 很可能造成全部比特?cái)?shù)據(jù)的丟失,系統(tǒng)就很快崩潰了。IBM 的 Chipkill 技術(shù)是利用內(nèi)存的子 結(jié)構(gòu)方法來解決這一難題。

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

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

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

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

分享到

zhaohang

相關(guān)推薦