簡介,對比舊ECC記憶體技術的優點,設計原理,發展,
簡介
Chipkill記憶體最初是由20年前的IBM大型機發展過來的,Chipkill是為美國航空航天局(NASA)的"探路者"探測器赴火星探險而研製的。它是IBM公司為了彌補目前伺服器記憶體中ECC技術的不足而開發的,是一種新的ECC記憶體保護技術。
對比舊ECC記憶體技術的優點
ECC記憶體技術雖然可以同時檢測和糾正單一比特錯誤,但如果同時檢測出兩個以上比特的數據錯誤,則無能為力。但基於Intel處理器架構的伺服器的CPU性能以幾何級的倍數提高,而硬碟驅動器的性能同期只提高了5倍,因此為了保證正常運行,伺服器需要大量的記憶體來臨時保存從CPU上讀取的數據。這樣大的數據訪問量就導致單一記憶體晶片在每次訪問時通常要提供4(32位)或8(64位)位元組以上的數據。一次性讀取這么多數據,出現多位數據錯誤的可能性會大大提高,而ECC又不能糾正雙比特以上的錯誤,這樣就很可能造成全部比特數據的丟失,系統就會很快崩潰。IBM的Chipkill技術是利用記憶體的子結構方法來解決這一難題的。
設計原理
Chipkill記憶體子系統的設計原理是這樣的:在Chipkill技術支持下,單一記憶體晶片無論數據寬度是多少,只有一個給定的ECC識別碼,它的影響最多為一比特。舉個例子來說明,如果使用4比特寬的SDRAM,4比特中的每一位的奇偶性將分別組成不同的ECC識別碼,每個ECC單元可單獨用一個數據位來保存,也就是說這些識別碼分別保存在不同的記憶體空間中。因此,即使整個記憶體晶片出了故障,每個ECC單元也將最多出現一比特壞數據。出現這種情況完全可以通過ECC進行邏輯修復,從而保證了記憶體子系統的容錯性,保證了伺服器在出現故障時,有強大的自我恢復能力。Chipkill記憶體控制器所提供的存儲保護在概念上和具有校驗功能的磁碟陣列類似。在寫數據的時候,把數據寫到多個DIMM記憶體晶片上。這樣,每個DIMM所起的作用和存儲陣列相同。如果其中任何一個晶片失效了,它只影響到一個數據位元組的某一比特,因為其他比特存儲在另外的晶片上。出現錯誤後,記憶體控制器能夠從失效的晶片重新構造"失去"的數據,使得伺服器可以繼續正常工作。採用這種Chipkill記憶體技術的記憶體可以同時檢查並修復4個錯誤數據位,進一步提高了伺服器的實用性。