服务器上的内存ECC(Error Checking and Correcting)是什么意思?

2024年6月16日09:13:12服务器上的内存ECC(Error Checking and Correcting)是什么意思?已关闭评论

内存ECC(Error Checking and Correcting,错误检查和纠正)本意是指利用错误检查和纠正技术,使内存中的错误数据被检查和纠正过来。其机制为服务器内存的高容错功能,发生该错误的常见情况有两种。一种是可纠正的内存 ECC错误,简称 CE,此种错误并不会影响系统正常运行,只是代表内存中的错误数据被纠正的一条记录,此时错误本身已经被纠正,产生的内存 ECC 错误记录不会对服务器性能和稳定性产生影响,因此对于极少数不连续的报错可以忽略;但是,当 CE 纠错的频率和次数达到一定阈值时(CE 风暴和 CE 溢出),须关注该内存健康状态。另一种是不可纠正的内存 ECC 错误,简称 UCE,这种错误可能直接导致宕机,需要及时更换内存。

服务器上实现内存ECC,需要使用RDIMM(Registered Dual In-line Memory Module,带寄存器的内存)、LRDIMM(Load Reduced Dual In-line Memory Module,低负载双列直插内存)。这两种内存,不同于 UDIMM(Unbuffered Dual In-line Memory Module,无缓冲双列直插内存),除包含存储正常数据的内存颗粒外,还会多几个内存颗粒,用于存储数据的 CRC(Cyclic Redundancy Check,循环冗余校验)值和 PARITY(奇偶校验位)值。这样的内存也被称为带ECC的内存。

实现内存 ECC 的基本原理为,内存控制器每次向内存中写入数据时,会同时将数据及计算出这些数据的 CRC 值+PARITY 值保存到 ECC 内存上。当 CPU需要用到这组数据时,内存控制器会同时读取数据的CRC值+PARITY值;然后根据读取出来的数据再计算一次 CRC 值和 PARITY 值。当发现 CRC 值和PARITY 值与读取到原先存储的 CRC 值和 PARITY 值不同时,内存控制器就会知道数据有错误,并根据 CRC 值和 PARITY 值进行纠正,将原本正确的数据传送给 CPU,这样就完成了一次内存数据的检查和纠正。这一系列操作是由内存控制器中的纯硬件(芯片)完成的。

内存 DRAM 是一种电子器件,由于其工艺特性,普遍存在硬件早期失效和软失效,在其工作过程中出现部分比特位翻转,从而导致数据错误,这是内存最普遍的问题。对于稳定性要求高的服务器产品来说,为了保证数据的正确性,采用带ECC的内存来实现内存ECC。发生内存ECC不可避免,这些错误数据被纠正是为了保证数据的正确性,一般来说对业务没有影响。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。