Bit de paridad

Debido a su simplicidad, la paridad se utiliza en muchas aplicaciones de hardware en las que se puede repetir una operación en caso de dificultad, o en las que simplemente detectar el error es útil. Por ejemplo, los buses SCSI y PCI utilizan la paridad para detectar errores de transmisión, y muchas cachés de instrucciones de los microprocesadores incluyen protección de paridad. Dado que los datos de la caché I no son más que una copia de la memoria principal, se pueden desestimar y volver a cargar si se descubre que están corruptos.

En la transmisión de datos en serie, un formato común es el de 7 bits de datos, un bit de paridad par y uno o dos bits de parada. Este formato acomoda todos los caracteres ASCII de 7 bits en un byte de 8 bits. Son posibles otros formatos; 8 bits de datos más un bit de paridad pueden transmitir todos los valores de los bytes de 8 bits.

En contextos de comunicación en serie, la paridad suele ser generada y comprobada por el hardware de la interfaz (por ejemplo, una UART) y, en la recepción, el resultado se pone a disposición de un procesador como la CPU (y también, por ejemplo, del sistema operativo) a través de un bit de estado en un registro hardware del hardware de la interfaz. La recuperación del error suele realizarse mediante la retransmisión de los datos, cuyos detalles suelen ser gestionados por el software (por ejemplo, las rutinas de E/S del sistema operativo).

Cuando el número total de bits transmitidos, incluido el bit de paridad, es par, la paridad impar tiene la ventaja de que los patrones todo-zero y todo-uno se detectan ambos como errores. Si el número total de bits es impar, sólo uno de los patrones se detecta como error, y la elección puede hacerse en función de cuál se espera que sea el error más común.

Matriz redundante de discos independientesEditar

Los datos de paridad son utilizados por algunos niveles de matriz redundante de discos independientes (RAID) para lograr la redundancia. Si una unidad de la matriz falla, los datos restantes de las otras unidades pueden combinarse con los datos de paridad (utilizando la función booleana XOR) para reconstruir los datos que faltan.

Por ejemplo, suponga que dos unidades de una matriz RAID 5 de tres unidades contienen los siguientes datos:

Unidad 1: 01101101
Unidad 2: 11010100

Para calcular los datos de paridad de las dos unidades, se realiza un XOR en sus datos:

01101101
XOR 11010100
_____________
10111001

Los datos de paridad resultantes, 10111001, se almacenan en la unidad 3.

Si alguna de las tres unidades falla, el contenido de la unidad que ha fallado puede reconstruirse en una unidad de sustitución sometiendo los datos de las unidades restantes a la misma operación XOR. Si la unidad 2 fallara, sus datos podrían reconstruirse utilizando los resultados XOR de los contenidos de las dos unidades restantes, la unidad 1 y la unidad 3:

Unidad 1: 01101101
Unidad 3: 10111001

de la siguiente manera:

10111001
XOR 01101101
_____________
11010100

El resultado de ese cálculo XOR arroja el contenido de la unidad 2. 11010100 se almacena entonces en la unidad 2, reparando completamente la matriz. Este mismo concepto XOR se aplica de forma similar a matrices más grandes, utilizando cualquier número de discos. En el caso de una matriz RAID 3 de 12 unidades, 11 unidades participan en el cálculo XOR mostrado anteriormente y producen un valor que se almacena en la unidad de paridad dedicada.

En RAID-DP se utilizan extensiones y variaciones del mecanismo de bits de paridad «doble», «dual» o «diagonal».

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *