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

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

3天内不再提示

企业级内存条的Memory ECC

SSDFans 来源:ssdfans 2020-08-21 16:36 次阅读

我们今天来简单讨论一下企业级内存条的Memory ECC。

图 (1)

图(1)是一个带有ECC的RDIMM,图中我们已经将各个组件和关键的金手指信号区域标示出来。首先,我们来认识一下这几个关键词: Device:内存颗粒,根据其存放内容不同,又分为数据颗粒和ECC颗粒。通常有X4,X8和X16,代表每个颗粒对外的数据线路是4 lane,8 lane和16 lane。

Channel:一个Channel由一个或者多个Rank组成,其宽度由控制器决定。当前主流的个人电脑和服务器中,一个Channel的宽度为64bit,可根据内存控制器是否支持ECC而扩展额外的8bit。也就是说如果不支持ECC的Channel,其宽度为64bit,而支持ECC的Channel,其宽度为72bit。市面上两种内存条都有销售。

Rank:一个Channel里面,同一个CS(Chip Select)信号选中的所有Device就是一个Rank。同一个Rank中所有的Device共用命令,地址和控制信号。拿读操作举例,内存控制器发起的一个读操作,其实将作用于该Channel的某个Rank中所有的Device。所有Device的数据线共同输出达到内存控制器所需的宽度。例如,采用X4的颗粒,组成不带ECC功能的一个Rank则需要64/4 = 16个X4的Device。大家可以计算一下如果采用X8或者X16宽度的颗粒,需要多少个呢?

注:本文我们将主要以X4的Device来讨论

注:X16的颗粒一般不被用来组成带ECC的Rank

Cacheline:Cacheline通常是指是处理器中Cache Unit(缓存模块)缓存一笔数据的标准大小。根据处理器的不同,Cacheline的大小是不一样的。当前主流的个人电脑和服务器中,Cacheline的大小为64 Byte。为了设计方便,处理器内部搬运可被缓存的数据也采用同样的大小64B。为了满足该需求,一个Rank被设计成了64bit的数据位宽,而JEDEC(DDR标准组织)设计了burst传输。一个Burst的长度可以是8,从而一次读操作,可以让颗粒一次吐出8笔数据。从而达到64bit X 8 = 64B的大小。具体参考图(2)。

图(2)

CE(CorrectableError):可纠正错误是指硬件芯片)可以直接纠正的错误。由于内存控制器设计不一样,对于可纠正错误的能力可能存在不同。例如,主流x86服务器的内存控制器(支持带ECC的内存条),在一次读操作中,一个X4宽度的Device内的任意错误都是可纠正的,包括ECC的Device。如果Rank是X8宽度的Device组成,其纠正能力还是与X4的Device宽度及位置保持一致。在X8的一个Device中,只有DQ0-3,或者DQ4-7可以被纠正。如果是DQ2-5,虽然是X4宽度但位置与X4时不对应,也无法纠正。

注:DQ0即D0,或者D0_0,DQ63则是D63,或者D15_3

UCE(Uncorrectable Error):不可纠正错误是指硬件(芯片)无法直接纠正的错误。例如,在一次读操作中,错误数据位分布在不同X4的Device范围,以现有内存控制设计来看,属于不可纠正错误。

下面我们简单介绍一下内存控制器是如何侦错和纠错的。由于ECC具体算法属于各家的IP,这里介绍的方法只是帮助大家理解该功能。首先,内存控制器能够纠错,就必须先能发现错误。如果每次消费的数据大小是64B,在不增加额外信息的情况下,我们是无法知道该数据是否有改变的,因为64B的数据可以是任何01的组合,即任意数据都是合法的。另一方面,额外的信息需要额外的存储,从成本考虑,这额外信息应该越小越好。JEDEC组织提出增加额外8 x 8 = 64bit的数据来帮助一个64B的数据完成ECC。 从物理角度看,一个X4 Device组成的Rank将会增加两个Device用于ECC。一种可行的做法是,其中一个Device负责存放CRC(Cyclic Redundancy Check)校验信息用于侦错,另一个Device负责存放奇偶校验信息(Parity),配合纠正错误。

Parity:Parity基本功能是发现保护数据中是否有bit翻转。保护方法是统计保护数据中1的个数,如果是偶校验,当保护数据中1的个数是偶数时,Parity为0,否则为1,所以Parity只需要一个bit就能发现保护数据中是否有一个bit的数据翻转(0到1或者1到0)。当然对于奇数个bit都有一样的检测效果。但当偶数bit翻转的时候,Parity将无法知道。在了解了Parity基本功能后,我们来看看内存控制器是如何计算Parity并存放的。如图(3)所示。

图(3)

Burst传输中每一笔64bit数据,4bit Parity和4bit CRC的具体对应关系如下: P0=D0_0+D1_0+D2_0+…D15_0+C0 P1=D0_1+D1_1+D2_1+…D15_1+C1 P2=D0_2+D1_2+D2_2+…D15_2+C2 P3=D0_3+D1_3+D2_3+…D15_3 +C3

注:D15_3为Device15的DQ3信号,从Rank角度看,为图中的D63

假设Device 2 在Burst的第三笔数据中有bit翻转,则无论是D2_0, D2_1, D2_2, D2_3 或者都错了,请参考图(4),我们都可以通过Parity bits反算回来,前提是burst的第三笔数据中其他Device没有出现错误。具体计算如下:

D2_0=P0(-)(D0_0+D1_0+D3_0…D15_0+C0)

D2_1=P1(-)(D0_1+D1_1+D3_1…D15_1+C1)

D2_2=P2(-)(D0_2+D1_2+D3_2…D15_2+C2)

D2_3=P3(-)(D0_3+D1_3+D3_3…D15_3+C3)

图(4)

CRC:我们怎样知道读取的Cacheline数据是正确的还是错误的?这里将会用到CRC来进行校验。一种比较简单的校验方式就是除法。我们设计一个除数,让被保护数据(被除数)去除以这个除数,然后会得到商和余数。通常余数比设计的除数要小。在存储一个Cacheline大小数据到内存条上的时候,内存控制器会计算CRC的值,并存放到CRC的Device中去。读取的时候再计算一遍,然后和内存条读回来的CRC的值进行比较。如果一致,则认为数据没有发生变化。否则,认为数据出错。 从上述理论可以推出,CRC校验位越多,则侦错能力越强。CRC设计不一样,侦错不同数据翻转的能力不同。可能存在数据错了,但侦错不了的情况。 既然有漏测的情况,为什么我们还会继续使用?这就和错误类型的概率有关了。通常情况下,一个bit翻转的可能性比较高,多bit同时翻转的可能性比较低。多bit翻转在同一个device里的几率比较高,多device同时翻转的概率比较低。 举个例子,当一个Cacheline的数据从内存条里读出来后,通过CRC校验,我们会发现数据有可能已经发生改变。这个时候,我们先假设出现了CE(Correctable Error)问题。则通过Parity信息反算Device数据,需要一个Device一个Device的假设,然后重新计算CRC和之前存储的CRC进行比较。所以最多的情况可能要假设18次。 如果全部弄完仍然CRC对不上,则属于UCE(Uncorrectable Error)问题啦。当然,大家会发现,ECC校验过程会影响内存读写延时。

到这里,大家应该了解了Memory ECC的基本算法了,Parity针对的是每个Burst,CRC是以半个CacheLine或者其他大小为单位处理的。如果是跨Device的Error,真的无法纠错吗?如果有,请将你的实现方案发给我们吧,我们将在下期公布读者的“可行”方案哦。

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

    关注

    68

    文章

    19155

    浏览量

    229053
  • 服务器
    +关注

    关注

    12

    文章

    9010

    浏览量

    85162
  • 内存条
    +关注

    关注

    0

    文章

    143

    浏览量

    19498

原文标题:真相!企业级内存条到底牛在哪儿?

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何选择DDR内存条 DDR3与DDR4内存区别

    随着技术的不断进步,计算机内存技术也在不断发展。DDR(Double Data Rate)内存条作为计算机的重要组成部分,其性能直接影响到电脑的运行速度和稳定性。DDR3和DDR4是目前市场上最常
    的头像 发表于 11-20 14:24 175次阅读

    佰维特存推出工业ECC DDR4 SODIMM内存条,守护极端环境下的工业存储需求

    为应对严苛环境下的数据存储挑战,近日,佰维存储旗下工车规存储品牌 佰维特存 推出工业宽温ECC DDR4 SODIMM内存条,宽温精选颗粒,数据速率达 3200Mbps ,容量覆盖 4GB
    发表于 11-15 14:49 255次阅读
    佰维特存推出工业<b class='flag-5'>级</b><b class='flag-5'>ECC</b> DDR4 SODIMM<b class='flag-5'>内存条</b>,守护极端环境下的工业存储需求

    十铨科技推出首款工业DDR5 6400MT/s内存条

    近日,十铨科技在工控领域取得了重大突破,发布了业界首款工业DDR5 6400MT/s CUDIMM/CSODIMM内存条。这款内存条基于SK海力士原厂DRAM颗粒设计,专为工业应用而打造,展现了十
    的头像 发表于 10-25 13:51 319次阅读

    金士顿发布FURY Renegade DDR5 CUDIMM内存条

    近日,金士顿公司正式宣布将推出全新的FURY Renegade DDR5 CUDIMM内存条,该内存条专为兼容英特尔酷睿Ultra第二代桌面处理器而设计。 据悉,首批FURY Renegade
    的头像 发表于 10-25 13:36 339次阅读

    金百达、精亿、光威这三个品牌的内存条哪个好?

    金百达、精亿和光威这三个品牌在内存条市场上都有一定的市场份额和用户评价,具体选择哪个品牌需要根据个人需求和预算来决定。   价格范围  ·100-300元 ‌:精亿赤龙银甲系列、光威内存条(天策系列
    的头像 发表于 10-25 11:01 665次阅读

    英睿达推出首批CUDIMM、CSODIMM内存条

    10月16日最新消息,美光公司在其位于美国爱达荷州博伊西的总部宣布,其消费品牌Crucial英睿达正式推出了首批CUDIMM和CSODIMM内存条。这一举措标志着原厂品牌首次面向零售市场推出此类产品。
    的头像 发表于 10-16 15:20 409次阅读

    电脑内存条的作用和功能

    电脑内存条是计算机系统中不可或缺的组成部分,它在提升计算机性能、增强多任务处理能力以及优化用户体验方面发挥着至关重要的作用。以下将详细阐述电脑内存条的作用和功能,包括其数据存储、速度影响、空间优化、效率提升、辅助CPU运算、系统稳定性等多个方面。
    的头像 发表于 09-10 14:18 1738次阅读

    内存时钟和内存条有什么不同

    在探讨内存时钟(Memory Clock)和内存条Memory Module)的不同时,我们首先需要明确这两个概念的基本定义和它们在计算机系统中的角色。以下是对这两个概念的详细解析,
    的头像 发表于 09-04 11:45 1119次阅读

    内存条接触不良会导致哪些情况

    内存条接触不良是一种常见的计算机故障,它可能会导致多种问题,影响计算机的正常运行。本文将详细介绍内存条接触不良可能导致的各种情况,以及如何诊断和解决这些问题。 计算机无法启动 内存条接触不良最明显
    的头像 发表于 09-02 14:36 1345次阅读

    卓越性能精亿内存条赤龙银甲系列DDR4 16G(8GX2) 3200 内存条测评 值得推荐价格亲民质量过硬的国货老牌

    引言   随着计算机技术的不断发展,内存作为电脑的重要组成部分之一,其性能直接影响着系统的运行效率。本文将对精亿内存条赤龙银甲系列DDR4 16G(8GX2) 3200套装内存条进行详细测评,探讨其
    的头像 发表于 07-25 17:42 721次阅读
    卓越性能精亿<b class='flag-5'>内存条</b>赤龙银甲系列DDR4 16G(8GX2) 3200 <b class='flag-5'>内存条</b>测评 值得推荐价格亲民质量过硬的国货老牌

    DDR5内存条上的时钟走线

    DDR5标准JESD79-5文件中没有明确的控制阻抗建议,DDR4时代基本内存条上时钟阻抗还是跟着芯片、主板走的70-80欧姆。线宽相对而言比较细。不知道你开始使用DDR5没有,你有关注过DDR5内存条上的时钟走线吗?
    的头像 发表于 07-16 17:47 1644次阅读
    DDR5<b class='flag-5'>内存条</b>上的时钟走线

    研华工控机购买指南:DDR3、DDR4、DDR5怎么选?如何选择内存条

    在选购研华工控机时,内存条的选择至关重要。内存条不仅影响工控机的整体性能,还直接影响系统的稳定性和响应速度。针对不同的应用需求,选购合适的内存条能够显著提升工控机的效率和可靠性。本文苏州研讯电子科技
    的头像 发表于 06-28 09:57 799次阅读
    研华工控机购买指南:DDR3、DDR4、DDR5怎么选?如何选择<b class='flag-5'>内存条</b>?

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

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

    企业级SSD-高性能系列固态硬盘推荐

    除了传统的机械盘HDD,固态硬盘SSD也开始慢慢地在企业级硬盘领域发挥重要的作用。由于企业级固态硬盘的价格远远高于机械硬盘,因此固态硬盘在企业级领域应用还不是很广泛,但是就发展趋势而言,很有可能会全面代替机械硬盘。
    的头像 发表于 01-23 16:48 1135次阅读
    <b class='flag-5'>企业级</b>SSD-高性能系列固态硬盘推荐

    详解内存条内存颗粒

    变为64bit,即8个字节,于是SIMM就顺势变为DIMM(Double-Inline Memory Module)。这种形态一直延续至今,也是内存条的基本形态。
    的头像 发表于 12-16 15:00 3816次阅读
    详解<b class='flag-5'>内存条</b>和<b class='flag-5'>内存</b>颗粒