快捷搜索:

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

在ECC技巧呈现之前,内存中利用最多的别的一种差错反省技巧,是奇偶校验位(Parity)技巧。

数字电路中,最小的数据单位是“比特(bit)”,也叫“比特”。“比特”也是内存中的最小单位,它是经由过程“1”和“0”来表示数据高、低电平旌旗灯号。在数字电路中8个继续的比特是一字节,不带“奇偶校验”的内存中的每个字节只有8位,若它的某一位存储出了差错,就会使此中存储的响应数据发生改变而导致利用法度榜样发生差错。

而带有“奇偶校验”的内存在每一字节(8位)外又额外增添了一位用来进行差错检测。比如一个字节中存储了某一数值(1、0、1、0、1、0、1、1),把这每一位相加起来(1+0+1+0+1+0+1+1=5)。对付偶校验,若其结果是奇数,校验位就定义为1,反之则为0;对付奇校验则相反。当CPU返回读取存储的数据时,它会再次相加前8位中存储的数据,谋略结果是否与校验位雷同等。当CPU发明二者不应时就会试图矫正这些差错。

但奇偶校验位技巧有个毛病,当内存查到某个数据位有差错时,因为不必然能确定差错在哪一个位,也就不必然能修正差错。以是带有奇偶校验的内存的主要功能仅仅是“发明差错”,并能矫正部分简单的差错。

此外,奇偶校验技巧是经由过程在原本数据位的根基上增添一个数据位来反省当前8位数据的精确性,但跟着数据位的增添,用来查验的数据位也成倍增添,便是说当数据位为16位时它必要增添2位用于反省,当数据位为32位时则需增添4位,依此类推。分外是当数据量异常大年夜时,数据掉足的几率也就越大年夜,对付只能矫正简单差错的奇偶查验的措施就显得力不从心了。恰是基于这样一种环境,差错反省和矫正(Error Checking and Correcting)应运而生了。

是什么导致内存数据呈现差错?

内存差错是电脑内部的电磁滋扰造成的。这种滋扰会导致 DRAM(动态随机存取内存)的单位自发地变成相反的状态。单位差错可能是隐性的,也便是说,它们不会对数据造成严重影响;然则,内存单元是互相关联的,是以单位变更可能会影响全部系统,从而导致系统掉足,尤其是在必要缜密运行的系统中。

ECC 内存的事情道理

ECC的英文全称是“ Error Checking and CorrecTIng”(差错反省和矫正),从这个名称就可以看出它的主要功能便是“发明并矫正差错”。

与奇偶校验技巧一样,ECC纠错技巧也必要额外的空间来储存校对码,但其占用的位数跟数据的长度并非成线性关系。详细来说,它因此8位数据、5位ECC码为基准,随后每增添一个8位数据只需另增添一位ECC码即可。普通地讲便是,一个8位的数据孕育发生的ECC码要占用5位的空间,而一个16位数据ECC码只需在原本根基上再增添一位,也便是6位;而32位的数据则只需再在原本根基增添一位,即7位的ECC码即可,如斯类推。

ECC码将信息进行8比特位的编码,采纳这种要领可以规复1比特的差错。每一次数据写入内存的时刻,ECC码应用一种特殊的算法对数据进行谋略,其结果称为校验位(check bits)。然后将所有校验位加在一路的和是“校验和”(checksum),校验和与数据一路寄放。当这些数据从内存中读出时,采纳同一算法再次谋略校验和,并和前面的谋略结果相对照,假如结果相同,阐明数据是精确的,反之阐明有差错,ECC可以从逻辑上分离差错并看护系统。当只呈现单比特差错的时刻,ECC可以把差错改正过来不影响系统运行。事情道理见下图:

除了能够反省到并改正单比特差错之外,ECC码还能反省到(但不改正)单DRAM芯片上发生的随意率性2个随机差错,并最多可以反省到4比特的差错。当有多比特差错发生的时刻,ECC内存会天生一个弗成暗藏(non-maskable interrupt)的中断(NMI),会中止系统运行,以避免呈现数据恶化。

显然ECC码的长度跟数据的长度是成对数关系,当数据长度在64位以上的时刻,ECC码在空间占用上就会凸现上风。此外,ECC校验最大年夜的优点是假如数据中有一位差错,它不只能发明而且可以对其更正,ECC校验还可以发明2~4位差错(不能更正),当然这样的环境呈现的几率是异常低的。但ECC码的校验算法比奇偶校验繁杂不少,必要专门的芯片来支持,以是通俗的电脑主板不必然支持。而且由于系统必要光阴来等待校验的结果,以是ECC校验会低落系统速率2%-3%阁下,但这小小的价值换来系统稳定性的大年夜大年夜前进可以说事异常值得的。

留意:ECC不是一种内存类型,只是一种内存技巧,不仅曩昔的EDO内存可以有、SD内存也可有,现在主流的DDR内存同样可以有,以是在现在办事器设置设置设备摆设摆设中我们都可见到“512MB ECC DDR-400内存”之类的字样。那是由于它并不是一种影响内存布局和存储速率的技巧,可以利用到不合的内存类型之中,就象我们常常到的“奇遇校对”内存技巧一样。

ECC内存技巧虽然可以同时检测和矫正单一比特差错,但假犹如时检测出两个以上比特的数据有差错,则力所不及。但跟着基于Intel处置惩罚器架构办事器的CPU机能呈几何级的倍数前进,而硬盘驱动器的机能同期只前进了5倍。是以为了得到足够的机能,办事器必要大年夜量的内存光降时保存在CPU上读取的数据。这样大年夜的数据造访量就导致单一内存芯片上每次造访时平日要供给4(32位)或8(64位)比特以上的数据。一次性读取这么多半据,呈现多位数据差错的可能性会大年夜大年夜地前进,而ECC又不能矫正双比特以上的差错,这样就很可能造玉成部比特数据的损掉,系统就很快崩溃了。

滥觞:吴川斌的博客

您可能还会对下面的文章感兴趣: