Qué es la memoria ECC y cuándo la necesitas
Qué detecta de verdad la corrección de errores, en qué se diferencian los módulos registered y load-reduced de los sin búfer, y por qué decide la plataforma.
Actualizado
En esta página
La memoria con corrección de errores es una de las pocas piezas de un equipo donde la respuesta correcta se vuelve obvia en cuanto sabes qué hace la función. Detecta un fallo concreto y poco frecuente, cuesta dinero y algo de latencia, y solo funciona cuando coinciden tres cosas distintas. Casi toda la confusión que la rodea viene de una cuarta, que comparte el nombre sin ser la misma función.
Qué detecta realmente la ECC
Un módulo sin corrección de errores guarda los bits que le pediste guardar y luego devuelve lo que encuentra. De vez en cuando lo que encuentra no es lo que entró: una partícula suelta voltea una celda, un chip al límite pierde su carga, una señal llega deformada por el bus. Nada en el módulo se entera, así que el valor equivocado llega al procesador y el programa actúa sobre él.
Un módulo ECC lleva chips de memoria adicionales además de los que guardan tus datos, y almacena una suma de comprobación junto a cada palabra. En cada lectura el controlador de memoria la recalcula. Un bit volteado se corrige en el acto y queda registrado; dos bits volteados se detectan pero no se corrigen, y la máquina se detiene en vez de seguir con datos que sabe erróneos.
Fíjate en lo que eso compra y en lo que no. La corrección no hace la memoria más rápida, no la hace durar más y no salva un módulo que está fallando de verdad: lo que hace es avisar del fallo antes y con más claridad, y eso suele valer más que la corrección en sí. Lo que cambia es que una respuesta equivocada y silenciosa pasa a ser un suceso registrado, y si eso merece pagarse depende por entero de lo que haga la máquina. Una estación de trabajo con una simulación de una semana, un servidor de archivos con datos que se releerán dentro de cinco años, una base de datos que no debe escribir jamás una fila corrupta: para esos, un bit erróneo que nadie advierte es el desenlace caro. Una máquina de juegos se cuelga, la reinicias y has perdido unos minutos.
La ECC en el dado no es memoria ECC
Aquí es donde tropieza todo el mundo, y la DDR5 lo ha empeorado.
Todo chip DDR5 lleva corrección de errores integrada en el dado. Forma parte del estándar en vez de ser un añadido de un fabricante: a las densidades a las que se fabrica la DDR5, los errores dentro de la matriz son lo bastante frecuentes como para que corregirlos dentro del propio chip sea lo que mantiene los rendimientos de producción a flote. Así que un kit DDR5 de sobremesa corriente sí lleva corrección de errores, en un sentido real.
No es la misma función. La corrección en el dado cubre los errores internos de la matriz DRAM y nada más. Actúa antes de que los datos salgan del chip, de modo que no cubre el camino desde el módulo hasta el controlador de memoria — los contactos, las pistas de la placa, el propio bus — y en ese camino ocurre una parte apreciable de los errores de memoria. Tampoco informa de nada: ningún contador que leer, ninguna entrada de registro, ninguna forma de que el sistema operativo sepa que hubo una corrección o que se están volviendo frecuentes. La ECC en el dado es una medida de fabricación que de paso te ayuda. La memoria ECC es una función del sistema que te cuenta la verdad sobre tu propio hardware.
La consecuencia práctica es corta: que un módulo DDR5 lleve corrección en el dado no dice nada sobre si la máquina tiene memoria ECC. Son dos preguntas distintas con dos respuestas distintas.
Sin búfer, registered y load-reduced
La corrección de errores es un eje. Cómo se gobierna eléctricamente un módulo es otro, y ambos se confunden porque la memoria de servidor suele reunir los dos.
En un módulo sin búfer — un UDIMM en un sobremesa, un SO-DIMM en un portátil — las líneas de dirección y de orden van del controlador de memoria directamente a cada chip DRAM del módulo. Es la disposición más sencilla y la de menor latencia. El coste es eléctrico: cada chip es una carga sobre esas líneas, así que cuantos más chips y más módulos lleve un canal, más le cuesta al controlador y antes deja la señal de estar limpia. Por eso las plataformas de sobremesa se quedan en un puñado de ranuras y en un techo de capacidad por ranura.
Un módulo registered — un RDIMM — coloca un chip de registro entre el conector y la DRAM. El controlador gobierna una carga por módulo en vez de decenas, y el registro reparte la señal desde ahí. Cuesta un ciclo de reloj en dirección y orden, y compra la posibilidad de colgar de un canal mucha más memoria de la que soporta un diseño sin búfer.
Un módulo load-reduced — un LRDIMM — pone búfer también a las líneas de datos. Eso levanta el límite eléctrico que quedaba y permite que los módulos más grandes y con más rangos funcionen siquiera, que es la única razón para aceptar el sobrecoste.
| Sin búfer | Registered | Load-reduced | |
|---|---|---|---|
| Pone búfer a | Nada | Dirección y orden | Dirección, orden y datos |
| Latencia | La más baja | Un ciclo más | Un ciclo más |
| Dónde vive | Sobremesas y portátiles | Placas de servidor y estación de trabajo | Placas de servidor, en las mayores capacidades |
Nada de esa tabla trata de la corrección de errores. Los módulos registered casi siempre la llevan, porque las plataformas que los aceptan la quieren; pero los módulos ECC sin búfer existen y son piezas corrientes. Nuestro catálogo tiene varios, y aparecen en la página de memoria de sobremesa y no en esta, porque lo que coloca a un módulo en la página de memoria de servidor es su formato y nada más: RDIMM y LRDIMM, las dos grafías que significan que un módulo lleva búfer.
Decide la plataforma, no el módulo
Un módulo ECC en una máquina que no admite ECC hace una de dos cosas. Funciona con los bits de comprobación ignorados, o no funciona. En cualquier caso has pagado por una función que no está haciendo nada.
Tienen que estar presentes tres cosas. El módulo debe llevar los chips adicionales. El controlador de memoria — que vive dentro del procesador en todas las plataformas actuales — debe saber comprobarlos. Y el firmware y el sistema operativo deben mostrar el resultado, porque una corrección que nadie puede ver no es mucho mejor que ninguna. Las plataformas de servidor y de estación de trabajo reúnen las tres. Las de sobremesa de consumo en su mayoría no, y allí donde una placa y un procesador de sobremesa sí admiten ECC sin búfer, eso viene dicho en la documentación de la placa en vez de quedar insinuado por el zócalo. Ahí es donde se zanja el asunto, y conviene zanjarlo antes de comprar el módulo.
Qué registramos y qué no
Registramos el soporte de corrección de errores en el módulo, como un campo que una hoja de datos declara o no declara. Donde un fabricante no lo declara dejamos el campo vacío en vez de deducirlo de un número de pieza, así que un campo vacío significa que no encontramos la afirmación, no que el módulo carezca de la función. Todos los módulos registered y load-reduced de nuestro catálogo lo declaran, y ningún SO-DIMM de portátil lo hace.
Tampoco es algo sobre lo que comparemos. La memoria se compara sobre tres cifras — capacidad, velocidad en MT/s y latencia CAS, donde más alto es mejor en las dos primeras y más bajo en la última — y la corrección de errores no está en ninguna, porque no es una cifra que se ordene. Un módulo lleva los chips adicionales o no los lleva, y la pregunta que sigue es si tu plataforma sabe usarlos. El módulo es además el único lugar de este sitio donde la corrección de errores queda registrada: ninguna ficha de procesador ni de placa base de aquí le reserva un campo, de modo que la pregunta empieza en una hoja de datos y termina en la documentación de la placa.
Dos costumbres de este catálogo conviene conocerlas antes de leerlo. La memoria de servidor se lista como módulos sueltos y no como kits, porque los canales se pueblan ranura a ranura y es el número de ranuras de una placa lo que decide cuántos compras. Y la secuencia completa de tiempos que imprimen los kits de sobremesa falta en todos los módulos registered de aquí: los fabricantes publican la latencia CAS y se detienen ahí.
A ese respecto: las cifras CAS de la DDR5 registered asustan al lado de las de la DDR4, y cada módulo DDR5 de aquí lleva una más alta que cualquier módulo DDR4. Significan aproximadamente la misma espera, porque un ciclo de reloj se acorta a medida que sube la velocidad — cómo trabajan juntas velocidad y latencia trae la aritmética. Y si la pregunta que hay debajo de todo esto es cuánta memoria comprar en vez de cuál, empieza por la capacidad, que mueve mucho más, y en muchas más máquinas, que la corrección de errores.
La memoria de servidor y la RAM de sobremesa están cada una en una página, con especificaciones de la hoja de datos y precios seguidos a lo largo del tiempo.
Preguntas frecuentes
- ¿Usar DDR5 significa que ya tengo memoria ECC?
- No. Cada chip DDR5 lleva corrección en el propio dado para los errores que ocurren dentro de su matriz de celdas, y eso forma parte del estándar en lugar de ser una virtud de un módulo concreto. No cubre el enlace entre el módulo y el procesador ni informa de nada al sistema operativo, así que un equipo de sobremesa con DDR5 no es una máquina con memoria ECC.
- ¿Puedo poner un módulo registered en una placa de sobremesa?
- No — una placa está cableada para un solo tipo de módulo, y un registered no llegará a arrancar en una plataforma de sobremesa. El chip de registro que se sitúa entre el conector y los chips de memoria cambia cómo debe gobernar la placa el módulo, de modo que lo deciden la placa y el procesador, no el módulo que compres.