![我如何判断我的内存是 ECC 还是非 ECC?](https://linux22.com/image/1444922/%E6%88%91%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E6%88%91%E7%9A%84%E5%86%85%E5%AD%98%E6%98%AF%20ECC%20%E8%BF%98%E6%98%AF%E9%9D%9E%20ECC%EF%BC%9F.png)
我需要更换系统中的内存,但我不太清楚如何确定内存是 ECC 还是非 ECC。我该如何确定?
答案1
对于 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
这将返回基于代码的根据所安装的内存类型:
价值 | 意义 |
---|---|
0(0x0) | 预订的 |
1(0x1) | 其他 |
2(0x2) | 未知 |
3(0x3) | 没有任何 |
4(0x4) | 平价 |
5(0x5) | 单比特 ECC |
6(0x6) | 多位 ECC |
7(0x7) | CRC |
答案2
为了FreeBSD(可能还有大多数类 Unix 平台):
dmidecode -t 17
示例输出:
# dmidecode 2.12
SMBIOS 2.5 present.
Handle 0x1100, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: 1
Locator: DIMM1
Bank Locator: Not Specified
Type: DDR2
Type Detail: Synchronous
Speed: 667 MHz
Manufacturer: AD00000000000000
Serial Number: 00002062
Asset Tag: 010839
Part Number: HYMP125P72CP8-Y5
Rank: 2
这Total Width: 72 bits
就是您正在寻找的部分。
在我们的姊妹网站上可以找到更多关于在 Linux 中检测此问题的信息Unix 和 Linux Stack Exchange。
有关纠错码工作原理的更多信息,请参见在这篇简单的文章中我展示了如何使用额外的位来检测和纠正错误。这就是为什么我们有 64 位宽(8 字节数据宽)或 72 位宽(64 个数据加上用于存储冗余信息的额外位)的 DIMM。
2022 年 7 月 19 日 - ECC DDR5 现已推出,现在进行了小更新。DDR5 不是正常的 64 位,也不是 ECC 的 64+8 位。相反,它有两个 32 位通道,ECC 需要更多位。因此,DDR5 上的 ECC 预计为 80 位。
答案3
如果你看一下物理内存模块,ECC 通常有 9(有时更多)芯片。非 ECC 芯片只有 8(或者很少见,8x2=16)。
(图片由普吉特系统)
答案4
在 Mac 上,您可以查看系统信息应用程序来确定计算机和每个 RAM 模块的 ECC 状态。
/Applications/Utilities/System Information
在右侧窗格中的硬件部分下,选择“内存”。
然后选择“内存插槽”列表。下面的窗口应显示 ECC 状态。
参见下图:
另外,作为参考,每个 RAM 插槽都会有一个状态字段,如果在 RAM 模块中检测到问题,则状态将是“OK”以外的值