Cuando se utilizan códigos de corrección de errores (ECC), ¿cómo detecta el algoritmo si los bits de ECC están dañados?

Parece que combina dos conceptos: códigos de corrección de errores y bits de paridad .

Con respecto a los códigos de corrección de errores , siempre que sus palabras de código estén al menos a una distancia de separación de 3, puede corregir cualquier error de un solo bit. No importa qué bit esté dañado.

Ver aquí: ¿Cómo funciona la corrección de errores?

Como ejemplo, supongamos que desea enviar un valor de 2 bits. Esto significa que tiene 4 valores posibles que puede enviar:

00

01

10

11

Para obtener un código de corrección de errores válido, necesitamos convertir estos valores en palabras de código que al menos estén a una distancia de separación de 3. Existen múltiples formas de generar estas palabras de código. Aquí hay un código que hice simplemente a través de prueba y error:

00 = 11010

01 = 00000

10 = 01111

11 = 10101

Entonces, lo que esto significa es que, en la RAM, si alguna vez desea escribir el valor 00 , en su lugar lo codificaría como 11010 y lo escribiría en la RAM. Luego, cuando lees 11010 de RAM, lo decodificas a 00 .

El concepto de bits de paridad ni siquiera entra en juego con estas palabras de código; Las palabras de código que generé no tienen bits de paridad. Los bits de paridad son simplemente una forma fácil de hacer que sus palabras de código separen 3 distancias .

Una manera fácil de generar bits de paridad es a través del código de hamming. Esencialmente, los códigos de Hamming hacen algunos XOR de ciertos bits para garantizar que tenga un código de distancia de Hamming 3, y los bits que se agregan también le permiten identificar la ubicación del error de un solo bit con una lógica mínima.

Por ejemplo, para nuestro código de 2 bits, con un código de hamming, generaríamos las siguientes palabras de código:

00 (datos), 000 (paridad) = 00000

01 (datos), 011 (paridad) = 00111

10 (datos), 101 (paridad) = 11001

11 (datos), 110 (paridad) = 11110

Esta es una versión condensada de un código de hamming (7, 4) con los bits de paridad en los puntos canónicos. Obviamente, también es un código de distancia de hamming 3. Por supuesto, podríamos intercalar estos bits de paridad como queramos. Puede pegar los bits de paridad al final:

00 (datos), 000 (paridad) = 00000

01 (datos), 011 (paridad) = 01011

10 (datos), 101 (paridad) = 10101

11 (datos), 110 (paridad) = 11110

Este también es un código de distancia de hamming 3, lo que significa que todavía podemos hacer la corrección de errores de un solo bit.

En resumen, cuando se trata de la corrección de errores de un solo bit, lo único que importa es que las palabras de código están bloqueando la distancia 3. Los bits de paridad no importan ni más ni menos que los bits de datos; simplemente se usan para garantizar que la palabra de código se interrumpa 3.

Creo que está sugiriendo una situación en la que hay un error en la RAM y también un error en el bit ECC que hace que no se detecte el error.

La mayoría de las memorias ECC usan el código Hamming, por lo que no hay probabilidad de un error no detectado.

La memoria ECC puede corregir algunos errores e informar errores no corregibles.