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

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

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

ECC校驗的詳細講解

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-06-18 20:08 ? 次閱讀
pYYBAGKtv1mAALtpAATLzw1ZNSs002.png

定義

ECC校驗是一種內(nèi)存糾錯原理,它是比較先進的內(nèi)存錯誤檢查和更正的手段。ECC內(nèi)存即糾錯內(nèi)存,簡單的說,其具有發(fā)現(xiàn)錯誤,糾正錯誤的功能,一般多應(yīng)用在高檔臺式電腦/服務(wù)器及圖形工作站上,這將使整個電腦系統(tǒng)在工作時更趨于安全穩(wěn)定。

技術(shù)原理

內(nèi)存是一種電子器件,在其工作過程中難免會出現(xiàn)錯誤,而對于穩(wěn)定性要求高的用戶來說,內(nèi)存錯誤可能會引起致命性的問題。內(nèi)存錯誤根據(jù)其原因還可分為硬錯誤和軟錯誤。硬件錯誤是由于硬件的損害或缺陷造成的,因此數(shù)據(jù)總是不正確,此類錯誤是無法糾正的;軟錯誤是隨機出現(xiàn)的,例如在內(nèi)存附近突然出現(xiàn)電子干擾等因素都可能造成內(nèi)存軟錯誤的發(fā)生。

為了能檢測和糾正內(nèi)存軟錯誤,在ECC技術(shù)出現(xiàn)之前,首先出現(xiàn)的是內(nèi)存“奇偶校驗(Parity)”。內(nèi)存中最小的單位是比特,也稱為“位(bit)”,位有只有兩種狀態(tài)分別以1和0來標示,每8個連續(xù)的比特叫做一個字節(jié)(byte)。不帶奇偶校驗的內(nèi)存每個字節(jié)只有8位,如果其某一位存儲了錯誤的值,就會導致其存儲的相應(yīng)數(shù)據(jù)發(fā)生變化,進而導致應(yīng)用程序發(fā)生錯誤。而奇偶校驗就是在每一字節(jié)(8位)之外又增加了一位作為錯誤檢測位。在某字節(jié)中存儲數(shù)據(jù)之后,在其8個位上存儲的數(shù)據(jù)是固定的,因為位只能有兩種狀態(tài)1或0,假設(shè)存儲的數(shù)據(jù)用位標示為1、1、1、0、0、1、0、1,那么把每個位相加(1+1+1+0+0+1+0+1=5),結(jié)果是奇數(shù)。對于偶校驗,校驗位就定義為1,反之則為0;對于奇校驗,則相反。當CPU讀取存儲的數(shù)據(jù)時,它會再次把前8位中存儲的數(shù)據(jù)相加,計算結(jié)果是否與校驗位相一致。從而一定程度上能檢測出內(nèi)存錯誤,奇偶校驗只能檢測出錯誤而無法對其進行修正,同時雖然雙位同時發(fā)生錯誤的概率相當?shù)?,奇偶校驗卻無法檢測出雙位錯誤。

通過上面的分析我們知道Parity內(nèi)存是通過在原來數(shù)據(jù)位的基礎(chǔ)上增加一個數(shù)據(jù)位來檢查當前8位數(shù)據(jù)的正確性,但隨著數(shù)據(jù)位的增加Parity用來檢驗的數(shù)據(jù)位也成倍增加,就是說當數(shù)據(jù)位為16位時它需要增加2位用于檢查,當數(shù)據(jù)位為32位時則需增加4位,依此類推。特別是當數(shù)據(jù)量非常大時,數(shù)據(jù)出錯的幾率也就越大,對于只能糾正簡單錯誤的奇偶檢驗的方法就顯得力不從心了,正是基于這樣一種情況,一種新的內(nèi)存技術(shù)應(yīng)允而生了,這就是ECC(錯誤檢查和糾正),這種技術(shù)也是在原來的數(shù)據(jù)位上外加校驗位來實現(xiàn)的。不同的是兩者增加的方法不一樣,這也就導致了兩者的主要功能不太一樣。它與Parity不同的是如果數(shù)據(jù)位是8位,則需要增加5位來進行ECC錯誤檢查和糾正,數(shù)據(jù)位每增加一倍,ECC只增加一位檢驗位,也就是說當數(shù)據(jù)位為16位時ECC位為6位,32位時ECC位為7位,數(shù)據(jù)位為64位時ECC位為8位,依此類推,數(shù)據(jù)位每增加一倍,ECC位只增加一位??傊趦?nèi)存中ECC能夠容許錯誤,并可以將錯誤更正,使系統(tǒng)得以持續(xù)正常的操作,不致因錯誤而中斷,且ECC具有自動更正的能力,可以將Parity無法檢查出來的錯誤位查出并將錯誤修正。

示例

ECC(Error Checking and Correcting,錯誤檢查和糾正)內(nèi)存,它同樣也是在數(shù)據(jù)位上額外的位存儲一個用數(shù)據(jù)加密的代碼。當數(shù)據(jù)被寫入內(nèi)存,相應(yīng)的ECC代碼與此同時也被保存下來。當重新讀回剛才存儲的數(shù)據(jù)時,保存下來不ECC代碼就會和讀數(shù)據(jù)時產(chǎn)生的ECC代碼做比較。如果兩個代碼不相同,他們則會被解碼,以確定數(shù)據(jù)中的哪一位是不正確的。然后這一錯誤位會被拋棄,內(nèi)存控制器則會釋放出正確的數(shù)據(jù)。被糾正的數(shù)據(jù)很少會被放回內(nèi)存。假如相同的錯誤數(shù)據(jù)再次被讀出,則糾正過程再次被執(zhí)行。重寫數(shù)據(jù)會增加處理過程的開銷,這樣則會導致系統(tǒng)性能的明顯降低。如果是隨機事件而非內(nèi)存的缺點產(chǎn)生的錯誤,則這一內(nèi)存地址的錯誤數(shù)據(jù)會被再次寫入的其他數(shù)據(jù)所取代。

審核編輯:符乾江

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

    關(guān)注

    5046

    文章

    18832

    瀏覽量

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

    關(guān)注

    0

    文章

    91

    瀏覽量

    20473
收藏 人收藏

    評論

    相關(guān)推薦

    電感技術(shù)的講解

    詳細講解電感的原理及計算
    的頭像 發(fā)表于 09-06 02:07 ?1486次閱讀
    電感技術(shù)的<b class='flag-5'>講解</b>

    第12章-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細講解+HAL庫)

    第12章-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細講解+HAL庫)
    的頭像 發(fā)表于 08-21 16:31 ?1137次閱讀
    第12章-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(<b class='flag-5'>詳細</b><b class='flag-5'>講解</b>+HAL庫)

    Traveo T2G SRAM不是32位的嗎?如何得到一個64位的?

    在進行sram的ecc故障注入的時候,需要計算其ecc校驗值,在手冊上有這樣的描述 10.3.4 由軟件生成 ECC 奇偶校驗 要注入
    發(fā)表于 06-03 08:49

    PSoC5LP:ECC總是返回失敗的原因?

    ECC 后,使用 AN78175 項目提供的示例和 SelfTest_FlashECC() 函數(shù)應(yīng)該很容易: uint8_t SelfTest_FlashECC(void) { uint8_t
    發(fā)表于 05-30 08:15

    CYT4BF的監(jiān)管區(qū) (SFlash) 是否支持 ECC?

    CYT4BF 的監(jiān)管區(qū) (SFlash) 是否支持 ECC? 如果支持 ECC, 控制 ECC 的寄存器是否與 FLASHC/FLASHC1_FLASH_CTL.MAIN_ECC_EN
    發(fā)表于 05-23 07:26

    STM32G系列ECC校驗錯誤,進入NMI中斷后如何處理?

    ,斷電重啟無法恢復(fù)。經(jīng)過一系列的排查,應(yīng)該是由于在上下電的過程中,F(xiàn)lash數(shù)據(jù)更新的過程中,造成ECC未寫入,造成最終讀Flash時,ECC錯誤,造成了NMI中斷。。由于G系列比較新,我們只是搜到了一片
    發(fā)表于 03-29 07:43

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

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

    詳細講解Altium Designer 23的安裝教程

    在PCB設(shè)計中,軟件的安裝是我們邁出的第一步,接下來將詳細講解Altium Designer 23安裝教程。
    的頭像 發(fā)表于 01-09 10:02 ?6534次閱讀
    <b class='flag-5'>詳細</b><b class='flag-5'>講解</b>Altium Designer 23的安裝教程

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

    是什么導致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯碼(ECC)如何修復(fù)位翻轉(zhuǎn)? RAM中的內(nèi)存數(shù)據(jù)損壞可能由多種原因?qū)е隆F渲幸恍┰虬姶鸥蓴_、電壓波動、溫度變化等外部因素,還有由內(nèi)部設(shè)計和制造缺陷
    的頭像 發(fā)表于 12-15 09:58 ?1656次閱讀

    彈簧管壓力表的校驗方法

    彈簧管壓力表是一種常用于測量壓力的儀器,在工業(yè)生產(chǎn)和實驗室實驗中廣泛應(yīng)用。為了保證彈簧管壓力表的準確性和可靠性,需要定期進行校驗。本文將詳細介紹彈簧管壓力表的校驗方法,包括校驗的步驟、
    的頭像 發(fā)表于 12-07 16:34 ?2181次閱讀

    LOAM源代碼中坐標變換部分的詳細講解

    本系列文章將對LOAM源代碼進行講解,在講解過程中,涉及到論文中提到的部分,會結(jié)合論文以及我自己的理解進行解讀,尤其是對于其中坐標變換的部分,將會進行詳細講解
    的頭像 發(fā)表于 11-01 10:49 ?1546次閱讀
    LOAM源代碼中坐標變換部分的<b class='flag-5'>詳細</b><b class='flag-5'>講解</b>

    奇偶校驗和crc校驗的區(qū)別 CRC校驗和奇偶校驗之間有什么關(guān)系?

    奇偶校驗和crc校驗的區(qū)別 CRC校驗和奇偶校驗之間有什么關(guān)系? 奇偶校驗和 CRC(Cyclic Redundancy Check)
    的頭像 發(fā)表于 10-17 16:28 ?3057次閱讀

    什么是奇校驗和偶校驗?常見的奇偶校驗方式有哪些?

    什么是奇校驗和偶校驗?常見的奇偶校驗方式有哪些? 1. 奇偶校驗是指在數(shù)字通信中采用一種技術(shù)對傳輸?shù)臄?shù)據(jù)進行校驗。由于數(shù)字信號傳輸容易受到干
    的頭像 發(fā)表于 10-17 16:28 ?9811次閱讀

    什么是奇偶校驗電路?奇偶校驗器是時序邏輯電路嗎?

    什么是奇偶校驗電路?奇偶校驗器是時序邏輯電路嗎? 奇偶校驗電路是一種數(shù)字電路,在數(shù)據(jù)傳輸過程中用于檢測數(shù)據(jù)是否發(fā)生錯誤。在每個數(shù)據(jù)字節(jié)(通常是8位)的最高位添加一位(偶校驗)或兩位(奇
    的頭像 發(fā)表于 10-17 16:16 ?3200次閱讀

    什么是奇偶校驗 奇偶校驗的基本原理 奇偶校驗電路什么意思

    什么是奇偶校驗 奇偶校驗的基本原理 奇偶校驗電路什么意思? 奇偶校驗是一種用于檢測二進制數(shù)據(jù)中錯誤的方法。它的基本原理是在二進制數(shù)據(jù)的末尾添加一個額外的位,使得數(shù)據(jù)中二進制 1 的數(shù)量
    的頭像 發(fā)表于 10-17 16:16 ?3362次閱讀