對PC伺服器記憶體可靠性功能的深度探討
近年來,有一個潛在的難題一直困擾電子設備製造商,那就是所謂的「軟錯誤」(Soft Error)。有別於硬體損壞的「硬錯誤」(Hard Error),軟錯誤造成的主因,主要是構成地球低強度背景輻射的帶電粒子所引起,這些帶電粒子有可能來自宇宙射線,也有可能來自大多數材料中的微量放射性元素,這些都可能會干擾利用粒子工作的晶片以及電子設備,尤其是半導體元件。
如果帶電粒子撞擊儲存單元導致位元翻轉,就會造成資料錯誤。另外,由於半導體技術的持續發展,記憶體晶片的密度越來越高,而且為了追求更高的效能,也有更高的運作時脈。換言之,記憶體發生軟錯誤的機率隨著技術的發展而持續成長。
那麼,會有人這樣問:早期系統就開始支援Parity Check,而現在不少系統都有支援記憶體ECC機制,那不就沒問題了嗎?很遺憾,答案是否定的。除了記憶體密度越來越高,記憶體的資料匯流排寬度也越來越寬,但是既有的ECC演算法多半是Distance 4的Extended Hamming Code,可以修正1位元錯誤、偵測2位元錯誤,如果發生多位元(Multibit)的錯誤,ECC就力有未逮。
IBM就認為目前採用ECC,效果還比十年前的Parity Check還糟。當然,也有不少學者和廠商研究出改良的ECC演算法(如Compaq所提出的Bit Steering),不過,這些方法多半都遇到不易實作、成本過高的問題,也會對記憶體的效能造成不利的影響。近年來,由於PC伺服器的逐漸普及,更讓問題日趨嚴重,因為PC伺服器都以低成本作為訴求,很難導入昔日大型主機(Main Frame)所使用的昂貴手段,加上無遠弗屆的網路成為主要的運算環境,企業所使用的網路伺服器幾乎永不停機,更讓問題越趨複雜。對付記憶體軟錯誤:Chipkill
既然硬碟陣列可以透過RAID來達成資料安全性,那麼為何不把RAID的觀念導入於主記憶體系統的設計之中?這就產生了RAID-M(Redundant Array of Inexpensive DRAM for Memory)的觀念。
IBM近年來在PC伺服器所推廣的Chipkill,就是這樣的產物。基本上,就創造者IBM的定義,Chipkill僅為一個抽象的觀念,並沒有專屬的實作方式。目前最常使用的方法,稱為Bit Scattering,其觀念相當的簡單:既然目前常用的ECC演算法無法對超過1位元的錯誤進行糾正,那麼我們為何不索性「分而治之」,讓超過1位元的錯誤不會出現?假設今天有4條記憶體模組,而記憶體模組上的顆粒資料匯流排寬度為4位元,我們就可以將存放ECC偵錯碼的額外顆粒上那4條資料線各自分開,和另外3條模組的資料線組成4位元寬度,這樣就可以避免超過1位元的錯誤發生。
目前不少PC平臺的高階系統晶片組,如ServerWorks和英特爾的部分產品,就已經支援Chipkill,也讓PC伺服器有著更好的記憶體安全性。不過,有些伺服器廠商需要專用的記憶體模組才能提供Chipkill,這樣增加了不少投資成本。如果記憶體模組損毀了該怎麼辦?
那麼,對於整條記憶體模組、甚至記憶體通道損毀,我們又有何種解決方案?繼RASUM後,英特爾在今年春季IDF發表了RASUM II規範,這次強化的重點就在於記憶體的安全性及可靠性。這也足以證明,記憶體系統已經逐漸得到伺服器廠商的重視,已經不再是被長期忽略的問題。
過去中高階伺服器經常實作的記憶體安全功能是DIMM Sparing,原理相當的簡單:如果當記憶體控制器發現某條DIMM所發生的錯誤已經超出了臨界值(Threshold),就會開始啟動下一條沒有資料的備援DIMM,同時對出問題的DIMM及備援DIMM寫入資料。當記憶體替補引擎(Scrub Engine)確定所有記憶體位址的資料均全部寫入備援DIMM,就將出問題的DIMM予以關閉,讓備援DIMM取而代之。
不過,這種設計並不是沒有問題的,如果連續兩條DIMM都出狀況了,記憶體資料的安全便無法得到保障。也許會有人這樣問:目前雙通道記憶體控制器已經如此普及,如果可以讓兩條記憶體通道相互Mirror,不就高枕無憂了嗎?答案也是否定的,因為如果只實作相同順序的DIMM相互Mirror,當兩條DIMM一起發生狀況(例如兩條通道的第一條DIMM),問題依然存在。
英特爾將於未來Xeon平臺實作的Memory Mirroring就可以解決這個問題,透過交叉Mirror的方式,無論是接連兩條DIMM損毀、甚至一整條記憶體通道失效,依然可以維持記憶體的正常運作。更重要的是,這種方法可以有效利用雙通道架構下的記憶體頻寬。目前ServerWorks最高階的GC-HE晶片組,就同時支援這三種技術。雖然所費不貲,卻值得投資
記憶體容量及密度隨著摩爾定律所預言的曲線而持續成長,發生錯誤的機率越來越高,提升記憶體安全性已經是日益迫切的工作,也成為伺服器產業界關心的焦點。但是,天下沒有白吃的午餐,投資成本的增加是絕對免不了的。我們相信,未來的伺服器將會對此投以更大的關注,企業界應該以更嚴肅的態度看待記憶體資料安全性的議題。Chipkill的定義
雖然Chipkill一直沒有一個精確的定義,一般而言,只要在DIMM上某顆記憶體晶片壞掉時,依然可以承受1位元的軟錯誤。不過,某些晶片組雖然號稱支援Chipkill,但是僅能承受某顆記憶體晶片發生損毀,接連發生的軟錯誤就只能偵測而無法修正,這樣資料的可靠性就會比較差。文⊙劉人豪
熱門新聞
2025-12-12
2025-12-12
2025-12-12
2025-12-12
2025-12-12
2025-12-12