雖然長期備受忽略,但已成為日益迫切的威脅
去年九月,美國維吉尼亞理工大學(Virginia Tech)與Apple、Cisco、Lieber、Mellanox等廠商合作,採用1100臺PowerMac G5構建Terascale Supercluster超級電腦,理論運算效能排名在Top 500中排名第三,僅次於NEC的Earth Simulator及Los Alamos國家實驗室的ASCI Q Alpha Cluster。
不過,這臺超級電腦卻引起了相當大的爭議,因為PowerMac G5並未提供硬體ECC等記憶體偵錯機制。維吉尼亞理工大學宣稱說,他們所採用的演算法可以提供軟體容錯,但據信這對系統效能會有相當程度的負面影響。日前國外媒體報導,維吉尼亞理工大學將採用Apple新推出的Xserve G5取代既有的PowerMac G5,一般外界相信,記憶體ECC功能是決定更換的主要因素。
另外一件值得注意的新聞,則是去年一位美國普林斯頓(Princeton)大學的研究生,發現透過燈光、以能量改變記憶體資料、進而破解Java及.NET虛擬機器的方法。他表示,當處理器和記憶體的速度越來越快,變更位元的所需能量越小,所以這種方法也會越來越有用。當初設計虛擬機器的人,卻都沒有想到這種破解方法。
那麼,這兩則新聞的背後,究竟隱藏了什麼被忽略的事實?答案就是:主記憶體內的資料,並不是絕對的安全。事實上,出錯的機率是很高的,而且高到難以置信的程度。這個問題,絕對值得企業重視。水漲船高的記憶體容量所造成的問題
近年來,有一個潛在的難題一直困擾電子設備製造商,那就是所謂的「軟錯誤」(Soft Error)。有別於硬體損壞的「硬錯誤」(Hard Error),軟錯誤造成的主因,主要是構成地球低強度背景輻射的帶電粒子所引起,這些帶電粒子有可能來自宇宙射線,也有可能來自大多數材料中的微量放射性元素,這些都可能會干擾利用粒子工作的晶片以及電子設備,尤其是半導體元件。如果帶電粒子撞擊儲存單元導致位元翻轉,就會造成資料錯誤。
另外,由於半導體技術的持續發展,記憶體晶片的密度越來越高,而且為了追求更高的效能,也有更高的運作時脈。換言之,記憶體發生軟錯誤的機率隨著技術的發展而持續成長。根據IBM過去的實驗結果顯示,在海平面高度,記憶體因為宇宙射線而發生軟錯誤的錯誤率(SER,Soft Error Rate)約在5000FIT(Failures In Time,10億小時中發生錯誤的次數),但這是數年前的數據,現在的記憶體密度更高,問題可能更大。當然,我們可能將電腦藏在50呎以下的地底,就可以解決這樣的問題,但是這在現實中是幾乎不可能達成的。
現在,我們就可以計算維吉尼亞理工大學Terascale Supercluster超級電腦發生軟錯誤的機率。根據Infineon的研究數據,目前256Mbit記憶體顆粒的SER約為500FIT,在最差狀況下,約為900FIT。每臺PowerMac G5都安裝4GB主記憶體,皆為512Mbit顆粒,代表每臺電腦有64顆記憶體顆粒,1100臺電腦就是70400顆記憶體。我們將512Mbit顆粒的SER估計為1000FIT,就可以推估出每小時會發生0.0704次的軟錯誤,相當於每14.2小時就發生一次,這不可謂不驚人。對超級電腦如此,那對終年不關機、持續運作的伺服器而言,也是一體適用。現有ECC的不足
那麼,會有人這樣問:早期系統就開始支援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)及超級電腦所使用的昂貴手段,加上無遠弗屆的網路成為主要的運算環境,企業所使用的網路伺服器幾乎永不停機,更讓問題越趨複雜。改良的解決方案:導入RAID的觀念
我們還有什麼解決方案?其實,既然硬碟陣列可以透過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的記憶體控制器成本依然相當高昂,要普及至工作站等級的系統晶片組仍然需要一段時間。
更徹底的方法是:直接把記憶體系統實作成RAID的型式。以Alpha 21364(EV-7)為例,除了既有的4條記憶體通道外,第5條通道就做為Memory RAID之用。另外,部分伺服器廠商在中高階IA-32伺服器實作記憶體鏡射備分機制(Memory Mirroring),如果記憶體發生損毀或錯誤就可直接切換,維持伺服器的正常運作,提供更好的資料安全性。當然,這種方式的成本更高,雖然目前已經有高階PC系統晶片組支援(如ServerWorks的GC-HE),但短期內很難普及至一般的PC伺服器。記憶體安全性將日益重要
從IBM發表ChipKill技術以來,記憶體安全性的議題已經逐漸被伺服器廠商所注意,但是卻一直沒有引起市場足夠的重視。對於服務永不停頓的企業網路伺服器而言,記憶體的資料安全性其實非常的重要,尤其對低成本的PC伺服器而言,更是如此。在未來,相信除了ChipKill以外,會有以雨後春筍之勢而誕生的新技術,替企業伺服器提供更高的可靠性及穩定性。文⊙劉人豪
熱門新聞
2025-12-12
2025-12-12
2025-12-12
2025-12-12
2025-12-12
2025-12-12