0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

干貨|ECC內(nèi)存為什么比普通內(nèi)存更穩(wěn)定?

億佰特物聯(lián)網(wǎng)應(yīng)用專家 ? 2023-03-06 10:59 ? 次閱讀

為什么需要ECC內(nèi)存?因?yàn)橛脖P的速度遠(yuǎn)遠(yuǎn)比不上CPU的速度,所以電腦在程序運(yùn)行時(shí)CPU都會先把要執(zhí)行的代碼和各種數(shù)據(jù)從硬盤讀取到內(nèi)存(單片機(jī)這種小CPU除外),之后和內(nèi)存交互數(shù)據(jù),所以內(nèi)存的穩(wěn)定性很大程度上決定了電腦的穩(wěn)定性。但是在電腦的運(yùn)行環(huán)境中,存在著各式各樣的干擾,包括EMI電磁干擾、電源紋波干擾等,這些干擾會導(dǎo)致內(nèi)存在和CPU交互數(shù)據(jù)時(shí)發(fā)生比特翻轉(zhuǎn)(某個(gè)0變成1),如果比特翻轉(zhuǎn)發(fā)生在某些不重要的位置上,比如某張圖片或者某個(gè)視頻流里面,使用者很有可能會感受不到。但是一旦發(fā)生在某個(gè)代碼里面,輕則導(dǎo)致軟件報(bào)錯(cuò)或者閃退,重則藍(lán)屏死機(jī)或hardfault,對于普通PC來說還算能接受,畢竟概率很小,但是對于服務(wù)器來講,一次宕機(jī)可能會造成災(zāi)難性的損失,所以服務(wù)器往往會使用穩(wěn)定性更高的ECC內(nèi)存。47315808-b929-11ed-ad0d-dac502259ad0.png

漢明碼原理

為什么ECC內(nèi)存能糾錯(cuò)呢?就是因?yàn)槭褂昧藵h明碼編碼。更準(zhǔn)確來說,目前絕大多數(shù)ECC內(nèi)存都是使用的漢明碼來發(fā)現(xiàn)并糾錯(cuò)的。漢明碼在一組數(shù)據(jù)中最多只能糾錯(cuò)1個(gè)比特或者最多發(fā)現(xiàn)2個(gè)比特的錯(cuò)誤,超過2個(gè)比特的錯(cuò)誤就有概率通過漢明碼校驗(yàn),這是前提,只有在這個(gè)基礎(chǔ)上我們才能推出后面的結(jié)論。

漢明碼原理總結(jié)來說就是奇偶校驗(yàn)+交集排除,奇偶校驗(yàn)負(fù)責(zé)檢測錯(cuò)誤,交集排除負(fù)責(zé)定位錯(cuò)誤的位置。奇偶校驗(yàn):根據(jù)被傳輸?shù)囊唤M二進(jìn)制代碼的數(shù)位中“1”的個(gè)數(shù)是奇數(shù)或偶數(shù)來進(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è)必要前提。交集排除:簡單來說就是元素A若同時(shí)在集合B和集合C中,如果A、B、C都存在的話,那A一定在B∩C中。下面以一個(gè)4*4的數(shù)據(jù)舉例說明。4776a6e2-b929-11ed-ad0d-dac502259ad0.png1.為了使用交集排除,先把4*4的數(shù)據(jù)分成下圖4個(gè)區(qū):4796e11e-b929-11ed-ad0d-dac502259ad0.png2.在1區(qū)使用偶校驗(yàn)得出沒有錯(cuò)誤:47a93d00-b929-11ed-ad0d-dac502259ad0.png3.在2區(qū)使用偶校驗(yàn)得出有錯(cuò)誤:47c49c80-b929-11ed-ad0d-dac502259ad0.png4.在3區(qū)使用偶校驗(yàn)得出有錯(cuò)誤:47ddea96-b929-11ed-ad0d-dac502259ad0.png5.在4區(qū)使用偶校驗(yàn)得出沒有錯(cuò)誤:47f6a4a0-b929-11ed-ad0d-dac502259ad0.png

6.綜合2、3、4、5的結(jié)論就可以得出,錯(cuò)誤數(shù)據(jù)同時(shí)在2區(qū)和3區(qū),并且1區(qū)和4區(qū)沒有錯(cuò)誤,所以錯(cuò)誤數(shù)據(jù)一定在如下(2,3)的位置,所以把(2,3)的1改為0就能得到正確的一組數(shù)據(jù)。4811a516-b929-11ed-ad0d-dac502259ad0.png482acc12-b929-11ed-ad0d-dac502259ad0.png

總結(jié)


以上就是漢明碼最基礎(chǔ)的原理,但這并不是漢明碼被廣泛運(yùn)用在內(nèi)存糾錯(cuò)的全部原因,因?yàn)閱渭儽燃m錯(cuò)能力,它遠(yuǎn)遠(yuǎn)沒有LDPC低密度校驗(yàn)碼強(qiáng),能被廣泛運(yùn)用的原因是漢明碼能用極少的硬件電路實(shí)現(xiàn)(4*4的數(shù)據(jù)只需要5級異或門),而且有效數(shù)據(jù)比很高(一組數(shù)據(jù)只需要在2的整數(shù)次方的比特位置插入一個(gè)比特的校驗(yàn)位,有效數(shù)據(jù)比成指數(shù)級提高,當(dāng)然一組數(shù)據(jù)越長超過2比特錯(cuò)誤的概率也就越大),具體原理后面再分析。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2978

    瀏覽量

    73818
  • ECC
    ECC
    +關(guān)注

    關(guān)注

    0

    文章

    96

    瀏覽量

    20519
收藏 人收藏

    評論

    相關(guān)推薦

    Linux內(nèi)存泄露案例分析和內(nèi)存管理分享

    作者:京東科技 李遵舉 一、問題 近期我們運(yùn)維同事接到線上LB(負(fù)載均衡)服務(wù)內(nèi)存報(bào)警,運(yùn)維同事反饋說LB集群有部分機(jī)器的內(nèi)存使用率超過80%,有的甚至超過90%,而且內(nèi)存使用率還再不停的增長。接到
    的頭像 發(fā)表于 10-24 16:14 ?650次閱讀
    Linux<b class='flag-5'>內(nèi)存</b>泄露案例分析和<b class='flag-5'>內(nèi)存</b>管理分享

    前端總線與內(nèi)存頻率怎么配

    前端總線(FSB)與內(nèi)存頻率的配合是確保計(jì)算機(jī)系統(tǒng)穩(wěn)定運(yùn)行并發(fā)揮最佳性能的關(guān)鍵因素之一。以下是對前端總線與內(nèi)存頻率配合關(guān)系的介紹: 一、前端總線與內(nèi)存頻率的基本概念 前端總線 :前端總
    的頭像 發(fā)表于 10-12 09:10 ?169次閱讀

    邏輯內(nèi)存和物理內(nèi)存的區(qū)別

    邏輯內(nèi)存和物理內(nèi)存是計(jì)算機(jī)系統(tǒng)中兩個(gè)重要的概念,它們在計(jì)算機(jī)的運(yùn)行和數(shù)據(jù)處理中起著至關(guān)重要的作用。 1. 物理內(nèi)存(Physical Memory) 物理內(nèi)存,也稱為RAM(Rando
    的頭像 發(fā)表于 09-27 15:38 ?353次閱讀

    簡述內(nèi)存的接口類型

    內(nèi)存的接口類型多種多樣,這些接口不僅決定了內(nèi)存與主板之間的連接方式,還影響了內(nèi)存的傳輸速度和穩(wěn)定性。
    的頭像 發(fā)表于 09-10 14:24 ?1307次閱讀

    反射內(nèi)存交換機(jī)與普通交換機(jī)的區(qū)別

    反射內(nèi)存交換機(jī)與普通交換機(jī)在以下幾個(gè)方面存在明顯區(qū)別:工作原理和機(jī)制:反射內(nèi)存交換機(jī)基于反射內(nèi)存技術(shù),通過硬件實(shí)現(xiàn)數(shù)據(jù)的快速同步和共享。當(dāng)一個(gè)節(jié)點(diǎn)寫入數(shù)據(jù)時(shí),數(shù)據(jù)會迅速被廣播到其他所有
    的頭像 發(fā)表于 09-05 09:57 ?418次閱讀
    反射<b class='flag-5'>內(nèi)存</b>交換機(jī)與<b class='flag-5'>普通</b>交換機(jī)的區(qū)別

    內(nèi)存時(shí)鐘是什么意思

    內(nèi)存時(shí)鐘是內(nèi)存模塊中一個(gè)至關(guān)重要的參數(shù),它直接關(guān)聯(lián)到內(nèi)存模塊能夠工作的最高頻率。以下是對內(nèi)存時(shí)鐘的詳細(xì)解析,包括其定義、作用、與內(nèi)存頻率的關(guān)
    的頭像 發(fā)表于 09-04 11:45 ?919次閱讀

    反射內(nèi)存卡與普通內(nèi)存卡的區(qū)別

    應(yīng)用場景和目的反射內(nèi)存卡:主要用于需要多個(gè)設(shè)備或系統(tǒng)之間進(jìn)行高速、實(shí)時(shí)數(shù)據(jù)共享和通信的場景,例如工業(yè)控制、航空航天等領(lǐng)域。普通內(nèi)存卡:通常用于個(gè)人電子設(shè)備,如手機(jī)、相機(jī)、平板電腦等,用于存儲文件
    的頭像 發(fā)表于 09-04 10:24 ?432次閱讀
    反射<b class='flag-5'>內(nèi)存</b>卡與<b class='flag-5'>普通</b><b class='flag-5'>內(nèi)存</b>卡的區(qū)別

    C語言內(nèi)存泄漏問題原理

    內(nèi)存泄漏問題只有在使用堆內(nèi)存的時(shí)候才會出現(xiàn),棧內(nèi)存不存在內(nèi)存泄漏問題,因?yàn)闂?b class='flag-5'>內(nèi)存會自動分配和釋放。C語言代碼中堆
    發(fā)表于 03-19 11:38 ?455次閱讀
    C語言<b class='flag-5'>內(nèi)存</b>泄漏問題原理

    服務(wù)器內(nèi)存條和普通內(nèi)存條的區(qū)別

    內(nèi)存條一般采用ECC DIMM封裝形式。ECC DIMM具有額外的錯(cuò)誤檢測和糾正功能,可以提供更高的數(shù)據(jù)可靠性,減少硬件故障的風(fēng)險(xiǎn)。 此外,服務(wù)器內(nèi)存條通常具有更多的插槽和更大的容量支
    的頭像 發(fā)表于 02-19 10:19 ?8599次閱讀

    Pflash和Dflash都有閃存ECC保護(hù),ECC內(nèi)存在哪里?

    在用戶手冊中,Pflash 和 Dflash 都有閃存 ECC 保護(hù),我想知道 ECC 內(nèi)存在哪里? 它會占用 pflash 空間還是存儲在用戶無法訪問的地方? 在此先謝謝!
    發(fā)表于 01-26 08:12

    Aurix pFlash內(nèi)存部分是如何在微控制器級別上創(chuàng)建ECC寫入錯(cuò)誤的?

    我正在查看 Aurix pFlash 內(nèi)存部分是如何在微控制器級別上創(chuàng)建 ECC 寫入錯(cuò)誤的,以及他們是如何通過故障注入技術(shù)使用它產(chǎn)生多位錯(cuò)誤的 通常 ecc 錯(cuò)誤是使用高電壓和其他方法產(chǎn)生的,但
    發(fā)表于 01-22 07:37

    系統(tǒng)內(nèi)存和運(yùn)行內(nèi)存的區(qū)別

    系統(tǒng)內(nèi)存和運(yùn)行內(nèi)存都是計(jì)算機(jī)中重要的概念,它們在計(jì)算機(jī)的存儲和運(yùn)行方面起著不可或缺的作用。雖然它們與計(jì)算機(jī)存儲和運(yùn)行息息相關(guān),但是它們具有不同的功能和實(shí)現(xiàn)方式。接下來我將詳細(xì)介紹系統(tǒng)內(nèi)存和運(yùn)行
    的頭像 發(fā)表于 01-15 16:32 ?2954次閱讀

    內(nèi)存溢出與內(nèi)存泄漏:定義、區(qū)別與解決方案

    內(nèi)存溢出與內(nèi)存泄漏:定義、區(qū)別與解決方案? 內(nèi)存溢出和內(nèi)存泄漏是計(jì)算機(jī)科學(xué)中常見的問題,在開發(fā)和調(diào)試過程中經(jīng)常會遇到。本文將詳細(xì)介紹內(nèi)存溢出
    的頭像 發(fā)表于 12-19 14:10 ?2366次閱讀

    是什么導(dǎo)致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯(cuò)碼(ECC)如何修復(fù)位翻轉(zhuǎn)?

    是什么導(dǎo)致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯(cuò)碼(ECC)如何修復(fù)位翻轉(zhuǎn)? RAM中的內(nèi)存數(shù)據(jù)損壞可能由多種原因?qū)е?。其中一些原因包括電磁干擾、電壓波動、溫度變化等外部因素,還有由內(nèi)部設(shè)計(jì)和制造缺陷
    的頭像 發(fā)表于 12-15 09:58 ?2020次閱讀

    jvm內(nèi)存模型和內(nèi)存結(jié)構(gòu)

    JVM(Java虛擬機(jī))是Java程序的運(yùn)行平臺,它負(fù)責(zé)將Java程序轉(zhuǎn)換成機(jī)器碼并在計(jì)算機(jī)上執(zhí)行。在JVM中,內(nèi)存模型和內(nèi)存結(jié)構(gòu)是兩個(gè)重要的概念,本文將詳細(xì)介紹它們。 一、JVM內(nèi)存模型 JVM
    的頭像 發(fā)表于 12-05 11:08 ?877次閱讀