如何判断我的内存是 ECC 还是非 ECC?

Jam*_*rtz 55 memory ecc

我需要更换系统中的内存,但我不太确定如何确定内存是 ECC 还是非 ECC。我如何确定这一点?

Jam*_*rtz 67

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

wmic MEMORYCHIP get DataWidth,TotalWidth

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

示例输出:

//ECC Memory
DataWidth  TotalWidth
64         72

//Non-ECC Memory
DataWidth  TotalWidth
64         64
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

  • @kristianp 第二个命令有两个拼写错误,应该是:`wmic memphysical get memoryerrorcorrection`(在 8.1 中为我工作) (3认同)

Hen*_*nes 47

对于 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。

  • dmidecode 也是 Linux 的标准。我认为默认情况下会在安装 ECC RAM 的情况下进行纠错,但是如果您的内核正在监视内存控制器以跟踪内存错误率,那将再次确认您拥有 ECC RAM。(检查内核日志。) (3认同)
  • “总宽度:72 位是您正在寻找的部分。” 找到后我该怎么办? (2认同)

Blu*_*eft 22

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

ECC 与非 ECC (图片由普吉特系统提供

  • @Hennes:您可以有 10 个,但 9 个更为常见。内存通常分为 72 位 *(从 9 个数据芯片中的每一个中一次读取 8 位)* 的块,每个块中有 64 位数据 + 8 位纠错。有关更多技术信息,请参见 [此处](http://en.wikipedia.org/wiki/Hamming_code#Hamming_codes_with_additional_parity_.28SECDED.29)。 (7认同)
  • 作为更一般的规则,如果内存芯片的数量可以被 3 整除,则该模块就是 ECC。 (2认同)

Jon*_*ein 9

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

...
Run Code Online (Sandbox Code Playgroud)

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


MrD*_*iel 8

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

/Applications/Utilities/System Information

选择右侧窗格中硬件部分下的内存。

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

见下图:

系统信息应用程序窗口

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