對(duì)于IT業(yè)界人士來說,服務(wù)器掛掉就是毀滅性的了。其實(shí)不用擔(dān)心,ECC內(nèi)存這類技術(shù)的出現(xiàn)可以相應(yīng)程度上避免這個(gè)問題。內(nèi)存條ecc是什么意思?
ECC的全稱是Error Checking and Correcting(錯(cuò)誤檢查和糾正),是一種運(yùn)用到內(nèi)存條上的糾錯(cuò)技術(shù)。當(dāng)內(nèi)存出現(xiàn)部分讀寫錯(cuò)誤時(shí),它可以檢查錯(cuò)誤并進(jìn)行糾正,不因錯(cuò)誤而中斷,以提高數(shù)據(jù)的完整性和系統(tǒng)可靠性,保證系統(tǒng)能長(zhǎng)時(shí)間穩(wěn)定運(yùn)行。需要注意的是,目前只有工作站或服務(wù)器級(jí)處理器與主板才支持ECC內(nèi)存,比如英特爾至強(qiáng)處理器。
一般多應(yīng)用在服務(wù)器及圖形工作站上。ECC存儲(chǔ)器并不是因?yàn)樗俣瓤?,是因?yàn)樗邆涮厥獾募m錯(cuò)能力來保持服務(wù)器的穩(wěn)定,拒絕宕機(jī)。
在ECC技術(shù)出現(xiàn)之前,內(nèi)存中應(yīng)用最多的另外一種錯(cuò)誤檢查技術(shù),是奇偶校驗(yàn)位(Parity)技術(shù)。
在數(shù)字電路中,最小的數(shù)據(jù)單位是“比特(bit)”,也叫“比特”?!氨忍亍币彩莾?nèi)存中的最小單位,它是通過“1”和“0”來表示數(shù)據(jù)高、低電平信號(hào)。在數(shù)字電路中8個(gè)連續(xù)的比特是一字節(jié),不帶“奇偶校驗(yàn)”的內(nèi)存中的每個(gè)字節(jié)只有8位,若它的某一位存儲(chǔ)出了錯(cuò)誤,就會(huì)使其中存儲(chǔ)的相應(yīng)數(shù)據(jù)發(fā)生改變而導(dǎo)致應(yīng)用程序發(fā)生錯(cuò)誤。
而帶有“奇偶校驗(yàn)”的內(nèi)存在每一字節(jié)(8位)外又額外增加了一位用來進(jìn)行錯(cuò)誤檢測(cè)。比如一個(gè)字節(jié)中存儲(chǔ)了某一數(shù)值(1、0、1、0、1、0、1、1),把這每一位相加起來(1+0+1+0+1+0+1+1=5)。對(duì)于偶校驗(yàn),若其結(jié)果是奇數(shù),校驗(yàn)位就定義為1,反之則為0;對(duì)于奇校驗(yàn)則相反。當(dāng)CPU返回讀取存儲(chǔ)的數(shù)據(jù)時(shí),它會(huì)再次相加前8位中存儲(chǔ)的數(shù)據(jù),計(jì)算結(jié)果是否與校驗(yàn)位相一致。當(dāng)CPU發(fā)現(xiàn)二者不同時(shí)就會(huì)試圖糾正這些錯(cuò)誤。
但奇偶校驗(yàn)位技術(shù)有個(gè)缺點(diǎn),當(dāng)內(nèi)存查到某個(gè)數(shù)據(jù)位有錯(cuò)誤時(shí),由于不一定能確定錯(cuò)誤在哪一個(gè)位,也就不一定能修正錯(cuò)誤。所以帶有奇偶校驗(yàn)的內(nèi)存的主要功能僅僅是“發(fā)現(xiàn)錯(cuò)誤”,并能糾正部分簡(jiǎn)單的錯(cuò)誤。
此外,奇偶校驗(yàn)技術(shù)是通過在原來數(shù)據(jù)位的基礎(chǔ)上增加一個(gè)數(shù)據(jù)位來檢查當(dāng)前8位數(shù)據(jù)的正確性,但隨著數(shù)據(jù)位的增加,用來檢驗(yàn)的數(shù)據(jù)位也成倍增加,就是說當(dāng)數(shù)據(jù)位為16位時(shí)它需要增加2位用于檢查,當(dāng)數(shù)據(jù)位為32位時(shí)則需增加4位,依此類推。特別是當(dāng)數(shù)據(jù)量非常大時(shí),數(shù)據(jù)出錯(cuò)的幾率也就越大,對(duì)于只能糾正簡(jiǎn)單錯(cuò)誤的奇偶檢驗(yàn)的方法就顯得力不從心了。正是基于這樣一種情況,錯(cuò)誤檢查和糾正(Error Checking and Correcting)應(yīng)運(yùn)而生了。
內(nèi)存錯(cuò)誤是電腦內(nèi)部的電磁干擾造成的。這種干擾會(huì)導(dǎo)致 DRAM(動(dòng)態(tài)隨機(jī)存取內(nèi)存)的單位自發(fā)地變成相反的狀態(tài)。單位錯(cuò)誤可能是隱性的,也就是說,它們不會(huì)對(duì)數(shù)據(jù)造成嚴(yán)重影響;但是,內(nèi)存單元是相互關(guān)聯(lián)的,因此單位變化可能會(huì)影響整個(gè)系統(tǒng),從而導(dǎo)致系統(tǒng)出錯(cuò),尤其是在需要嚴(yán)密運(yùn)行的系統(tǒng)中。
ECC的英文全稱是“ Error Checking and Correcting”(錯(cuò)誤檢查和糾正),從這個(gè)名稱就可以看出它的主要功能就是“發(fā)現(xiàn)并糾正錯(cuò)誤”。
與奇偶校驗(yàn)技術(shù)一樣,ECC糾錯(cuò)技術(shù)也需要額外的空間來儲(chǔ)存校正碼,但其占用的位數(shù)跟數(shù)據(jù)的長(zhǎng)度并非成線性關(guān)系。具體來說,它是以8位數(shù)據(jù)、5位ECC碼為基準(zhǔn),隨后每增加一個(gè)8位數(shù)據(jù)只需另增加一位ECC碼即可。通俗地講就是,一個(gè)8位的數(shù)據(jù)產(chǎn)生的ECC碼要占用5位的空間,而一個(gè)16位數(shù)據(jù)ECC碼只需在原來基礎(chǔ)上再增加一位,也就是6位;而32位的數(shù)據(jù)則只需再在原來基礎(chǔ)增加一位,即7位的ECC碼即可,如此類推。
ECC碼將信息進(jìn)行8比特位的編碼,采用這種方式可以恢復(fù)1比特的錯(cuò)誤。每一次數(shù)據(jù)寫入內(nèi)存的時(shí)候,ECC碼使用一種特殊的算法對(duì)數(shù)據(jù)進(jìn)行計(jì)算,其結(jié)果稱為校驗(yàn)位(check bits)。然后將所有校驗(yàn)位加在一起的和是“校驗(yàn)和”(checksum),校驗(yàn)和與數(shù)據(jù)一起存放。當(dāng)這些數(shù)據(jù)從內(nèi)存中讀出時(shí),采用同一算法再次計(jì)算校驗(yàn)和,并和前面的計(jì)算結(jié)果相比較,如果結(jié)果相同,說明數(shù)據(jù)是正確的,反之說明有錯(cuò)誤,ECC可以從邏輯上分離錯(cuò)誤并通知系統(tǒng)。當(dāng)只出現(xiàn)單比特錯(cuò)誤的時(shí)候,ECC可以把錯(cuò)誤改正過來不影響系統(tǒng)運(yùn)行。工作原理見下圖:
除了能夠檢查到并改正單比特錯(cuò)誤之外,ECC碼還能檢查到(但不改正)單DRAM芯片上發(fā)生的任意2個(gè)隨機(jī)錯(cuò)誤,并最多可以檢查到4比特的錯(cuò)誤。當(dāng)有多比特錯(cuò)誤發(fā)生的時(shí)候,ECC內(nèi)存會(huì)生成一個(gè)不可隱藏(non-maskable interrupt)的中斷(NMI),會(huì)中止系統(tǒng)運(yùn)行,以避免出現(xiàn)數(shù)據(jù)惡化。
顯然ECC碼的長(zhǎng)度跟數(shù)據(jù)的長(zhǎng)度是成對(duì)數(shù)關(guān)系,當(dāng)數(shù)據(jù)長(zhǎng)度在64位以上的時(shí)候,ECC碼在空間占用上就會(huì)凸顯優(yōu)勢(shì)。此外,ECC校驗(yàn)最大的優(yōu)點(diǎn)是如果數(shù)據(jù)中有一位錯(cuò)誤,它不但能發(fā)現(xiàn)而且可以對(duì)其更正,ECC校驗(yàn)還可以發(fā)現(xiàn)2~4位錯(cuò)誤(不能更正),當(dāng)然這樣的情況出現(xiàn)的幾率是非常低的。但ECC碼的校驗(yàn)算法比奇偶校驗(yàn)復(fù)雜不少,需要專門的芯片來支持,所以普通的電腦主板不一定支持。而且因?yàn)橄到y(tǒng)需要時(shí)間來等待校驗(yàn)的結(jié)果,所以ECC校驗(yàn)會(huì)降低系統(tǒng)速度2%-3%左右,但這小小的代價(jià)換來系統(tǒng)穩(wěn)定性的大大提高可以說是非常值得的。
注意:ECC不是一種內(nèi)存類型,只是一種內(nèi)存技術(shù),不僅以前的EDO內(nèi)存可以有、SD內(nèi)存也可有,現(xiàn)在主流的DDR內(nèi)存同樣可以有,所以在現(xiàn)在服務(wù)器配置中我們都可見到“512MB ECC DDR-400內(nèi)存”之類的字樣。那是因?yàn)樗⒉皇且环N影響內(nèi)存結(jié)構(gòu)和存儲(chǔ)速度的技術(shù),可以應(yīng)用到不同的內(nèi)存類型之中,就象我們經(jīng)常到的“奇遇校正”內(nèi)存技術(shù)一樣。
對(duì)于工作站和服務(wù)器來說,一個(gè)任務(wù)可能需要不停的運(yùn)算幾個(gè)月,這對(duì)機(jī)器的穩(wěn)定性和自身糾錯(cuò)能力提出了極其嚴(yán)苛的要求。而ECC內(nèi)存可以檢測(cè)并糾正錯(cuò)誤,減少宕機(jī)、藍(lán)屏、死機(jī)的問題,保證機(jī)器長(zhǎng)時(shí)間穩(wěn)定運(yùn)行。畢竟一次嚴(yán)重的宕機(jī),可能會(huì)造成無法挽回的損失。
所以,對(duì)于工作站和服務(wù)器來說,ECC內(nèi)存是非常重要的存在。
關(guān)于內(nèi)存條ecc是什么意思的講解就先到這里了,感興趣的朋友可以留言探討,畢竟現(xiàn)在某寶上有大把廉價(jià)的RDIMM服務(wù)器內(nèi)存,想裝一臺(tái)工作站干點(diǎn)硬活的朋友應(yīng)該也不少。
您的電子郵件地址不會(huì)被公開,必填項(xiàng)已用 * 標(biāo)注。
? ? ? ? ? ? ? ?Copyright 2020-2026 同袍存儲(chǔ) 粵ICP備2021121885號(hào)網(wǎng)站地圖