ecc内存和普通内存区别

投稿 数码家电评论5阅读模式

在内存的使用过程中,可能因受到硬错误或软错误的影响而导致数据出错,对于普通消费者来说这可能问题不大,但对于企业和数据中心的服务器来说,数据出错将对服务器性能产生很大影响。而为了防止这种错误,一般服务器用的都是ECC内存。那么,问题来了,什么是ECC内存,它和普通内存又有什么不同呢?

ecc内存和普通内存区别

内存错误

ECC内存,即Error-Correcting Code Memory,其中ECC是一种检测并纠正单位内存错误的方法。这里,我们又注意到一个问题,内存怎么会犯错呢?

内存错误是存储在内存中的值发生更改的问题。我们知道,内存中的数据以二进制形式存储,值为1或0。如果1的值切换成0,或0切换成1,我们就说内存发生了「位翻转」,而存储在内存中的数据将会发生变化。

举个简单的例子,数字135表示为二进制字符串010000111,如果其中一个值发生翻转,则会呈现以下情况:

010000111=135

110000111=391

011000111=199

010100111=167

000000111=7

根据计算机对这些数据的处理方式,内存的位翻转可能与性能上的小问题一样无害。但另一方面,它们可能是灾难性的,甚至导致整个计算机系统崩溃或执行错误操作。一根8GB内存条平均每小时使用会出现5个此类错误,对于普通计算机用户来说,影响是难以察觉的,但对于任务密集型服务器来说,这些错误的出现将导致严重后果。

位翻转有许多潜在的原因,最常见的是背景辐射,主要是由宇宙射线产生的中子引起的。宇宙射线是一种高能粒子,通常是质子,以接近光速传播。当宇宙射线撞击原子时,会产生大量中子和其他亚原子粒子,然后这些中子会继续发生二次相互作用,而这些次级中子相互作用被认为是内存位翻转错误的主要原因。

纠错原理

那么,ECC内存是如何防止这样的错误呢?ECC内存检测错误的方法是奇偶校验,主要是通过在字节末尾加0或1来检测一个字节是偶数还是奇数。例如,如果奇偶校验将字节添加到奇数位7,则奇偶校验为1,偶数将为8。如果奇偶校验字节为0,结果为奇数,则该字节处于损坏状态。

ecc内存和普通内存区别

当然,ECC存储器的奇偶校验位并不总是8位字节,也可以通过二进制循环纠错码生成7位代码/64位字节。这里的意思是,系统每次读取64位数据时,都会生成一个7位代码。检测的目的是判断代码是否匹配。如果不匹配意味着它有错误,ECC内存将立即纠正错误。

ECC内存与普通内存的区别

ECC内存在外观上与普通内存最大的区别是会在PCB板上额外再添加一个芯片来专门负责检查错误并纠正错误。

ecc内存和普通内存区别

不过,ECC内存带来的不仅是优点,也有一些缺点。与普通内存相比,ECC内存由于额外的内存芯片及其复杂性而更昂贵。更重要的是,在读取速度方面,ECC内存比普通内存要慢2%左右,因为检查内存数据错误需要额外的时间。

当将ECC内存应用到服务器时,它会监控内存数据并及时纠正错误。首先,这在一定程度上减少了崩溃的次数,尤其是在无法承受内存数据损坏的设备中,例如科学和金融行业的计算应用程序或服务器。其次,它的数据纠错可以保持数据的完整性,增强系统的稳定性。在数据中心,ECC内存比普通内存更可靠。

另外,需要知道的是,大多数消费级PC硬件并不支持ECC内存,比如英特尔和AMD的消费级和发烧级CPU均不支持ECC,只有服务器CPU支持。

ECC内存和非ECC内存之间没有绝对的判断标准来说哪个更好,需要具体到使用场景中。如果是金融或医疗行业或其他关键数据相关行业,则必须考虑在数据中心服务器中配置ECC内存。而如果只是普通的PC用户,或者不打算将设备用于重大项目,则可以选择普通内存。

weinxin
种草预告清单
种草预告清单
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: