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比特错误的概率也就越大),具体原理后面再分析。

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

    关注

    9

    文章

    3173

    浏览量

    76112
  • ECC
    ECC
    +关注

    关注

    0

    文章

    100

    浏览量

    21554
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    内存与数据处理优化艺术

    ,避免了数组索引的额外计算。 选择合适的数据类型同样重要。如果一个变量只需要表示0或1,使用最小所需的数据类型就使用较大的类型更好,因为它占用内存更少,可能提高缓存利用率。 对于浮点运算,在不需要
    发表于 11-14 07:46

    WebGL/Canvas 内存泄露分析

    在构建高性能、长周期运行的 WebGL/Canvas 应用(如 3D 编辑器、数据可视化平台)时,内存管理是一个至关重要且极具挑战性的课题。 开发者通常面临的内存泄漏问题,其根源远比简单
    的头像 发表于 10-21 11:40 167次阅读
    WebGL/Canvas <b class='flag-5'>内存</b>泄露分析

    科普:什么AI 内存技术

    AI 内存是一种专为人工智能 (AI) 应用设计的新型内存技术。与传统的通用内存(如 DDR5 或 LPDDR5)不同,AI 内存的核心目标是解决 AI 计算中遇到的两大挑战:带宽瓶颈
    的头像 发表于 09-03 15:44 713次阅读

    工业网关的内存有什么功能

    工业网关的内存是其核心硬件组件之一,承担着保障设备高效、稳定运行的关键作用,具体功能可从以下几个方面详细说明: 一、临时数据存储与处理 实时数据缓存:工业网关需要实时采集来自传感器、PLC(可编程
    的头像 发表于 08-15 10:15 424次阅读

    golang内存分配

    作者:钱文 Go 的分配采用了类似 tcmalloc 的结构.特点: 使用一小块一小块的连续内存页, 进行分配某个范围大小的内存需求. 比如某个连续 8KB 专门用于分配 17-24 字节,以此减少
    的头像 发表于 03-31 15:00 383次阅读
    golang<b class='flag-5'>内存</b>分配

    快速搞懂C语言程序内存分区!

    在程序运行过程中,操作系统会根据程序的需要,将内存划分为多个功能不同的区段,以便更高效地管理内存资源和确保程序的稳定运行。不同的内存区段负责存储不同类型的数据和代码,涵盖了从程序指令、
    的头像 发表于 03-14 17:37 1330次阅读
    快速搞懂C语言程序<b class='flag-5'>内存</b>分区!

    内存不够时,stm32h7 ITCM可以当普通ram用吗?

    内存不够时,stm32h7 ITCM可以当普通ram用吗
    发表于 03-14 06:13

    速度更快,传输更稳定的工业相机COF接口

    工业相机的数据接口之一COF接口,速度更快,传输更稳定的。
    的头像 发表于 03-10 17:32 862次阅读
    速度更快,传输<b class='flag-5'>更稳定</b>的工业相机COF接口

    DDR内存控制器的架构解析

    DDR内存控制器是一个高度集成的组件,支持多种DDR内存类型(DDR2、DDR3、DDR3L、LPDDR2),并通过精心设计的架构来优化内存访问效率。
    的头像 发表于 03-05 13:47 3242次阅读
    DDR<b class='flag-5'>内存</b>控制器的架构解析

    DLP6500存储内存为128m,存储图片数量少,请问能否对其进行扩容?

    根据用户手册,DLP6500存储内存为128m,存储图片数量少,请问能否对其进行扩容?或者有其他方法提高存储容量吗?
    发表于 02-21 06:48

    HarmonyOS官网上线“稳定性”专栏 助力更稳定流畅的鸿蒙原生应用开发

    鸿蒙应用稳定性是影响用户体验的重要因素之一,常见的稳定性问题包括:崩溃、应用Freeze、内存泄漏、内存越界等。这类问题的定界与定位往往需要丰富的经验积累和技术沉淀,定位过程通常耗时耗
    发表于 02-17 17:17

    华为助力更稳定流畅的鸿蒙原生应用开发

    鸿蒙应用稳定性是影响用户体验的重要因素之一,常见的稳定性问题包括:崩溃、应用Freeze、内存泄漏、内存越界等。这类问题的定界与定位往往需要丰富的经验积累和技术沉淀,定位过程通常耗时耗
    的头像 发表于 02-10 14:03 1007次阅读
    华为助力<b class='flag-5'>更稳定</b>流畅的鸿蒙原生应用开发

    hyper v 内存,hyper v 内存设置的操作步骤和方法是什么?

    在利用Hyper-V搭建和管理虚拟机的过程中,合理设置虚拟机的内存至关重要。内存分配是否恰当,会直接影响到虚拟机的运行性能和稳定性。若内存分配过少,虚拟机可能运行缓慢甚至频繁卡顿;而分
    的头像 发表于 01-24 15:22 1092次阅读
    hyper v <b class='flag-5'>内存</b>,hyper v <b class='flag-5'>内存</b>设置的操作步骤和方法是什么?

    hyper 内存,Hyper内存:如何监控与优化hyper-v虚拟机的内存使用

    在日常工作中,我们常常需要处理大量的文件和数据,这些重复性任务不仅耗时耗力,还容易因疲劳而导致错误。幸运的是,批量管理工具的出现为这一问题提供了高效的解决方案。今天就为大家介绍Hyper内存
    的头像 发表于 01-24 14:15 1672次阅读
    hyper <b class='flag-5'>内存</b>,Hyper<b class='flag-5'>内存</b>:如何监控与优化hyper-v虚拟机的<b class='flag-5'>内存</b>使用

    国产DDR5内存上市,内存市场价格战一触即发

    随着国产DDR5内存的上市,内存市场的竞争态势即将迎来新的变化。DRAM内存作为半导体产业的明星产品,据市调机构Trendforce预估,2024年全球DRAM内存的产值将达到约907
    的头像 发表于 01-07 15:53 2275次阅读