如何确定我的内存是ECC还是Non-ECC?


46

我需要更换系统中的内存,但我不确定如何确定内存是ECC还是Non-ECC。我该如何确定?


2
您的PC手册中是否有任何内容,通常在其中指定。否则,下载并安装Speccy。该程序将准确告诉您PC中具有哪些硬件,然后可以进行检查。
Wernfried Domscheit 2015年

查找主板手册或系统的系统手册,看看硬件要求什么?使用各种RAM供应商网站上的内存建议工具吗?
Zoredache


2
@WannabeCoder“您应该使用非ECC” [需要引证] [解释不足]
CVn 2015年

1
@MichaelKjörling在家用应用程序中,该级别的数据完整性并不重要。父级应用程序(或OS)可以轻松处理此问题,而ECC内存的性能开销很小。此外,几乎所有用户CPU都不支持ECC内存(因此“应该”)。
WannabeCoder 2015年

Answers:


58

对于Windows 7,可以在命令提示符下运行以下命令:

wmic MEMORYCHIP get DataWidth,TotalWidth

如果TotalWidth值大于DataWidth值,则您具有ECC内存。

输出示例:

//ECC Memory
DataWidth  TotalWidth
64         72

//Non-ECC Memory
DataWidth  TotalWidth
64         64

确定的更好方法是通过以下命令:

wmic memphysical get memoryerrorcorrection

这将根据安装的内存类型返回一个代码

Value Meaning 
0 (0x0) Reserved 

1 (0x1) Other 

2 (0x2) Unknown 

3 (0x3) None 

4 (0x4) Parity 

5 (0x5) Single-bit ECC 

6 (0x6) Multi-bit ECC 

7 (0x7) CRC

我得到了物理记忆-找不到别名。在Windows 7 Enterprise SP 1上

3
@kristianp第二个命令中有两个错别字,应该是:( wmic memphysical get memoryerrorcorrection在8.1中为我工作)
Dan Neely

@DanNeely我的系统(我知道有8条4GB ECC)从该命令提供2个值:第二行输出为6和3。另一个命令显示8行,分别为64和72(如预期),另外1行显示2和2。我以前从未见过。知道这意味着什么吗?记录:这是HP XW8600工作站(Intel 5400/6311服务器主板。)
Tonny

@Tonny您正在使用哪个命令?
James Mertz

代码3(无)是什么意思?我没有安装内存吗?
恢复莫妮卡

40

对于FreeBSD(可能是大多数Unix平台):

dmidecode -t 17

输出示例:

#dmidecode 2.12
存在SMBIOS 2.5。

处理0x1100,DMI类型17,28字节
存储设备
        数组句柄:0x1000
        错误信息句柄:未提供
        总宽度:72位
        资料宽度:64位
        大小:2048 MB
        规格:DIMM
        设置:1
        定位器:DIMM1
        银行定位器:未指定
        类型:DDR2
        类型详细信息:同步
        速度:667 MHz
        制造商:AD00000000000000
        序列号:00002062
        资产标签:010839
        零件编号:HYMP125P72CP8-Y5
        等级:2

Total Width: 72 bits是您正在寻找的部分。


在Linux中检测到更多的相关信息,可以发现这里对我们的姊妹网站unix.stackexchange.com。

有关纠错代码如何工作的更多信息,可以在这篇简单的文章中找到,我向您展示了如何使用额外的位来检测和纠正错误。这就是为什么我们有64位宽(8字节数据宽)或72位宽(64数据加额外位以存储冗余信息)的DIMM的原因。


3
dmidecode在Linux上也是标准的。我认为默认情况下会在安装ECC RAM的情况下进行纠错,但是如果您的内核正在监视内存控制器以跟踪内存错误率,那将再次确认您具有ECC RAM。(请查看内核日志。)
Peter Cordes

您如何检查内存控制器是否正在跟踪它?mcelog?
Hennes

我再也无法访问任何配备ECC的服务器,但是我会寻找有关它的内核日志消息。也许没有一个。在buttersideup.com上有相关链接 (IMO有史以来最佳域名)。
彼得·科德斯

1
我认为您应该在回答中说明关于ECC的结论Total Width72 bits还是64 bits
AL

1
“总宽度:72位是您要查找的部分。” 找到后该怎么办?
endolith '16

19

如果您查看物理内存模块,则ECC通常具有9个(有时更多)芯片。Non-ECC将只有8个(或很少有8x2 = 16)

ECC与非ECC (图片由Puget Systems提供


ECC模块上每字节10位的9个芯片?
Hennes

5
@Hennes:您可以有10个,但9个要常见得多。存储器通常分为72位的块(从9个数据芯片中的每个一次读取8位),每个块中有64位的数据+ 8位的纠错。有关更多技术信息,请参见此处
BlueRaja-Danny Pflughoeft 2015年

1
通常,如果存储芯片的数量可被3整除,则模块为ECC。
James Mertz 2015年

复制任何内容(包括图像)时,您必须提供出处。
Mokubai

1
@endolith自站点创建以来,以及根据帮助中心提供的信息:如何参考他人编写的材料
Mokubai

8

在Mac上,您可以在“ 系统信息”应用程序中查找以确定计算机和每个RAM模块的ECC状态。

/Applications/Utilities/System Information

在硬件部分下的右窗格中选择“内存”。

然后选择“内存插槽”列表。下面的窗口应显示ECC状态。

见下图:

系统信息应用程序窗口

另外,作为一个参考,如果在RAM模块中检测到问题,则每个RAM插槽都将有一个Status字段,该状态将是“ OK”以外的值


“ Disabled”是否表示RAM为非ECC?您的答案还不太清楚
mounaim

没错,状态为“启用”将表示他的RAM为ECC。
MrDaniel '16

6

inxi可以做到:

$ sudo inxi -m -xxx
Memory:    Array-1 capacity: 32 GB devices: 4 EC: None
           Device-1: ChannelA-DIMM0 size: 4 GB speed: 1333 MHz type: DDR3 (Synchronous)
           bus width: 64 bits manufacturer: Kingston part: KHX1600C9D3/4GX serial: B7ED5A53

...

在这里使用非ECC-RAM模块 EC: None


4 EC: None我应该寻找的价值吗?
James Mertz

只是EC: None。该4是前场的一部分(devices: 4)。
duskwuff'Mar

0

您也可以尝试使用Belarc之类的免费应用。还提供了大量有关您系统的信息...

我已经使用过几次该软件。我与该软件无关,但我知道某些大学使用该软件。

我无法提供结果的屏幕快照,因为它包含机密数据,但是该网站应提供一些示例。它非常简单(快速),下载文件,运行它并显示结果。


请提供更多有关此工作原理的信息。供参考,请参阅此meta帖子
James Mertz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.