¿Cómo puedo saber si mi memoria es ECC o no ECC?

46

Necesito reemplazar la memoria en mi sistema y no estoy muy seguro de cómo determinar si la memoria es ECC o no ECC. ¿Cómo determino esto?

James Mertz
fuente
2
¿Hay algo en el manual de su PC? Por lo general, se especifica allí. De lo contrario, descargue e instale Speccy . Este programa le dice exactamente qué hardware tiene en su PC, luego puede verificarlo.
Wernfried Domscheit
Busque el manual de la placa base, o el manual del sistema para su sistema, y ​​vea qué se requiere para su hardware. ¿Utiliza las herramientas de sugerencia de memoria en los diversos sitios web de proveedores de RAM?
Zoredache
2
@WannabeCoder "deberías estar usando no ECC" [cita requerida] [explicación insuficiente]
un CVn
1
@ MichaelKjörling La integridad de los datos a ese nivel no es crítica en las aplicaciones de uso doméstico. Las aplicaciones principales (o el sistema operativo) pueden manejar eso fácilmente, y la memoria ECC viene con una pequeña sobrecarga de rendimiento. Además, prácticamente todas las CPU de consumo no son compatibles con la memoria ECC (por lo tanto, el "debería").
WannabeCoder

Respuestas:

58

Para Windows 7, puede ejecutar el siguiente comando en el símbolo del sistema:

wmic MEMORYCHIP get DataWidth,TotalWidth

Si el valor de Ancho total es mayor que el valor de Ancho de datos, tiene memoria ECC.

Salida de ejemplo:

//ECC Memory
DataWidth  TotalWidth
64         72

//Non-ECC Memory
DataWidth  TotalWidth
64         64

Una mejor manera de determinar es mediante el siguiente comando:

wmic memphysical get memoryerrorcorrection

Esto devolverá un código basado en el tipo de memoria instalada:

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
James Mertz
fuente
Me sale la memoria física - Alias ​​no encontrado. en Windows 7 Enterprise SP 1
3
@kristianp El segundo comando tenía dos errores tipográficos, debería haber sido: wmic memphysical get memoryerrorcorrection(funcionó para mí en 8.1)
Dan Neely
@DanNeely Mi sistema (que sé que tiene 8 tiras de 4GB ECC) da 2 valores de ese comando: 6 y 3 en una segunda línea de salida. El otro comando muestra 8 líneas con 64 y 72 (como se esperaba) y 1 línea adicional que muestra 2 y 2. Nunca antes había visto eso. ¿Alguna idea de lo que eso significa? Para el registro: es una estación de trabajo HP XW8600 (placa base de servidor Intel 5400/6311).
Tonny
@Tonny, ¿qué comando estás usando?
James Mertz
¿Qué significa el código 3 (ninguno)? ¿No tengo memoria instalada?
Restablecer Monica
40

Para FreeBSD (y probablemente la mayoría de las plataformas similares a Unix):

dmidecode -t 17

Salida de ejemplo:

# dmidecode 2.12
SMBIOS 2.5 presente.

Manejar 0x1100, DMI tipo 17, 28 bytes
Dispositivo de memoria
        Manija de matriz: 0x1000
        Identificador de información de error: no proporcionado
        Ancho total: 72 bits
        Ancho de datos: 64 bits
        Tamaño: 2048 MB
        Factor de forma: DIMM
        Serie 1
        Localizador: DIMM1
        Localizador de bancos: no especificado
        Tipo: DDR2
        Detalle del tipo: Sincrónico
        Velocidad: 667 MHz
        Fabricante: AD00000000000000
        Número de serie: 00002062
        Etiqueta de propiedad: 010839
        Número de pieza: HYMP125P72CP8-Y5
        Rango: 2

La Total Width: 72 bitses la parte que estás buscando.


Puede encontrar más información para detectar esto en Linux aquí en nuestro sitio hermano unix.stackexchange.com.

Puede encontrar más información sobre cómo funciona el código de corrección de errores en esta sencilla publicación donde mostré cómo podría usar bits adicionales para detectar y corregir errores. Es por eso que tenemos DIMM que tienen 64 bits de ancho (8 bytes de datos) o 72 bits de ancho (64 datos más bits adicionales para almacenar información redundante).

Hennes
fuente
3
dmidecode también es estándar en Linux. Creo que la corrección de errores ocurrirá de manera predeterminada con la RAM ECC instalada, pero si su núcleo está monitoreando el controlador de memoria para rastrear la tasa de error de memoria, esa sería otra confirmación de que tiene RAM ECC. (verifique el registro del kernel.)
Peter Cordes
¿Cómo se verifica si el controlador de memoria está rastreando eso? mcelog?
Hennes
Ya no tengo acceso a ningún servidor equipado con ECC, pero buscaría un mensaje de registro del núcleo al respecto. Quizás no haya uno. Hay un enlace a algo al respecto en buttersideup.com (el mejor nombre de dominio para un proyecto, IMO).
Peter Cordes
1
Creo que deberías explicar en tu respuesta qué concluir sobre ECC si Total Widthes 72 bitso 64 bits.
AL
1
"El ancho total: 72 bits es la parte que está buscando". ¿Y qué hago después de haberlo encontrado?
endolito el
19

Si observa el módulo de memoria física, ECC generalmente tendrá 9 (a veces más) chips. No ECC tendrá solo 8 (o raramente, 8x2 = 16) .

ECC vs no ECC (Imagen cortesía de Puget Systems )

BlueRaja - Danny Pflughoeft
fuente
¿9 chips para los 10 bits por byte en el módulo ECC?
Hennes
55
@Hennes: Puedes tener 10, pero 9 es mucho más común. La memoria generalmente se divide en fragmentos de 72 bits (8 bits leídos a la vez de cada uno de los 9 chips de datos) , con 64 bits de datos + 8 bits de corrección de errores en cada fragmento. Vea aquí para más información técnica.
BlueRaja - Danny Pflughoeft
1
Como regla más general, si el número de chips de memoria es divisible por 3, entonces el módulo es ECC.
James Mertz
Al copiar cualquier contenido (incluidas las imágenes) debe proporcionar la atribución.
Mokubai
1
@endolith desde el inicio de los sitios y según el centro de ayuda: Cómo hacer referencia al material escrito por otros .
Mokubai
8

En una Mac, puede buscar en la aplicación Información del sistema para determinar el estado ECC de la computadora y de cada módulo RAM.

/Applications/Utilities/System Information

Seleccione Memoria en el panel derecho, en la sección de hardware.

Luego, con la lista "Ranuras de memoria" seleccionada. La siguiente ventana debe mostrar un estado de ECC.

Ver imagen a continuación:

Ventana de la aplicación de información del sistema

Además, para su información, cada ranura de RAM tendrá un campo de estado. Si se detecta un problema en un módulo de RAM, el estado será un valor distinto de "OK".

MrDaniel
fuente
¿"Deshabilitado" significa que el carnero no es ECC? no está del todo claro por su respuesta
mounaim
Eso es correcto, un estado de "Habilitado" significa que la RAM es ECC.
MrDaniel
6

inxi puede hacer eso:

$ 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

...

Aquí se utilizan módulos no ECC-RAM EC: None

Jonas Stein
fuente
¿Es el 4 EC: Nonevalor que debería estar buscando?
James Mertz
Sólo el EC: None. El 4es parte del campo anterior ( devices: 4).
duskwuff
0

También puede probar una aplicación gratuita como Belarc . Da mucha más información sobre su sistema también ...

He usado el software algunas veces. No tengo afiliación con este software, pero sé que algunas universidades lo utilizan.

No puedo proporcionar una captura de pantalla de los resultados porque contiene datos confidenciales, pero el sitio web debería proporcionar algunos ejemplos. Es bastante sencillo (y rápido), descarga el archivo, ejecútalo y se presentan los resultados.

htm11h
fuente
Proporcione más detalles sobre cómo funciona esto. Para referencia, vea esta meta publicación
James Mertz