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


