解析IBM服務器內存技術
IBMzuoweiquanqiufuwuqixingyedelingdaochangshang,buwanquanshiyikaotajishinianjianliqilaidepinpaiyoushi,gengzhongyaoshitazaifuwuqilingyuchangqichuyulingxiandiweidegexiangfuwuqijishu。suirantadefuwuqineicunjishubingbushiIBM的一項關鍵優勢,但這也不是隨便那個廠商都具備的(主要還是像IBM、HP和SUN三家巨頭才具有),同時它卻對整個服務器穩定性的保障起著至關重要的作用。正因如此,IBM的de服fu務wu器qi除chu了le具ju備bei更geng高gao的de性xing能neng外wai,另ling一yi個ge重zhong要yao賣mai點dian就jiu是shi具ju體ti要yao求qiu有you非fei常chang高gao的de穩wen定ding性xing,可ke以yi在zai各ge種zhong非fei常chang複fu雜za的de運yun算suan環huan境jing下xia永yong久jiu保bao持chi高gao度du的de穩wen定ding性xing,這zhe其qi中zhong本ben文wen所suo要yao介jie紹shao的deIBM三大內存技術功不可沒。
IBM的服務器三大內存技術包括:Chipkill內存、Memory ProteXion(內存保護)和Memory Mirroring(內存鏡像)。下麵分別予以介紹。
一、Chipkill內存技術
在服務嚦嚦領域,ECC幾乎是內存技術的代名詞,基本上所有品牌服務器都支持ECC技術,但要說明的是,ECC並不是最先進的內存技術。本文所要介紹的IBM三大內存技術就是三種更先進的內存技術。
Chipkill內存最初是由20年前的IBM大型機發展過來的,ChipKill最初是為美國航空航天局(NASA)的“探路者”探測器赴火星探險而研製。它是IBM公司為了解決通用服務器ECC內存技術的不足而開發的,是一種新的ECC內存保護技術(HP也有更新的ECC內存技術)。要注意,Chipkill內存隻是一種內存技術,並不是一種特殊的內存類型,所采用的隻需普通的內存即可,如原來的SD內存,現在的DDR內存均可。這樣就可大大節省用戶的投資,適應範圍更廣。
要正確理解IBM的Chipkill內存技術優勢,先要對通用的ECC內存技術有一個全麵的了解。因為IBM的Chipkill內存技術是在ECC技術基礎上的改進。
ECC的英文全稱是“ Error Checking and Correcting”(錯誤檢查和糾正),從這個名稱就可以看出它的主要功能就是“發現並糾正錯誤”。
奇偶校驗技術一樣,ECC糾錯技術也需要額外的空間來儲存校正碼,但其占用的位數跟數據的長度並非成線性關係。具體來說,它是以8位數據、5位ECC碼為基準,隨後每增加一個8位數據隻需另增加一位ECC碼即可。通俗地講就是,一個8位的數據產生的ECC碼要占用5位的空間,而一個16位數據ECC碼隻需在原來基礎上再增加一位,也就是6位;而32位的數據則隻需再在原來基礎增加一位,即7位的ECC碼即可,如此類推。
ECC碼將信息進行8比特位的編碼,采用這種方式可以恢複1比特的錯誤。每一次數據寫入內存的時候,ECC碼使用一種特殊的算法對數據進行計算,其結果稱為校驗位(check bits)。然後將所有校驗位加在一起的和是“校驗和”(checksum),xiaoyanheyushujuyiqicunfang。dangzhexieshujucongneicunzhongduchushi,caiyongtongyisuanfazaicijisuanxiaoyanhe,bingheqianmiandejisuanjieguoxiangbijiao,ruguojieguoxiangtong,shuomingshujushizhengquede,fanzhishuomingyoucuowu,ECC可以從邏輯上分離錯誤並通知係統。當隻出現單比特錯誤的時候,ECC可以把錯誤改正過來不影響係統運行。工作原理見圖1。
除了能夠檢查到並改正單比特錯誤之外,ECC碼還能檢查到(但不改正)單DRAM芯片上發生的任意2個隨機錯誤,並最多可以檢查到4比特的錯誤。當有多比特錯誤發生的時候,ECC內存會生成一個不可隱藏(non-maskable interrupt)的中斷(NMI),會中止係統運行,以避免出現數據惡化。
顯然ECC碼的長度跟數據的長度是成對數關係,當數據長度在64位以上的時候,ECC碼在空間占用上就會凸現優勢。此外,ECC校驗最大的優點是如果數據中有一位錯誤,它不但能發現而且可以對其更正,ECC校驗還可以發現2~4位錯誤(不能更正),當然這樣的情況出現的幾率是非常低的。但ECCmadexiaoyansuanfabiqiouxiaoyanfuzabushao,xuyaozhuanmendexinpianlaizhichi,suoyiputongdediannaozhubanbuyidingzhichi。erqieyinweixitongxuyaoshijianlaidengdaixiaoyandejieguo,suoyiECC校驗會降低係統速度2%-3%左右,但這小小的代價換來係統穩定性的大大提高可以說事非常值得的。
注意:ECC不是一種內存類型,隻是一種內存技術,不僅以前的EDO內存可以有、SD內存也可有,現在主流的DDR內存同樣可以有,所以在現在服務器配置中我們都可見到“512MB ECC DDR-400內存”之類的字樣。那是因為它並不是一種影響內存結構和存儲速度的技術,可以應用到不同的內存類型之中,就象我們經常到的“奇遇校正”內存技術一樣。
ECC內存技術雖然可以同時檢測和糾正單一比特錯誤,但如果同時檢測出兩個以上比特的數據有錯誤,則無能為力。但隨著基於Intel處理器架構服務器的CPU性能呈幾何級的倍數提高,而硬盤驅動器的性能同期隻提高了5倍。因此為了獲得足夠的性能,服務器需要大量的內存來臨時保存在CPU上讀取的數據。這樣大的數據訪問量就導致單一內存芯片上每次訪問時通常要提供4(32位)或8(64位)比特以上的數據。一次性讀取這麼多數據,出現多位數據錯誤的可能性會大大地提高,而ECC又不能糾正雙比特以上的錯誤,這樣就很可能造成全部比特數據的丟失,係統就很快崩潰了。IBM的Chipkill技術是利用內存的子結構方法來解決這一難題。
Chipkill內存子係統的設計原理是這樣的:在Chipkill技術支持下,單一內存芯片,無論數據寬度是多少,隻有一個給定的ECC識別碼,它的影響最多為一比特。舉個例子來說明的就是,如果使用4比特寬的SDRAM,4比特中的每一位奇偶性將分別組成不同的ECC識別碼,每個ECC單元可單獨用一個數據位來保存的,也就是說這些識別碼分別保存在不同的內存空間中。因此,即使整個內存芯片出了故障,每個ECC單元也將最多出現一比特壞數據。這種情況完全可以通過ECC邏輯修複,從而保證內存子係統的容錯性,保證了服務器在出現故障時,有強大的自我恢複能力。
Chipkill內存控製器所提供的存儲保護在概念上和具有校驗功能的磁盤陣列類似,在寫數據的時候,把數據寫到多個DIMM內存芯片上。這樣,每個DIMMsuoqidezuoyonghecunchuzhenliexiangtong。ruguoqizhongrenheyigexinpianshixiaole,tazhiyingxiangdaoyigeshujuzijiedemouyibite,yinweiqitabitecunchuzailingwaidexinpianshang。chuxiancuowuhou,neicunkongzhiqinenggoucongshixiaodexinpianzhongxingouzao“失去”的數據,使得服務器可以繼續正常工作。采用這種Chipkill內存技術的內存可以同時檢查並修複4個錯誤數據位,進一步提高服務器的實用性。
新型的第三代Chipkill內存技術已經集成到了IBM的X架構芯片組中,不必另外定製。與ECC技術相比,Chipkill內存技術更加有效,它提供對每個DIMM內存芯片糾正4比特錯誤的能力。如果內存發生錯誤,Chipkill內存將自動和平穩地讓出錯的內存芯片離線,而服務器繼續保持正常工作。
由於Chipkill內存技術是通過內存控製器提供的,所以可以在標準的ECC DIMM內存上實現,並且對於操作係統是透明的。目前Chipkill內存技術不僅在IBM的x係列服務器廣泛采用,而且通過授權許多國內外品牌服務器中使用,如寶德公司的64位新至強機架式服務器PR2520(該公司還有許多其它服務器也支持這一內存技術,如PT4050R和PR2520等)、方正公司的方正圓明MT500等。





閩公網安備 35020302001891號