Calculadora de bits ECC de código Hamming
Datos de entrada
| Bits de datos | 8 |
|---|
Calculadora de bits ECC de código Hamming
Halla el número mínimo de bits de paridad que necesita un código Hamming de corrección de un error para proteger una cantidad dada de bits de datos, junto con la longitud total de la palabra de código y la sobrecarga de paridad.
Datos de entrada
Bits de datos
Resultados
Introduce un valor para ver los resultados.
Resultados
Bits ECC de código Hamming
Un código Hamming protege un bloque de datos añadiendo un puñado de bits de paridad. Cuando más tarde un bit se invierte, el patrón de comprobaciones de paridad fallidas nombra la posición exacta que cambió, de modo que un decodificador puede volver a invertirla. La única cuestión de diseño es cuántos bits de paridad necesita un bloque de un tamaño dado.
La condición de bits mínimos
Sea el número de bits de datos y el número de bits de paridad. Los bits de paridad forman en conjunto un síndrome de bits, que puede tomar valores distintos. Cada una de las posiciones de la palabra de código necesita su propio síndrome distinto de cero para poder señalar el bit invertido, y un valor se reserva para «sin error». Esto da la condición de corrección de un error (SEC):
2r≥m+r+1Como aparece en ambos lados, no hay solución cerrada. El número de paridad necesario es simplemente el menor que cumple la desigualdad, hallado probando por turno.
Ejemplo resuelto: 8 bits de datos
Tomamos y probamos cada candidato:
| 2 | 4 | 11 | no |
| 3 | 8 | 12 | no |
| 4 | 16 | 13 | sí |
La primera fila que se cumple es , así que 8 bits de datos necesitan 4 bits de paridad:
24=16≥8+4+1=13La palabra de código completa es
n=m+r=8+4=12 bitsy la sobrecarga de paridad es
O=nr=124≈33,3%La sobrecarga disminuye al crecer los bloques
El número de paridad crece aproximadamente como , de modo que los bloques más grandes reparten los bits de comprobación entre muchos más datos. La tabla enumera tamaños de bloque comunes.
| Bits de datos | Bits de paridad | Palabra | Sobrecarga |
|---|---|---|---|
| 1 | 2 | 3 | 66,7% |
| 4 | 3 | 7 | 42,9% |
| 8 | 4 | 12 | 33,3% |
| 11 | 4 | 15 | 26,7% |
| 16 | 5 | 21 | 23,8% |
| 26 | 5 | 31 | 16,1% |
| 32 | 6 | 38 | 15,8% |
| 57 | 6 | 63 | 9,5% |
| 64 | 7 | 71 | 9,9% |
| 247 | 8 | 255 | 3,1% |
El clásico código Hamming (7, 4) —4 bits de datos en una palabra de 7 bits— está en la tercera fila desde arriba, y el código (15, 11) en la cuarta.
Colocación de los bits de paridad
En la disposición estándar, los bits de paridad ocupan las posiciones potencia de dos 1, 2, 4, 8, 16, … y los bits de datos llenan el resto. Un bit de paridad en la posición es responsable exactamente de las posiciones cuyo índice tiene el bit activado, de modo que el conjunto de comprobaciones fallidas se lee directamente como la dirección binaria del bit invertido. El recuento de posiciones potencia de dos hasta coincide con el mismo que calcula esta página, por lo que la disposición y la condición de bits mínimos siempre concuerdan.
SEC frente a SECDED
La condición anterior es para un código de corrección de un error, que corrige cualquier error de un bit pero no puede distinguir un verdadero error de dos bits de uno de un solo bit. Añadir un único bit de paridad global sobre toda la palabra de código produce un código de corrección de un error y detección de dos errores (SECDED): sigue corrigiendo cualquier error de un bit y además detecta —sin corregirlo— cualquier error de dos bits. Para SECDED, suma un bit tanto al recuento de paridad como a la longitud total. La memoria comercializada como «ECC» suele usar SECDED, por ejemplo 64 bits de datos protegidos por 8 bits de comprobación.
Cálculos relacionados
Para comparar dos cadenas de bits de igual longitud y contar en cuántas posiciones difieren —la magnitud que fija cuántos errores puede atrapar un código—, consulta la Calculadora de distancia de Hamming. Para un esquema de detección de errores distinto que añade una suma de verificación en lugar de paridad que direcciona posiciones, la Calculadora de suma de verificación CRC calcula comprobaciones de redundancia cíclica.
Preguntas frecuentes (FAQ)
¿Qué son los bits de paridad en un código Hamming?
Los bits de paridad, también llamados bits de comprobación, son bits adicionales que se añaden a un bloque de datos para que un decodificador pueda detectar y corregir errores. En un código Hamming de corrección de un error (SEC), cada bit de paridad cubre un subconjunto específico y solapado de las posiciones de datos. Cuando un bit se invierte, el patrón de comprobaciones de paridad fallidas —el síndrome— deletrea en binario la posición exacta del bit invertido, de modo que el decodificador puede volver a invertirlo.
El número de bits de paridad r para m bits de datos es el menor r que cumple 2^r ≥ m + r + 1. Para 8 bits de datos resulta r = 4, produciendo una palabra de código de 12 bits.
¿Cuál es la diferencia entre SEC y SECDED?
Un código Hamming de corrección de un error (SEC) corrige cualquier error de un bit en una palabra de código, pero no puede distinguir con fiabilidad un error de dos bits de uno de un solo bit. La corrección de un error con detección de dos errores (SECDED) añade un bit de paridad global más sobre el código SEC. Ese bit adicional permite al decodificador corregir cualquier error de un bit y además detectar (aunque no corregir) cualquier error de dos bits.
Esta calculadora informa de los bits de paridad para la forma SEC. Para SECDED, suma un bit al recuento de paridad y a la longitud total de la palabra de código. La memoria de servidor comercializada como «ECC» suele usar un código SECDED, por ejemplo 64 bits de datos protegidos por 8 bits de comprobación.
¿Por qué la desigualdad es 2^r ≥ m + r + 1 y no 2^r ≥ m + r?
Los r bits de paridad producen en conjunto un síndrome de r bits, que puede tomar 2^r valores distintos. Cada una de las n = m + r posiciones de la palabra de código necesita su propio síndrome distinto de cero para que el decodificador pueda nombrar la posición que se invirtió.
Un valor más —el síndrome todo ceros— se reserva para significar «no se detectó error». Ese valor reservado es el origen del + 1, así que el síndrome debe cubrir m + r posiciones más el caso sin error: 2^r ≥ (m + r) + 1.
¿Dónde se colocan los bits de paridad en la palabra de código?
En la disposición clásica de Hamming, los bits de paridad ocupan las posiciones potencia de dos —1, 2, 4, 8, 16, etc.—, mientras que los bits de datos llenan las restantes. Colocar cada bit de paridad en la posición 2^k lo hace responsable exactamente de las posiciones cuyo índice tiene el bit k activado, que es lo que permite leer las comprobaciones fallidas como la dirección binaria del bit erróneo.
El recuento de posiciones potencia de dos hasta n coincide con el mismo r que devuelve esta calculadora, por lo que la disposición y la fórmula del número mínimo de bits siempre concuerdan.