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

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

3天内不再提示

干货|ECC内存为什么比普通内存更稳定?

亿佰特物联网应用专家 2023-03-06 10:59 次阅读

为什么需要ECC内存?因为硬盘的速度远远比不上CPU的速度,所以电脑在程序运行时CPU都会先把要执行的代码和各种数据从硬盘读取到内存(单片机这种小CPU除外),之后和内存交互数据,所以内存的稳定性很大程度上决定了电脑的稳定性。但是在电脑的运行环境中,存在着各式各样的干扰,包括EMI电磁干扰、电源纹波干扰等,这些干扰会导致内存在和CPU交互数据时发生比特翻转(某个0变成1),如果比特翻转发生在某些不重要的位置上,比如某张图片或者某个视频流里面,使用者很有可能会感受不到。但是一旦发生在某个代码里面,轻则导致软件报错或者闪退,重则蓝屏死机或hardfault,对于普通PC来说还算能接受,毕竟概率很小,但是对于服务器来讲,一次宕机可能会造成灾难性的损失,所以服务器往往会使用稳定性更高的ECC内存。47315808-b929-11ed-ad0d-dac502259ad0.png

汉明码原理

为什么ECC内存能纠错呢?就是因为使用了汉明码编码。更准确来说,目前绝大多数ECC内存都是使用的汉明码来发现并纠错的。汉明码在一组数据中最多只能纠错1个比特或者最多发现2个比特的错误,超过2个比特的错误就有概率通过汉明码校验,这是前提,只有在这个基础上我们才能推出后面的结论。

汉明码原理总结来说就是奇偶校验+交集排除,奇偶校验负责检测错误,交集排除负责定位错误的位置。奇偶校验:根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。以偶校验为例,在每组数据中增加一个奇偶校验位,若原始数据1的个数为奇数,那奇偶校验位就补1,若原始数据1的个数本身就是偶数那奇偶校验位就不用补1,用0代替。奇偶校验有个巧妙的地方,就是奇偶校验位本身也能被校验,这也是奇偶校验能和交集排除配合使用的一个必要前提。交集排除:简单来说就是元素A若同时在集合B和集合C中,如果A、B、C都存在的话,那A一定在B∩C中。下面以一个4*4的数据举例说明。4776a6e2-b929-11ed-ad0d-dac502259ad0.png1.为了使用交集排除,先把4*4的数据分成下图4个区:4796e11e-b929-11ed-ad0d-dac502259ad0.png2.在1区使用偶校验得出没有错误:47a93d00-b929-11ed-ad0d-dac502259ad0.png3.在2区使用偶校验得出有错误:47c49c80-b929-11ed-ad0d-dac502259ad0.png4.在3区使用偶校验得出有错误:47ddea96-b929-11ed-ad0d-dac502259ad0.png5.在4区使用偶校验得出没有错误:47f6a4a0-b929-11ed-ad0d-dac502259ad0.png

6.综合2、3、4、5的结论就可以得出,错误数据同时在2区和3区,并且1区和4区没有错误,所以错误数据一定在如下(2,3)的位置,所以把(2,3)的1改为0就能得到正确的一组数据。4811a516-b929-11ed-ad0d-dac502259ad0.png482acc12-b929-11ed-ad0d-dac502259ad0.png

总结


以上就是汉明码最基础的原理,但这并不是汉明码被广泛运用在内存纠错的全部原因,因为单纯比纠错能力,它远远没有LDPC低密度校验码强,能被广泛运用的原因是汉明码能用极少的硬件电路实现(4*4的数据只需要5级异或门),而且有效数据比很高(一组数据只需要在2的整数次方的比特位置插入一个比特的校验位,有效数据比成指数级提高,当然一组数据越长超过2比特错误的概率也就越大),具体原理后面再分析。

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

    关注

    8

    文章

    3020

    浏览量

    74008
  • ECC
    ECC
    +关注

    关注

    0

    文章

    97

    浏览量

    20557
收藏 人收藏

    评论

    相关推荐

    虚拟内存和云计算的关系

    在现代计算机科学中,虚拟内存和云计算是两个关键的技术概念。虚拟内存是一种内存管理技术,它允许计算机使用物理内存更多的
    的头像 发表于 12-04 09:50 112次阅读

    虚拟内存不足如何解决 虚拟内存和物理内存的区别

    虚拟内存不足的解决方案 虚拟内存不足是计算机用户经常遇到的问题,尤其是在运行大型软件或多任务处理时。以下是一些解决虚拟内存不足问题的方法: 增加物理内存(RAM) : 这是最直接的解决
    的头像 发表于 12-04 09:14 363次阅读

    内存蓝屏死机?内存验货指南你值得拥有

    内存领域,稳定性无疑是用户最需要关注的指标。由于身负整机数据交换的重任,因此其品质极大程度上决定着使用过程中,是否会出现蓝屏、死机等问题。本期我们将以墨云藏境系列DDR5 RGB国风内存为例,为
    的头像 发表于 12-02 15:38 108次阅读
    新<b class='flag-5'>内存</b>蓝屏死机?<b class='flag-5'>内存</b>验货指南你值得拥有

    如何测试DDR内存稳定

    测试DDR内存稳定性是确保计算机系统稳定运行的重要步骤。以下是一些常用的测试DDR内存稳定性的方法: 一、使用专业测试软件 MemTest
    的头像 发表于 11-29 15:01 441次阅读

    反射内存卡是如何保障数据传输的稳定性的

    反射内存卡数据传输稳定性的保障
    的头像 发表于 11-14 10:21 157次阅读
    反射<b class='flag-5'>内存</b>卡是如何保障数据传输的<b class='flag-5'>稳定</b>性的

    前端总线与内存频率怎么配

    前端总线(FSB)与内存频率的配合是确保计算机系统稳定运行并发挥最佳性能的关键因素之一。以下是对前端总线与内存频率配合关系的介绍: 一、前端总线与内存频率的基本概念 前端总线 :前端总
    的头像 发表于 10-12 09:10 253次阅读

    逻辑内存和物理内存的区别

    逻辑内存和物理内存是计算机系统中两个重要的概念,它们在计算机的运行和数据处理中起着至关重要的作用。 1. 物理内存(Physical Memory) 物理内存,也称为RAM(Rando
    的头像 发表于 09-27 15:38 651次阅读

    简述内存的接口类型

    内存的接口类型多种多样,这些接口不仅决定了内存与主板之间的连接方式,还影响了内存的传输速度和稳定性。
    的头像 发表于 09-10 14:24 2100次阅读

    反射内存交换机与普通交换机的区别

    反射内存交换机与普通交换机在以下几个方面存在明显区别:工作原理和机制:反射内存交换机基于反射内存技术,通过硬件实现数据的快速同步和共享。当一个节点写入数据时,数据会迅速被广播到其他所有
    的头像 发表于 09-05 09:57 562次阅读
    反射<b class='flag-5'>内存</b>交换机与<b class='flag-5'>普通</b>交换机的区别

    内存时钟是什么意思

    内存时钟是内存模块中一个至关重要的参数,它直接关联到内存模块能够工作的最高频率。以下是对内存时钟的详细解析,包括其定义、作用、与内存频率的关
    的头像 发表于 09-04 11:45 1211次阅读

    反射内存卡与普通内存卡的区别

    应用场景和目的反射内存卡:主要用于需要多个设备或系统之间进行高速、实时数据共享和通信的场景,例如工业控制、航空航天等领域。普通内存卡:通常用于个人电子设备,如手机、相机、平板电脑等,用于存储文件
    的头像 发表于 09-04 10:24 603次阅读
    反射<b class='flag-5'>内存</b>卡与<b class='flag-5'>普通</b><b class='flag-5'>内存</b>卡的区别

    服务器内存条和普通内存条的区别

    内存条一般采用ECC DIMM封装形式。ECC DIMM具有额外的错误检测和纠正功能,可以提供更高的数据可靠性,减少硬件故障的风险。 此外,服务器内存条通常具有更多的插槽和更大的容量支
    的头像 发表于 02-19 10:19 8817次阅读

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

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

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

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

    系统内存和运行内存的区别

    系统内存和运行内存都是计算机中重要的概念,它们在计算机的存储和运行方面起着不可或缺的作用。虽然它们与计算机存储和运行息息相关,但是它们具有不同的功能和实现方式。接下来我将详细介绍系统内存和运行
    的头像 发表于 01-15 16:32 3340次阅读