How do I tell if my Memory is ECC or Non-ECC?
I need to replace the memory in my system and I'm not quite sure how to determine if the memory is ECC or Non-ECC. How do I determine this?
For Windows 7 you can run the following command in command prompt:
wmic MEMORYCHIP get DataWidth,TotalWidth
If the TotalWidth value is larger than the DataWidth value you have ECC memory.
Example output:
//ECC Memory
DataWidth TotalWidth
64 72
//Non-ECC Memory
DataWidth TotalWidth
64 64
A better way to determine is via the following command:
wmic memphysical get memoryerrorcorrection
This will return a code based on the type of memory installed:
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
For FreeBSD (and probably most unix like platforms):
dmidecode -t 17
Example output:
# 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
The Total Width: 72 bits
is the part you are looking for.
More information in detecting this in Linux can be found here on our sister site unix.stackexchange.com.
More information on how error correcting code works can be found in this simple post where I showed how you could use extra bits to detect and correct errors. This is why we have DIMMs which are 64 bits wide (8 bytes of data wide) or 72 bits wide (64 data plus extra bits to store redundant information).
If you look at the physical memory module, ECC will usually have 9 (sometimes more) chips. Non-ECC will have only 8 (or rarely, 8x2=16).
(Image courtesy of Puget Systems)
inxi can do that:
$ 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
...
Here non ECC-RAM modules are used EC: None
On a Mac you can look in the System Information application to determine ECC status of the Computer and each RAM module.
/Applications/Utilities/System Information
Select Memory on the right pane, under the hardware section.
Then with the "Memory Slots" listing selected. The window below should show an ECC status.
See picture below:
Also as an FYI each RAM slot will have a Status field if there is a problem detected in a RAM module the status will be a value other than "OK"