La comprobación de paridad de RAM consiste en almacenar un bit de paridad redundante que representa la paridad (par o impar) de una pequeña cantidad de datos informáticos (normalmente un byte) almacenados en la memoria de acceso aleatorio , y la posterior comparación de la paridad almacenada y la calculada para detectar si se ha producido un error de datos .
El bit de paridad se almacenaba originalmente en chips de memoria individuales adicionales; con la introducción de módulos DIMM , SIMM , etc. enchufables , estuvieron disponibles en versiones con paridad y sin paridad (con un bit adicional por byte , almacenando 9 bits por cada 8 bits de datos reales).
Las primeras computadoras a veces requerían el uso de RAM de paridad, y la verificación de paridad no podía desactivarse. Un error de paridad generalmente causaba que la máquina se detuviera, con pérdida de datos no guardados; esta suele ser una mejor opción que guardar datos corruptos. La RAM de paridad lógica , también conocida como RAM de paridad falsa, es RAM sin paridad que se puede usar en computadoras que requieren RAM de paridad. La RAM de paridad lógica recalcula un bit de paridad siempre válido cada vez que se lee un byte de la memoria, en lugar de almacenar el bit de paridad cuando se escribe en la memoria; el bit de paridad calculado, que no revelará si los datos se han corrompido (de ahí el nombre de "paridad falsa"), se presenta a la lógica de verificación de paridad. Es un medio de usar RAM de 8 bits más barata en un sistema diseñado para usar solo RAM de paridad de 9 bits.
En los años 70 y 80, la fiabilidad de la RAM era a menudo imperfecta; en particular, las DRAM 4116, que fueron un estándar de la industria entre 1975 y 1983, tenían una tasa de fallos considerable, ya que utilizaban voltajes triples (-5, +5 y +12), lo que daba lugar a altas temperaturas de funcionamiento. A mediados de los años 80, estas habían dado paso a las DRAM de voltaje único, como la 4164 y la 41256, con el resultado de una mayor fiabilidad. Sin embargo, la RAM no alcanzó los estándares modernos de fiabilidad hasta los años 90. Desde entonces, los errores se han vuelto menos visibles, ya que la RAM de paridad simple ha caído en desuso; o bien son invisibles porque no se detectan, o bien se corrigen de forma invisible con la RAM ECC. Se cree, con mucha justificación, que la RAM moderna es fiable, y la RAM con detección de errores ha caído en desuso en gran medida para aplicaciones no críticas. A mediados de los años 90, la mayoría de las memorias DRAM habían abandonado la comprobación de paridad, ya que los fabricantes estaban convencidos de que ya no era necesaria. Algunas máquinas que admiten paridad o ECC permiten habilitar o deshabilitar la comprobación en el BIOS , lo que permite utilizar RAM sin paridad más barata. Si se utiliza RAM con paridad, el chipset normalmente la utilizará para implementar la corrección de errores, en lugar de detener la máquina ante un error de paridad de un solo bit.
Sin embargo, como se comenta en el artículo sobre la memoria ECC , los errores, aunque no son eventos cotidianos, no son insignificantemente infrecuentes. Incluso en ausencia de defectos de fabricación, la radiación natural causa errores aleatorios; las pruebas en los numerosos servidores de Google descubrieron que los errores de memoria no eran eventos raros y que la incidencia de errores de memoria y el rango de tasas de error en diferentes DIMM eran mucho mayores que lo informado anteriormente. [1]
La comprobación de paridad go/no go simple requiere que la memoria tenga bits adicionales redundantes más allá de los necesarios para almacenar los datos; pero si hay bits adicionales disponibles, se pueden utilizar para corregir, así como para detectar errores. Las memorias anteriores, como las utilizadas, por ejemplo, en IBM PC/AT ( memoria FPM y EDO ), estaban disponibles en versiones que no admitían comprobación o que admitían comprobación de paridad [2] (en las computadoras anteriores que utilizaban chips de RAM individuales en lugar de módulos DIMM o SIMM , se utilizaban chips adicionales para almacenar bits de paridad); si la computadora detectaba un error de paridad, mostraba un mensaje a tal efecto y se detenía. Los módulos SDRAM y DDR que reemplazaron a los tipos anteriores suelen estar disponibles sin comprobación de errores o con ECC (corrección total, no solo paridad). [2]
Un ejemplo de un error de un solo bit que sería ignorado por un sistema sin comprobación de errores, que detendría una máquina con comprobación de paridad o que sería corregido invisiblemente por ECC: un solo bit se queda atascado en 1 debido a un chip defectuoso o cambia a 1 debido a la radiación de fondo o cósmica; se carga una hoja de cálculo que almacena números en formato ASCII y el número "8" se almacena en el byte que contiene el bit atascado como su octavo bit; luego se realiza otro cambio en la hoja de cálculo y se almacena. Sin embargo, el "8" (00111000 binario) se ha convertido en un "9" (00111001).
Si la paridad almacenada es diferente de la paridad calculada a partir de los datos almacenados, al menos un bit debe haber cambiado debido a la corrupción de los datos. Los errores de memoria no detectados pueden tener resultados que van desde indetectables y sin consecuencias hasta la corrupción permanente de los datos almacenados o el bloqueo de la máquina. En el caso de la PC doméstica, donde la integridad de los datos a menudo se percibe como de poca importancia (ciertamente cierto para, por ejemplo, los juegos y la navegación web, menos cierto para la banca por Internet y las finanzas domésticas), la memoria sin paridad es una opción asequible. Sin embargo, si se requiere integridad de los datos, la memoria sin paridad detendrá la computadora y evitará que los datos corruptos afecten los resultados o los datos almacenados, aunque perderá los datos intermedios no almacenados e impedirá el uso hasta que se reemplace la RAM defectuosa. A costa de una cierta sobrecarga computacional, de impacto insignificante con las computadoras rápidas modernas, los errores detectados se pueden corregir, lo que es cada vez más importante en las máquinas en red que dan servicio a muchos usuarios.
La RAM con ECC o código de corrección de errores puede detectar y corregir errores . Al igual que con la RAM con paridad, se necesita almacenar información adicional y realizar más procesamiento, lo que hace que la RAM con ECC sea más cara y un poco más lenta que la RAM sin paridad y con paridad lógica. Este tipo de memoria ECC es especialmente útil para cualquier aplicación en la que la confiabilidad o el tiempo de actividad sean una preocupación: los bits defectuosos en una palabra de memoria se detectan y corrigen sobre la marcha sin impacto en la aplicación. La ocurrencia del error generalmente es registrada por el sistema operativo para su análisis por un recurso técnico. En el caso de que el error sea persistente, se puede programar un tiempo de inactividad del servidor para reemplazar la unidad de memoria defectuosa.
En 1991, Wang ganó un juicio contra Toshiba y NEC por sus patentes sobre SIMM, basándose en parte en su afirmación de utilizar un noveno chip de RAM para la paridad. [3] [4] En respuesta, los SIMM con tres chips en lugar de nueve chips separados para cada bit se hicieron populares bajo la teoría de que no infringían. Sin embargo, el cambio de SIMM de nueve chips a SIMM de tres chips causó algunos problemas de compatibilidad. [5] Un año después, en 1992, Wang también demandó a Mitsubishi , pero Wang finalmente no prevaleció en eso porque los tribunales determinaron en 1997 que existía un acuerdo de licencia. [6] Finalmente, a fines de la década de 1990, los DIMM habían suplantado a los SIMM en el mercado, y los DIMM no fueron objeto de las demandas de Wang.