為什么需要ECC內(nèi)存?
因?yàn)橛脖P(pán)的速度遠(yuǎn)遠(yuǎn)比不上CPU的速度,所以電腦在程序運(yùn)行時(shí)CPU都會(huì)先把要執(zhí)行的代碼和各種數(shù)據(jù)從硬盤(pán)讀取到內(nèi)存(單片機(jī)這種小CPU除外),之后和內(nèi)存交互數(shù)據(jù),所以?xún)?nèi)存的穩(wěn)定性很大程度上決定了電腦的穩(wěn)定性。
但是在電腦的運(yùn)行環(huán)境中,存在著各式各樣的干擾,包括EMI電磁干擾、電源紋波干擾等,這些干擾會(huì)導(dǎo)致內(nèi)存在和CPU交互數(shù)據(jù)時(shí)發(fā)生比特翻轉(zhuǎn)(某個(gè)0變成1),如果比特翻轉(zhuǎn)發(fā)生在某些不重要的位置上,比如某張圖片或者某個(gè)視頻流里面,使用者很有可能會(huì)感受不到。
但是一旦發(fā)生在某個(gè)代碼里面,輕則導(dǎo)致軟件報(bào)錯(cuò)或者閃退,重則藍(lán)屏死機(jī)或hardfault,對(duì)于普通PC來(lái)說(shuō)還算能接受,畢竟概率很小,但是對(duì)于服務(wù)器來(lái)講,一次宕機(jī)可能會(huì)造成災(zāi)難性的損失,所以服務(wù)器往往會(huì)使用穩(wěn)定性更高的ECC內(nèi)存。
漢明碼原理
為什么ECC內(nèi)存能糾錯(cuò)呢?就是因?yàn)槭褂昧藵h明碼編碼。更準(zhǔn)確來(lái)說(shuō),目前絕大多數(shù)ECC內(nèi)存都是使用的漢明碼來(lái)發(fā)現(xiàn)并糾錯(cuò)的。漢明碼在一組數(shù)據(jù)中最多只能糾錯(cuò)1個(gè)比特或者最多發(fā)現(xiàn)2個(gè)比特的錯(cuò)誤,超過(guò)2個(gè)比特的錯(cuò)誤就有概率通過(guò)漢明碼校驗(yàn),這是前提,只有在這個(gè)基礎(chǔ)上我們才能推出后面的結(jié)論。
漢明碼原理總結(jié)來(lái)說(shuō)就是奇偶校驗(yàn)+交集排除,奇偶校驗(yàn)負(fù)責(zé)檢測(cè)錯(cuò)誤,交集排除負(fù)責(zé)定位錯(cuò)誤的位置。
奇偶校驗(yàn):根據(jù)被傳輸?shù)囊唤M二進(jìn)制代碼的數(shù)位中“1”的個(gè)數(shù)是奇數(shù)或偶數(shù)來(lái)進(jìn)行校驗(yàn)。以偶校驗(yàn)為例,在每組數(shù)據(jù)中增加一個(gè)奇偶校驗(yàn)位,若原始數(shù)據(jù)1的個(gè)數(shù)為奇數(shù),那奇偶校驗(yàn)位就補(bǔ)1,若原始數(shù)據(jù)1的個(gè)數(shù)本身就是偶數(shù)那奇偶校驗(yàn)位就不用補(bǔ)1,用0代替。奇偶校驗(yàn)有個(gè)巧妙的地方,就是奇偶校驗(yàn)位本身也能被校驗(yàn),這也是奇偶校驗(yàn)?zāi)芎徒患懦浜鲜褂玫囊粋€(gè)必要前提。
交集排除:簡(jiǎn)單來(lái)說(shuō)就是元素A若同時(shí)在集合B和集合C中,如果A、B、C都存在的話,那A一定在B∩C中。下面以一個(gè)4*4的數(shù)據(jù)舉例說(shuō)明。
1.為了使用交集排除,先把4*4的數(shù)據(jù)分成下圖4個(gè)區(qū):
2.在1區(qū)使用偶校驗(yàn)得出沒(méi)有錯(cuò)誤:
3.在2區(qū)使用偶校驗(yàn)得出有錯(cuò)誤:
4.在3區(qū)使用偶校驗(yàn)得出有錯(cuò)誤:
5.在4區(qū)使用偶校驗(yàn)得出沒(méi)有錯(cuò)誤:
6.綜合2、3、4、5的結(jié)論就可以得出,錯(cuò)誤數(shù)據(jù)同時(shí)在2區(qū)和3區(qū),并且1區(qū)和4區(qū)沒(méi)有錯(cuò)誤,所以錯(cuò)誤數(shù)據(jù)一定在如下(2,3)的位置,所以把(2,3)的1改為0就能得到正確的一組數(shù)據(jù)。
總結(jié)
以上就是漢明碼最基礎(chǔ)的原理,但這并不是漢明碼被廣泛運(yùn)用在內(nèi)存糾錯(cuò)的全部原因,因?yàn)閱渭儽燃m錯(cuò)能力,它遠(yuǎn)遠(yuǎn)沒(méi)有LDPC低密度校驗(yàn)碼強(qiáng),能被廣泛運(yùn)用的原因是漢明碼能用極少的硬件電路實(shí)現(xiàn)(4*4的數(shù)據(jù)只需要5級(jí)異或門(mén)),而且有效數(shù)據(jù)比很高(一組數(shù)據(jù)只需要在2的整數(shù)次方的比特位置插入一個(gè)比特的校驗(yàn)位,有效數(shù)據(jù)比成指數(shù)級(jí)提高,當(dāng)然一組數(shù)據(jù)越長(zhǎng)超過(guò)2比特錯(cuò)誤的概率也就越大),具體原理后面再分析。
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631996 -
cpu
+關(guān)注
關(guān)注
68文章
10805瀏覽量
210847 -
硬盤(pán)
+關(guān)注
關(guān)注
3文章
1283瀏覽量
57199 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
2976瀏覽量
73815 -
ECC
+關(guān)注
關(guān)注
0文章
96瀏覽量
20519
原文標(biāo)題:干貨|ECC內(nèi)存為什么比普通內(nèi)存更穩(wěn)定?
文章出處:【微信號(hào):cdebyte,微信公眾號(hào):億佰特物聯(lián)網(wǎng)應(yīng)用專(zhuān)家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論