En muchos sectores, la seguridad en la tra­n­s­mi­sión de datos es una de las pri­n­ci­pa­les prio­ri­da­des. De la misma forma que un servicio de alo­ja­mie­n­to web almacena los datos de sus clientes, las empresas que in­te­r­ca­m­bian datos im­po­r­ta­n­tes en procesos co­me­r­cia­les llevan a cuestas la gran re­s­po­n­sa­bi­li­dad de ga­ra­n­ti­zar su in­te­gri­dad. En el caso que se produzcan errores en la memoria no solo se corre el riesgo de grandes pérdidas fi­na­n­cie­ras, sino que, en el peor de los casos, se presenta un de­bi­li­ta­mie­n­to si­g­ni­fi­ca­ti­vo de su po­si­cio­na­mie­n­to en el mercado. En este contexto, es co­m­pli­ca­do valorar la tendencia a un aumento constante del espacio de al­ma­ce­na­mie­n­to, pues a mayor capacidad, mayor pro­ba­bi­li­dad de error. Es por esto que aquellos entornos de servidor y de trabajo que necesiten mantener sus datos intactos, co­n­ce­n­tran grandes esfuerzos en lograr un control total sobre ellos. Así, para pro­te­ge­r­se, por ejemplo, de errores oca­sio­na­dos por un solo bit, en lugar de utilizar una memoria común, se im­ple­me­n­ta una memoria ECC.

RAM ECC: an­te­ce­de­n­tes y de­fi­ni­ción

La memoria RAM, Random access memory (en español, memoria de acceso aleatorio), es un medio de al­ma­ce­na­mie­n­to utilizado como memoria de trabajo en los sistemas in­fo­r­má­ti­cos. También conocida como memoria principal, es la re­s­po­n­sa­ble de la ejecución de los programas, in­clu­ye­n­do sus re­s­pe­c­ti­vos datos de usuario. En la memoria principal, los co­n­te­ni­dos son al­ma­ce­na­dos en forma de código binario, en otras palabras, están co­m­pue­s­tos por unos y ceros para que el ordenador pueda pro­ce­sar­los. Los dígitos binarios se conocen como bits. Factores como

  • flu­c­tua­cio­nes del voltaje,
  • ove­r­clo­c­ki­ng,
  • módulos de memoria de­fe­c­tuo­sos y viejos
  • o radiación de alta energía

pueden generar un error de bit, mo­di­fi­ca­n­do, como co­n­se­cue­n­cia, un registro en la memoria. Estos fallos de bit se presentan cuando un bit toma el valor falso, es decir “1” en vez de “0” y viceversa. En muchas apli­ca­cio­nes, las co­n­se­cue­n­cias de estos fallos son apenas pe­r­ce­p­ti­bles. Por ejemplo, si aparece un error de bit cuando se trabaja con un programa de edición de imágenes, puede que uno de los pixeles reciba un color diferente al esperado, un detalle mínimo que no es de­te­c­ta­ble por el ojo humano. Sin embargo, el panorama es diferente en el caso de bases de datos o apli­ca­cio­nes de cálculo complejas donde el más mínimo error de bit puede tener co­n­se­cue­n­cias de­sas­tro­sas. En algunos casos, estos errores pueden ocasionar fallos en el sistema, es­pe­cia­l­me­n­te cuando tienen lugar en una porción de memoria que es utilizada por el sistema operativo.

La solución más sencilla a este problema se llama Error Co­rre­c­ti­ng Code (ECC), un código que tiene la capacidad de detectar y corregir errores de bit. Además, el ECC puede de­te­r­mi­nar errores de dos bits (aunque estos no se produzcan muy a menudo). Para apro­ve­char las ventajas de este proceso de co­rre­c­ción de errores, los módulos de memoria RAM tra­di­cio­na­les son ex­te­n­di­dos mediante un chip de memoria ECC. Es por esto que se habla entonces de RAM ECC.

¿Cómo funciona el método de co­rre­c­ción de errores?

El método de detección y co­rre­c­ción de errores en los módulos de memoria RAM fue de­sa­rro­lla­do en 1950 por el ma­te­má­ti­co Richard Hamming, por eso el código base recibe el nombre de código Hamming. La pe­cu­lia­ri­dad de este código es el uso de los llamados bits de paridad, también conocidos como bits de control, que crean di­fe­re­n­tes grupos de prueba con los bits útiles. El requisito para poder utilizar el código Hamming en la co­rre­c­ción de errores es contar con un código binario de al menos siete dígitos compuesto por tres bits de paridad (P), cuatro bits útiles (U) y tres grupos de prueba. Los bits de paridad se es­ta­ble­cen en las po­si­cio­nes cuyo número es potencia de 2, en este caso, 1, 2 y 4:

Los grupos de prueba de bits de paridad son co­m­pa­ra­dos con los que fueron al­ma­ce­na­dos y, cuando el número total de bits con el valor “1” es impar, quiere decir que hay un error. Así, por ejemplo, en la secuencia de bits 0001001 el código de Hamming determina los fallos de la siguiente manera:

  • El grupo de prueba del bit de paridad 1 (1, 3, 5, 7) contiene un bit con el valor 1 y, por tanto, es erróneo.
  • El grupo de prueba del bit de paridad 2 (2, 3, 5, 7) contiene un bit con el valor 1 y, por tanto, es erróneo.
  • El grupo de prueba del bit de paridad 3 (4, 5, 6, 7) contiene dos bits con el valor 1 y, por tanto, es correcto.

Debido a que la posición 3 está presente en los dos primeros grupos de prueba, es allí donde reside el error. Por lo tanto, la secuencia correcta de bits es 0011001.

¿Es re­co­me­n­da­ble utilizar RAM ECC para fines privados?

La función principal del ECC es proteger la memoria principal de errores oca­sio­na­dos por un solo bit y, en gran manera, servir como he­rra­mie­n­ta contra una posible ma­ni­pu­la­ción del espacio de al­ma­ce­na­mie­n­to de datos. Asimismo, está es­tre­cha­me­n­te re­la­cio­na­do con la reducción de fallos del sistema, algo que resulta de gran utilidad para servicios o apli­ca­cio­nes que tengan que ga­ra­n­ti­zar alta di­s­po­ni­bi­li­dad y que cuenten con una amplia gama de usuarios. Estas ventajas se encargan de que la demanda de memorias ECC como solución de al­ma­ce­na­mie­n­to RAM para se­r­vi­do­res sea muy alta y que su uso sea una necesidad para toda entidad in­fo­r­má­ti­ca de alto re­n­di­mie­n­to.

Sin embargo, en co­m­pa­ra­ción con las memorias RAM Non ECC, las memorias ECC tienen algunas de­s­ve­n­ta­jas. En primer lugar, los módulos de memoria de co­rre­c­ción de errores son un poco más costosos que los módulos de memoria ha­bi­tua­les. Además, el proceso de ide­n­ti­fi­ca­ción de errores tiene como co­n­se­cue­n­cia que el re­n­di­mie­n­to del sistema se reduzca, en promedio, en apro­xi­ma­da­me­n­te un dos por ciento. Adi­cio­na­l­me­n­te, la RAM ECC no es soportada por todas las placas base. Por lo tanto, si quieres utilizar una memoria ECC en un tablero normal, es re­co­me­n­da­ble comprobar la co­m­pa­ti­bi­li­dad y co­n­si­de­rar la relación costes-beneficio pre­via­me­n­te. Recuerda que no es posible combinar una memoria ECC con una Non ECC y que, por defecto, todo servidor y todo ordenador está provisto de un módulo de memoria ordinario sin co­rre­c­ción de errores.

Ir al menú principal