Un bit de paridad , o bit de verificación , es un bit que se agrega a una cadena de código binario . Los bits de paridad son una forma simple de código de detección de errores . Los bits de paridad generalmente se aplican a las unidades más pequeñas de un protocolo de comunicación, típicamente octetos de 8 bits (bytes), aunque también se pueden aplicar por separado a una cadena de bits de mensaje completa.
El bit de paridad garantiza que el número total de bits 1 en la cadena sea par o impar . [1] En consecuencia, hay dos variantes de bits de paridad: bit de paridad par y bit de paridad impar . En el caso de paridad par, para un conjunto dado de bits, se cuentan los bits cuyo valor es 1. Si ese recuento es impar, el valor del bit de paridad se establece en 1, lo que hace que el recuento total de ocurrencias de 1 en todo el conjunto (incluido el bit de paridad) sea un número par. Si el recuento de 1 en un conjunto dado de bits ya es par, el valor del bit de paridad es 0. En el caso de paridad impar, la codificación se invierte. Para un conjunto dado de bits, si el recuento de bits con un valor de 1 es par, el valor del bit de paridad se establece en 1, lo que hace que el recuento total de 1 en todo el conjunto (incluido el bit de paridad) sea un número impar. Si el recuento de bits con un valor de 1 es impar, el recuento ya es impar, por lo que el valor del bit de paridad es 0. La paridad par es un caso especial de una verificación de redundancia cíclica (CRC), donde la CRC de 1 bit es generada por el polinomio x +1.
En matemáticas, la paridad puede referirse a la uniformidad o imparidad de un número entero, que, cuando se escribe en su forma binaria , se puede determinar simplemente examinando solo su bit menos significativo .
En tecnología de la información, la paridad se refiere a la uniformidad o imparidad, dado cualquier conjunto de dígitos binarios, del número de esos bits con valor uno. Dado que la paridad está determinada por el estado de cada uno de los bits, esta propiedad de la paridad (que depende de todos los bits y cambia su valor de paridad par a impar si cambia un bit cualquiera) permite su uso en esquemas de detección y corrección de errores.
En telecomunicaciones, la paridad a la que se refieren algunos protocolos es para la detección de errores . El medio de transmisión está preestablecido, en ambos puntos finales, para concordar en paridad impar o paridad par. Para cada cadena de bits lista para transmitir (paquete de datos), el emisor calcula su bit de paridad, cero o uno, para que se ajuste a la paridad acordada, par o impar. El receptor de ese paquete primero verifica que la paridad del paquete en su conjunto esté de acuerdo con el acuerdo preestablecido, luego, si hubo un error de paridad en ese paquete, solicita una retransmisión de ese paquete.
En informática, la banda de paridad o el disco de paridad de un RAID proporciona corrección de errores . Los bits de paridad se escriben a razón de un bit de paridad por n bits, donde n es el número de discos en la matriz. Cuando se produce un error de lectura, cada bit de la región de error se recalcula a partir de su conjunto de n bits. De esta manera, el uso de un bit de paridad crea "redundancia" para una región desde el tamaño de un bit hasta el tamaño de un disco. Consulte § Matriz redundante de discos independientes a continuación.
En electrónica, la transcodificación de datos con paridad puede ser muy eficiente, ya que las puertas XOR generan lo que equivale a un bit de verificación que crea una paridad par, y el diseño de la lógica XOR se adapta fácilmente a cualquier número de entradas. Las estructuras XOR y AND constituyen la mayor parte de la mayoría de los circuitos integrados.
Si se transmiten incorrectamente un número impar de bits (incluido el bit de paridad) , el bit de paridad será incorrecto, lo que indica que se produjo un error de paridad en la transmisión. El bit de paridad solo es adecuado para detectar errores; no puede corregir ningún error, ya que no hay forma de determinar el bit en particular que está dañado. Los datos deben descartarse por completo y retransmitirse desde cero . Por lo tanto, en un medio de transmisión ruidoso, la transmisión exitosa puede tardar mucho tiempo o incluso no ocurrir nunca. Sin embargo, la paridad tiene la ventaja de que solo utiliza un único bit y solo requiere una cantidad de puertas XOR para generarse. Consulte el código de Hamming para obtener un ejemplo de un código de corrección de errores.
La verificación de bits de paridad se utiliza ocasionalmente para transmitir caracteres ASCII , que tienen 7 bits, dejando el octavo bit como bit de paridad.
Por ejemplo, el bit de paridad se puede calcular de la siguiente manera. Supongamos que Alice y Bob se están comunicando y Alice quiere enviarle a Bob el mensaje simple de 4 bits 1001.
Este mecanismo permite la detección de errores de un solo bit, ya que si un bit se invierte debido al ruido de línea, habrá una cantidad incorrecta de unos en los datos recibidos. En los dos ejemplos anteriores, el valor de paridad calculado por Bob coincide con el bit de paridad en su valor recibido, lo que indica que no hay errores de un solo bit. Considere el siguiente ejemplo con un error de transmisión en el segundo bit utilizando XOR:
Los esquemas de paridad tienen una limitación. Se garantiza que un bit de paridad detecte solo un número impar de errores de bit. Si un número par de bits tiene errores, el bit de paridad registra el número correcto de unos aunque los datos estén dañados. (Véase también detección y corrección de errores ). Consideremos el mismo ejemplo anterior pero con un número par de bits dañados:
Bob observa paridad uniforme, como se esperaba, por lo que no logra detectar los dos errores de bits.
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 simplemente resulta útil detectar el error. Por ejemplo, los buses SCSI y PCI utilizan la paridad para detectar errores de transmisión, y muchas cachés de instrucciones de microprocesadores incluyen protección de paridad. Debido a que los datos de la caché de instrucciones son solo una copia de la memoria principal , se pueden ignorar y volver a buscar si se descubre que están dañados.
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 . Ese formato admite 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 bytes de 8 bits.
En los contextos de comunicación en serie, la paridad suele ser generada y verificada por el hardware de la interfaz (como un UART ) y, al recibirla, el resultado se pone a disposición de un procesador como la CPU (y también, por ejemplo, el sistema operativo ) a través de un bit de estado en un registro de hardware en el hardware de la interfaz . La recuperación del error suele realizarse retransmitiendo los datos, cuyos detalles suelen ser manejados por software (como 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 tanto los patrones de todos ceros como los de todos unos se detectan como errores. Si el número total de bits es impar, solo uno de los patrones se detecta como error y la elección se puede hacer en función de cuál se espera que sea el error más común.
Los datos de paridad son utilizados por las matrices RAID ( matriz redundante de discos independientes/de bajo costo ) para lograr redundancia . Si falla una unidad de la matriz, los datos restantes de las otras unidades se pueden combinar con los datos de paridad (usando la función booleana XOR ) para reconstruir los datos faltantes.
Por ejemplo, supongamos que dos unidades en una matriz RAID 4 de tres unidades contenían los siguientes datos:
Para calcular los datos de paridad de las dos unidades, se realiza una operación XOR en sus datos:
Los datos de paridad resultantes, 10111001 , se almacenan luego en la Unidad 3.
Si alguna de las tres unidades falla, el contenido de la unidad fallida se puede reconstruir en una unidad de reemplazo sometiendo los datos de las unidades restantes a la misma operación XOR. Si la unidad 2 fallara, sus datos se podrían reconstruir utilizando los resultados XOR del contenido de las dos unidades restantes, la unidad 1 y la unidad 3:
como sigue:
El resultado de ese cálculo XOR produce el contenido de la Unidad 2. Luego, 11010100 se almacena en la Unidad 2, reparando completamente la matriz.
La lógica XOR también es equivalente a la paridad par (porque a XOR b XOR c XOR ... puede tratarse como XOR( a , b , c ,...), que es un operador n-ario que es verdadero si y solo si un número impar de argumentos es verdadero). Por lo tanto, el mismo concepto XOR anterior se aplica de manera similar a matrices RAID más grandes con paridad, 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 que se muestra arriba y producen un valor que luego se almacena en la unidad de paridad dedicada.
En RAID-DP se utilizan extensiones y variaciones del mecanismo de bit de paridad, paridad "doble", "dual" o "diagonal" .
En 1951, el primer sistema de almacenamiento de datos en cinta magnética incluía una pista de paridad . La paridad en esta forma, aplicada a través de múltiples señales paralelas, se conoce como verificación de redundancia transversal . Esto se puede combinar con la paridad calculada sobre múltiples bits enviados en una sola señal, una verificación de redundancia longitudinal . En un bus paralelo, hay un bit de verificación de redundancia longitudinal por cada señal paralela.
La paridad también se utilizó en al menos algunos sistemas de entrada de datos con cinta de papel ( cinta perforada ) (que precedieron a los sistemas de cinta magnética). En los sistemas vendidos por la empresa británica ICL (anteriormente ICT), la cinta de papel de 1 pulgada de ancho (25 mm) tenía 8 posiciones de orificios que la atravesaban, siendo la octava para la paridad. Se usaban 7 posiciones para los datos, por ejemplo, ASCII de 7 bits. La octava posición tenía un orificio perforado en ella dependiendo del número de orificios de datos perforados.
{{cite book}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace )