隨著服務器內存容量需求的不斷增長,對內存可靠性的要求也必須隨之不斷提高,道理很簡單,越多的內存被使用,內存存取錯誤的可能性就越容易發生。于是,關于內存可靠性的各種保障措施也日益受到重視。
下面我們一起探討一下關于內存的數據保護技術:
奇偶校驗技術
我們知道,一般的個人計算機上也有使用內存的檢錯技術,稱為奇偶校驗(Parity Checking),奇偶校驗實現的方式比較簡單,即在傳送字符的各位之外,再傳送1位奇/偶校驗位,可采用奇校驗或偶校驗。這種技術能夠檢測出信息傳輸過程中的部分誤碼(1位誤碼能檢出,2位及2位以上誤碼不能檢出),由于其實現簡單,在中低端領域到了廣泛使用。同時,由于其檢錯方式過于簡單,因此它只能發現單比特錯誤,而且不能糾錯,在發現錯誤后,只能要求重發。
ECC技術
而服務器內存中,由于對可靠性的要求要高得多,所以都采用ECC技術。ECC技術除了可以檢測并糾正單比特錯誤外,還可以檢測出2~4比特的錯誤。當發現多比特錯誤時,ECC內存產生一個不可屏蔽的中斷,通知系統數據出現錯誤。在ECC編碼方案中,每個數據塊有一個8比特的校驗用的數據,用于糾正單比特的錯誤。每次把數據寫入內存時,ECC采用特殊的算法生成校驗碼。該算法把所有的校驗和累加起來,得到一個校驗和(Checksum),該校驗和與數據存儲在一起。當從內存中讀取數據的時候,需要重新計算校驗和,并且與原來的校驗和進行比較。如果計算出的校驗和與原來的校驗和相等,那么說明存儲的數據是正確的,可以繼續下一步工作;如果與原來的校驗和不相等,那么說明存儲的數據是錯誤的。這時,將把出現錯誤的數據隔離起來,并且報告給系統。如果出現的是單比特錯誤,那么可以對其進行糾正,輸出正確的數據,系統繼續正常工作。
高級ECC技術
ECC內存對于許多應用可以提供充分的保護,但是,隨著內存容量的增加,ECC內存保護的效率開始降低。為了解決這一問題,HP公司開發了高級ECC內存技術,并得到廣泛應用。標準的ECC內存在從DIMM內存讀取數據時,只能發現單比特的錯誤,而高級ECC內存可以發現DRAM內存芯片中的多比特錯誤,從而可以糾正DRAM內存芯片的問題。在高級ECC內存技術中,有4比特的存儲設備,每個芯片對應一個數據字中的4位。這4比特都和一個ECC設備相連,因此如果一個芯片的數據發生錯誤,則產生4個獨立的單比特錯誤,從而可以得到糾正。
因為每個ECC設備可以糾正單比特的錯誤,所以高級ECC技術實際上能夠糾正發生在同一個DRAM芯片中的多比特錯誤。因此,高級ECC技術可以提供很好的內存數據保護。
內存熱備技術
這是一種基于冗余備份思想的技術,在進行內存熱備時,做熱備份的內存在正常情況下是不使用的,也就是說系統是看不到這部分內存容量的。每個內存通道中有一個DIMM不被使用,預留為熱備內存。芯片組中設置有內存校驗錯誤次數的閾值, 即每單位時間發生錯誤的次數。當工作內存的故障次數達到這個“容錯閾值”,系統開始進行雙重寫動作,一個寫入主內存,一個寫入熱備內存,當系統檢測到兩個內存數據一致后,熱備內存就代替主內存工作,故障內存被禁用,這樣就完成了熱備內存接替故障內存工作的任務,有效避免了系統由于內存故障而導致數據丟失或系統宕機。這個做熱備的內存容量應大于等于所在通道的最大內存條的容量,以滿足內存數據遷移的最大容量需求。
內存鏡像技術
內存鏡像(Memory Mirroring)技術的工作原理與硬盤的熱備份類似,為了確保當某個DIMM存儲芯片失效的時候,內存保護技術能夠自動利用備用的比特位自動找回數據,從而保證服務器的平穩運行。該技術可以糾正發生在每對DIMM內存中多達4個連續比特位的錯誤。當出現隨機性的軟內存錯誤,可以通過使用熱備份的比特位來解決;如果出現永久性的硬件錯誤,也將利用熱備份的比特位使得DIMM內存芯片繼續工作,直到被替換為止。內存鏡像會將內存數據做兩個拷貝,分別放在主內存和鏡像內存中。系統工作時會向兩個內存中同時寫入數據,因此使得內存數據有兩套完整的備份。由于采用通道間交叉鏡像的方式,所以每個通道都有一套完整的內存數據拷貝。
內存鏡像需要內存中的所有數據均存有副本,系統正常運行時所使用的是原本,而當其中一份宿主失效時,另外那份就隨即補替工作,有效防止了由于內存通道故障導致的數據丟失,極大提升了服務器可靠性。這同磁盤系統中的RAID 1非常相似,因此,實現這一功能需要雙倍的物理內存,而實際容量的利用率只有50%。
內存鏡像跟內存熱備的區別是:內存鏡像主要是希望通過備份內存上的數據來恢復出錯內存的數據,而內存熱備則是徹底用備份內存接替出錯內存的所有工作。
內存刷洗技術
內存刷洗(Memory Scrubbing)技術—系統會間歇地測試內存的存取錯誤,當錯誤被偵查到時,系統會向用戶發出警告,并調用備用內存替換出現錯誤的部分,而這一替換任務便交給在線備用內存(On-line Spare Memory)技術來完成—在原本中有一部分是保留內存,不能夠用作常規性的操作,當使用的內存塊出現錯誤時,保留內存便被激活以代替其工作。
可以看到,內存鏡像技術是完整和全面的保護措施,而內存刷洗技術則是對原本內存可靠性的保證。當然,內存刷洗技術也會同時對副本內存進行操作,試想倘若沒有內存刷洗技術的支持,副本內存中的數據又如何得到保證,連副本都不能確保正常,那么內存鏡像意義何在呢。
雙通道內存互備技術
這種技術是針對雙通道內存工作模式而言的,在Intel的Nocona平臺北橋芯片E7520、E7525和E7320芯片組中融入了這種技術:當E7520的主板以雙通道狀態工作時,如果由于某種意外導致內存雙通道失效,那么系統可立刻切換到單通道內存工作模式,此時雖然內存性能會大幅度下降,但卻保證了系統的正常運作,而這一功能的實現也要歸功于內存刷洗技術不斷地偵查內存子系統的潛在錯誤。