0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ECC校验的详细讲解

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-18 20:08 次阅读
pYYBAGKtv1mAALtpAATLzw1ZNSs002.png

定义

ECC校验是一种内存纠错原理,它是比较先进的内存错误检查和更正的手段。ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能,一般多应用在高档台式电脑/服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。

技术原理

内存是一种电子器件,在其工作过程中难免会出现错误,而对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题。内存错误根据其原因还可分为硬错误和软错误。硬件错误是由于硬件的损害或缺陷造成的,因此数据总是不正确,此类错误是无法纠正的;软错误是随机出现的,例如在内存附近突然出现电子干扰等因素都可能造成内存软错误的发生。

为了能检测和纠正内存软错误,在ECC技术出现之前,首先出现的是内存“奇偶校验(Parity)”。内存中最小的单位是比特,也称为“位(bit)”,位有只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte)。不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。当CPU读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相当低,奇偶校验却无法检测出双位错误。

通过上面的分析我们知道Parity内存是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就显得力不从心了,正是基于这样一种情况,一种新的内存技术应允而生了,这就是ECC(错误检查和纠正),这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。总之,在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。

示例

ECC(Error Checking and Correcting,错误检查和纠正)内存,它同样也是在数据位上额外的位存储一个用数据加密的代码。当数据被写入内存,相应的ECC代码与此同时也被保存下来。当重新读回刚才存储的数据时,保存下来不ECC代码就会和读数据时产生的ECC代码做比较。如果两个代码不相同,他们则会被解码,以确定数据中的哪一位是不正确的。然后这一错误位会被抛弃,内存控制器则会释放出正确的数据。被纠正的数据很少会被放回内存。假如相同的错误数据再次被读出,则纠正过程再次被执行。重写数据会增加处理过程的开销,这样则会导致系统性能的明显降低。如果是随机事件而非内存的缺点产生的错误,则这一内存地址的错误数据会被再次写入的其他数据所取代。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5087

    文章

    19149

    浏览量

    306210
  • ECC
    ECC
    +关注

    关注

    0

    文章

    97

    浏览量

    20587
收藏 人收藏

    评论

    相关推荐

    芯片封装工艺详细讲解

    芯片封装工艺详细讲解
    发表于 11-29 14:02 1次下载

    TDAxx上的ECC/EDC

    电子发烧友网站提供《TDAxx上的ECC/EDC.pdf》资料免费下载
    发表于 10-11 10:19 0次下载
    TDAxx上的<b class='flag-5'>ECC</b>/EDC

    DDR Inline ECC在Jacinto7 SoC中的应用

    电子发烧友网站提供《DDR Inline ECC在Jacinto7 SoC中的应用.pdf》资料免费下载
    发表于 09-27 11:04 0次下载
    DDR Inline <b class='flag-5'>ECC</b>在Jacinto7 SoC中的应用

    电感技术的讲解

    详细讲解电感的原理及计算
    的头像 发表于 09-06 02:07 2256次阅读
    电感技术的<b class='flag-5'>讲解</b>

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL库)

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL库)
    的头像 发表于 08-21 16:31 2746次阅读
    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(<b class='flag-5'>详细</b><b class='flag-5'>讲解</b>+HAL库)

    电流互感器极性校验的方法

    测量和保护系统的准确性和可靠性至关重要。本文将详细介绍电流互感器极性校验的方法,包括原理、步骤、注意事项和实际应用。 一、电流互感器极性校验的原理 电流互感器的工作原理是利用电磁感应原理,将一次侧的高电流转换为二次侧的低电流。在
    的头像 发表于 06-24 10:41 1755次阅读

    Traveo T2G SRAM不是32位的吗?如何得到一个64位的?

    在进行sram的ecc故障注入的时候,需要计算其ecc校验值,在手册上有这样的描述 10.3.4 由软件生成 ECC 奇偶校验 要注入
    发表于 06-03 08:49

    PSoC5LP:ECC总是返回失败的原因?

    ECC 后,使用 AN78175 项目提供的示例和 SelfTest_FlashECC() 函数应该很容易: uint8_t SelfTest_FlashECC(void) { uint8_t
    发表于 05-30 08:15

    CYT4BF的监管区 (SFlash) 是否支持 ECC

    CYT4BF 的监管区 (SFlash) 是否支持 ECC? 如果支持 ECC, 控制 ECC 的寄存器是否与 FLASHC/FLASHC1_FLASH_CTL.MAIN_ECC_EN
    发表于 05-23 07:26

    CRC(循环冗余校验)应用举例

    CRC(循环冗余校验)应用举例
    的头像 发表于 05-16 16:12 1327次阅读

    STM32G系列ECC校验错误,进入NMI中断后如何处理?

    ,断电重启无法恢复。经过一系列的排查,应该是由于在上下电的过程中,Flash数据更新的过程中,造成ECC未写入,造成最终读Flash时,ECC错误,造成了NMI中断。。由于G系列比较新,我们只是搜到了一片
    发表于 03-29 07:43

    浅析MCU通信、存储常用的简单校验算法

    UART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。
    的头像 发表于 03-07 10:56 534次阅读
    浅析MCU通信、存储常用的简单<b class='flag-5'>校验</b>算法

    求助,如何在aurix中测试Flash ECC

    嗨英飞凌!! 我需要在闪存中测试 TC39x 微控制器的 ECC 错误检测,有一些文档描述了注入错误的正确程序?
    发表于 01-31 06:27

    Pflash和Dflash都有闪存ECC保护,ECC内存在哪里?

    在用户手册中,Pflash 和 Dflash 都有闪存 ECC 保护,我想知道 ECC 内存在哪里? 它会占用 pflash 空间还是存储在用户无法访问的地方? 在此先谢谢!
    发表于 01-26 08:12

    Aurix pFlash内存部分是如何在微控制器级别上创建ECC写入错误的?

    我正在查看 Aurix pFlash 内存部分是如何在微控制器级别上创建 ECC 写入错误的,以及他们是如何通过故障注入技术使用它产生多位错误的 通常 ecc 错误是使用高电压和其他方法产生的,但
    发表于 01-22 07:37