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

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

3天内不再提示

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

kae1_cdebyte 来源:亿佰特物联网应用专家 2023-03-08 13:53 次阅读

为什么需要ECC内存?

因为硬盘的速度远远比不上CPU的速度,所以电脑在程序运行时CPU都会先把要执行的代码和各种数据从硬盘读取到内存(单片机这种小CPU除外),之后和内存交互数据,所以内存的稳定性很大程度上决定了电脑的稳定性。

但是在电脑的运行环境中,存在着各式各样的干扰,包括EMI电磁干扰、电源纹波干扰等,这些干扰会导致内存在和CPU交互数据时发生比特翻转(某个0变成1),如果比特翻转发生在某些不重要的位置上,比如某张图片或者某个视频流里面,使用者很有可能会感受不到。

但是一旦发生在某个代码里面,轻则导致软件报错或者闪退,重则蓝屏死机或hardfault,对于普通PC来说还算能接受,毕竟概率很小,但是对于服务器来讲,一次宕机可能会造成灾难性的损失,所以服务器往往会使用稳定性更高的ECC内存。

汉明码原理

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

汉明码原理总结来说就是奇偶校验+交集排除,奇偶校验负责检测错误,交集排除负责定位错误的位置。

奇偶校验:根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。以偶校验为例,在每组数据中增加一个奇偶校验位,若原始数据1的个数为奇数,那奇偶校验位就补1,若原始数据1的个数本身就是偶数那奇偶校验位就不用补1,用0代替。奇偶校验有个巧妙的地方,就是奇偶校验位本身也能被校验,这也是奇偶校验能和交集排除配合使用的一个必要前提。

交集排除:简单来说就是元素A若同时在集合B和集合C中,如果A、B、C都存在的话,那A一定在B∩C中。下面以一个4*4的数据举例说明。

bd8ebd16-baa4-11ed-bfe3-dac502259ad0.png

1.为了使用交集排除,先把4*4的数据分成下图4个区:

bd9d1172-baa4-11ed-bfe3-dac502259ad0.png

2.在1区使用偶校验得出没有错误:

bdaf6c50-baa4-11ed-bfe3-dac502259ad0.png

3.在2区使用偶校验得出有错误:

bdbe3a50-baa4-11ed-bfe3-dac502259ad0.png

4.在3区使用偶校验得出有错误:

bdca2b4e-baa4-11ed-bfe3-dac502259ad0.png

5.在4区使用偶校验得出没有错误:

bddf92cc-baa4-11ed-bfe3-dac502259ad0.png

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

bdedaefc-baa4-11ed-bfe3-dac502259ad0.png

总结

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

审核编辑:汤梓红

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

    关注

    6027

    文章

    44470

    浏览量

    631447
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10789

    浏览量

    210608
  • 硬盘
    +关注

    关注

    3

    文章

    1280

    浏览量

    57180
  • 内存
    +关注

    关注

    8

    文章

    2955

    浏览量

    73770
  • ECC
    ECC
    +关注

    关注

    0

    文章

    96

    浏览量

    20514

原文标题:干货|ECC内存为什么比普通内存更稳定?

文章出处:【微信号:cdebyte,微信公众号:亿佰特物联网应用专家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    服务器内存ECC和RECC之间能否兼容?

    内存ECC到底是什么意思?服务器内存ECC和RECC之间能否兼容?服务器内存ECC和RECC之间
    发表于 06-18 09:34

    SIMM ECC 72线内存条引脚定义

    SIMM ECC 72线内存条引脚定义 SIMM 是 Single Inline Memory Module (单列直插) 的缩写,ECC 是 Error Correcting Code (纠错码) 的缩写,外观为: &n
    发表于 11-21 12:48 1195次阅读
    SIMM <b class='flag-5'>ECC</b> 72线<b class='flag-5'>内存</b>条引脚定义

    什么是内存ECC校验

    什么是内存ECC校验   
    发表于 12-25 14:28 2090次阅读

    什么是ECC内存

    什么是ECC内存 ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现“错误检查和纠正”的技术,
    发表于 01-12 15:42 865次阅读

    如何提高内存稳定

    如何提高内存稳定性    问:在升级内存、对内存做了优化设置之后,我感觉系统有些不稳定,主要表现为长时间下载偶尔会死
    发表于 02-25 11:35 1612次阅读

    有必要买ECC内存

    ECC内存其实用于大规模计算的云服务和虚拟机应用越来越广泛,也就意味着服务器不仅仅只对大公司,对普通的消费者来说也是很重要的。
    的头像 发表于 01-09 16:10 1.5w次阅读

    科普一些服务器内存ECC和RECC的相关小知识

    有不少用户不清楚如何选购服务器内存,与台式机电脑普通内存型号相比较起来,服务器内存是带有ECC或者RECC标注的,那么
    发表于 10-14 10:34 1.1w次阅读

    什么是ECC内存 ECC内存的工作原理

    ECC的英文全称是“ Error Checking and Correcting”(错误检查和纠正),从这个名称就可以看出它的主要功能就是“发现并纠正错误”。
    发表于 03-22 13:39 5.1w次阅读

    低电压内存普通内存的区别有哪些

    在选购笔记本的时候,有的型号会标注为低电压的内存条或者是后缀带有L,那么低电压内存普通内存的区别有哪些,下面就为大家带来相关的介绍。
    发表于 05-25 10:14 4203次阅读

    企业级内存条的Memory ECC

    一个Channel由一个或者多个Rank组成,其宽度由控制器决定。当前主流的个人电脑和服务器中,一个Channel的宽度为64bit,可根据内存控制器是否支持ECC而扩展额外的8bit。也就是说如果
    的头像 发表于 08-21 16:36 5987次阅读
    企业级<b class='flag-5'>内存</b>条的Memory <b class='flag-5'>ECC</b>

    Linux 系统抨击英特尔目前禁止消费级平台使用 ECC 自动纠错内存的政策

    1月4日消息 据外媒 techradar 消息,Linux 系统的发明人 Linus Torvalds 在参加一场活动时发表讲话,抨击英特尔目前禁止消费级平台使用 ECC 自动纠错内存的政策
    的头像 发表于 01-05 11:06 2585次阅读

    nonecc内存ecc内存的区别

     ecc内存就是能够实现错误检查和纠正技术的内存条,多应用于服务器和图形工作站上。
    的头像 发表于 09-19 16:18 1.4w次阅读

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

    为什么需要ECC内存?因为硬盘的速度远远比不上CPU的速度,所以电脑在程序运行时CPU都会先把要执行的代码和各种数据从硬盘读取到内存(单片机这种小CPU除外),之后和内存交互数据,所以
    的头像 发表于 03-06 10:59 1699次阅读
    干货|<b class='flag-5'>ECC</b><b class='flag-5'>内存为</b>什么<b class='flag-5'>比</b><b class='flag-5'>普通</b><b class='flag-5'>内存</b><b class='flag-5'>更稳定</b>?

    RK358支持全链路ECC的DDR和普通内存有何区别?

    ECC内存(ErrorCorrection Code Memory)和普通内存是计算机存储技术中常见的两种类型的内存。它们在设计和功能上有一
    的头像 发表于 09-22 16:57 1661次阅读
    RK358支持全链路<b class='flag-5'>ECC</b>的DDR和<b class='flag-5'>普通</b><b class='flag-5'>内存</b>有何区别?

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

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