对于IT业界人士来说,服务器挂掉就是毁灭性的了。其实不用担心,ECC内存这类技术的出现可以相应程度上避免这个问题。内存条ecc是什么意思?
ECC的全称是Error Checking and Correcting(错误检查和纠正),是一种运用到内存条上的纠错技术。当内存出现部分读写错误时,它可以检查错误并进行纠正,不因错误而中断,以提高数据的完整性和系统可靠性,保证系统能长时间稳定运行。需要注意的是,目前只有工作站或服务器级处理器与主板才支持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的英文全称是“ 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内存可以检测并纠正错误,减少宕机、蓝屏、死机的问题,保证机器长时间稳定运行。毕竟一次严重的宕机,可能会造成无法挽回的损失。
所以,对于工作站和服务器来说,ECC内存是非常重要的存在。
关于内存条ecc是什么意思的讲解就先到这里了,感兴趣的朋友可以留言探讨,毕竟现在某宝上有大把廉价的RDIMM服务器内存,想装一台工作站干点硬活的朋友应该也不少。
Copyright 2020-2026 同袍存储 粤ICP备2021121885号网站地图