ECC es “Error Correcting Code” y significa que las memorias ECC poseen Control Corrector de Errores. Técnicamente, estas memorias son de 72 bits en vez de 64 y esos 8 bits de más les permite corregir hasta 1 bit mal escrito y saber cuándo hay errores en 2 bits y de esta forma reportarlos.
Por eso, este tipo de RAM es muy popular en servidores u otros sistemas profesionales, ya que protege contra la corrupción de datos, detectando y corrigiendo automáticamente los errores de la memoria.
Para leer más tarde...
¿Qué es una memoria ECC?
En una memoria normal, Non-ECC, encontrarás ocho chips de memoria (cucarachas) y en cada uno se almacena un bit (de octeto cualquiera).
Sin embargo, una memoria RAM ECC tiene nueve de ellos, ya que tiene un chip de memoria adicional que sirve para la detección y corrección de errores de los otros ocho chips.
La detección de errores:
Sistema de paridad
Antes de la memoria ECC, la detección de errores en sistemas profesionales solo se podía realizar mediante bits de paridad pares o impares.
En un ordenador, los datos se almacenan comúnmente en trozos de 8 bits. Cuando se utiliza la paridad, se escribe un noveno bit adicional - o bit de paridad - que permite al sistema detectar cuando hay un error.
Si el sistema usa paridad par, entonces los 1’s y 0’s (incluyendo el bit de paridad adicional) deben sumar un número par. Por ejemplo, si el dato escrito en la memoria RAM es “1001 1011”, al sumar 5 (impar) el noveno bit debe ser tal que haga la suma par. Por eso debe ser un 1 para que al sumar los números (1+0+0+0+1+1+0+1+1+1+1+1) nos dé par.
¿Cómo se detecta un error?
Imagina que se produce un error y el dato que le llega al sistema desde la RAM es “1001 1001+1”, se ha perdido un bit por el camino y ahora la suma es un número impar. Al ser un sistema de detección de paridad par, el sistema sabe que los datos están corruptos.
Las memorias ECC: un paso más en la detección de errores
La tecnología ECC es una vuelta de tuerca más al sistema de paridad, ya que utiliza múltiples bits de paridad asignados a trozos de datos más grandes y esto le permite no solo detectar errores de un solo bit, sino también para corregirlos automáticamente.
En lugar de un solo bit de paridad por cada 8 bits de datos, ECC utiliza un código de 7 bits que se genera automáticamente por cada 64 bits de datos almacenados en la RAM. Cuando el sistema lee los 64 bits de datos, se genera un segundo código de 7 bits, que luego se compara con el código original de 7 bits. Si los códigos coinciden, los datos están libres de errores. Si los códigos no coinciden, el sistema puede determinar dónde está el error y corregirlo comparando los dos códigos de 7 bits.ref
De esta forma se puede corregir errores de un bit y reportar (saber que hay un error) cuando hay dos bits fallidos.
¿Cuál es la tasa de fallo de una memoria ECC?
A continuación, vamos a ver un gráfico en el que se recogen las tasas de fallo durante 3 años de diferentes tipos de memoria.
Una cosa a tener en cuenta es que los autores del estudio utilizan módulos de memoria Kingston. porque han comprobado a lo largo de los años que son los que menos fallos les dan; hasta 6 veces menos que otras marcas.ref
Como vemos, la RAM ECC es más estable y fiable que la RAM normal.
La tasa de fallo de ~1% de la RAM Non-ECC de Kingston sigue siendo muy buena, pero la RAM ECC es aún mejor con una tasa media de fallo del 0,24%.
¿Por qué es tan importante la memoria ECC en las empresas?
Los errores de memoria son muy peligrosos porque causan toda clase de errores.
Pueden provocar desde bloqueos catastróficos donde se pierda toda la información que se está procesando; como errores de transcripción de datos, en los que se cambia un número o se extravía un decimal y ni siquiera se sepa que se ha producido un error.
Por eso, esta clase de errores son inasumibles en algunos entornos como en la industria médica o en la financiera, ya que la precisión de los datos es crítica.
¿Y qué es la memoria registrada?
La memoria registrada (a menudo denominada “buffered”) utiliza una tecnología que puede trabajar de forma conjunta con la tecnología ECC, pero que no está directamente relacionada con ella.
La memoria registrada tiene un chip adicional, situado entre la memoria RAM y el controlador de memoria del sistema que incorpora unos circuitos encargados de repetir las señales de dirección y de control. Esto disminuye la carga que soporta el propio controlador de memoria de la placa base y permite utilizar un mayor número de módulos de memoria RAM sin que esto afecte a la calidad de la señal del controlador de memoria. Permitiendo el manejo de grandes cantidades de RAM sin necesidad de aumentar las latencias.
Aunque la memoria RAM ECC no siempre es siempre registrada, casi toda la memoria registrada es ECC. Esto se debe al hecho de que los sistemas que utilizan grandes cantidades de memoria casi siempre van a priorizar también la estabilidad.
Inconvenientes de la memoria ECC
Ya hemos visto que las memorias ECC son más fiables que las normales, sin embargo, no están exentas de algunos inconvenientes:
- El primero, y más obvio, es que no todas las placas base pueden usar memoria ECC. La mayoría de los ordenadores de escritorio no funcionarán con memoria ECC RAM o, algunos, deshabilitarán la funcionalidad ECC para poder funcionar.
- Debido al chip de memoria adicional y al aumento de complejidad la memoria RAM ECC es más cara. Entre un 10 y 20% aproximadamente.
- La RAM ECC es ligeramente más lenta que la RAM normal, entorno a un 2%, debido al tiempo adicional que tarda el sistema en comprobar si hay errores de memoria.
Cómo sé si la memoria de mi ordenador es ECC o Non-ECC
La gran mayoría de ordenadores domésticos usa memoria Non-ECC, sin embargo, algunos equipos profesionales (workstation) sí que la utilizan.
Para averiguar qué tipo de memoria usa tu ordenador sin abrirlo es muy fácil.
- En Windows, abre la consola (cmd) y ejecuta:
wmic MEMORYCHIP get DataWidth,TotalWidth
Si obtienes algo como //ECC Memory DataWidth TotalWidth 64 72
//Non-ECC Memory DataWidth TotalWidth 64 64
saber-si-ecc-o-non-ecc
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
- En Linux, ejecuta: dmidecode -t 17
Y busca el campo “Total Width”. Si marca 72 bits es memoria ECC y si pone 64 bits es memoria normal.
Resumen
La memoria RAM ECC tiene una serie de características que la hacen ser más fiable y por eso son más adecuadas para ciertos sectores profesionales.
Además, la memoria RAM ECC es sometida, normalmente, a pruebas y validaciones mucho más estrictas en su fabricación, por ello sus tasas de fallo son mucho más bajas.