Un bit de paridad , o bit de verificación , es un bit que se añade a una cadena de código binario . Los bits de paridad son una forma sencilla de código de detección de errores . Generalmente, se aplican a las unidades más pequeñas de un protocolo de comunicación, normalmente octetos de 8 bits (bytes), aunque también pueden aplicarse por separado a toda una cadena de bits de un mensaje.
El bit de paridad asegura 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 conteo es impar, el valor del bit de paridad se establece en 1, haciendo que el conteo total de ocurrencias de 1 en todo el conjunto (incluido el bit de paridad) sea un número par. Si el conteo 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 conteo de bits con un valor de 1 es par, el valor del bit de paridad se establece en 1, haciendo que el conteo total de 1 en todo el conjunto (incluido el bit de paridad) sea un número impar. Si el número de bits con valor 1 es impar, el número ya es impar, por lo que el valor del bit de paridad es 0. La paridad es un caso especial de una comprobación de redundancia cíclica (CRC), donde la CRC de 1 bit se genera mediante el polinomio x + 1.
Paridad
En matemáticas, la paridad puede referirse a si un número entero es par o impar, lo cual, cuando se escribe en su forma binaria , se puede determinar simplemente examinando su bit menos significativo .
En informática, la paridad se refiere a la paridad (paridad o imparidad) de los bits con valor uno en cualquier conjunto de dígitos binarios. Dado que la paridad está determinada por el estado de cada bit, esta propiedad —que depende de todos los bits y cambia su valor de paridad par a impar si alguno de ellos cambia— permite su uso en sistemas de detección y corrección de errores.
En telecomunicaciones, la paridad a la que se refieren algunos protocolos sirve para la detección de errores . El medio de transmisión se preconfigura, en ambos extremos, para que la paridad sea par o impar. Para cada secuencia 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 coincida con el acuerdo preestablecido; luego, si hubo un error de paridad en ese paquete, solicita su retransmisión.
En informática, la banda de paridad o disco de paridad en un RAID proporciona corrección de errores . Los bits de paridad se escriben a razón de un bit de paridad por cada n bits, donde n es el número de discos en la matriz. Cuando se produce un error de lectura, cada bit en la región de error se recalcula a partir de su conjunto de n bits. De esta forma, el uso de un bit de paridad crea redundancia para una región, desde el tamaño de un bit hasta el de un disco. Véase la sección sobre la matriz RAID más adelante.
En electrónica, la transcodificación de datos con paridad puede ser muy eficiente, ya que las compuertas XOR generan un bit de control equivalente que crea una paridad par, y el diseño lógico 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.
Detección de errores

Si se transmite un número impar de bits (incluido el bit de paridad) de forma incorrecta, este bit también será incorrecto, lo que indica que se produjo un error de paridad en la transmisión. El bit de paridad solo sirve para detectar errores; no puede corregirlos , ya que no hay forma de determinar el bit específico que está dañado. Los datos deben descartarse por completo y retransmitirse desde cero . En un medio de transmisión ruidoso, la transmisión exitosa puede tardar mucho tiempo o incluso no producirse nunca. Sin embargo, la paridad tiene la ventaja de que utiliza un solo bit y requiere solo unas pocas puertas XOR para su generación. Consulte el código de Hamming para ver un ejemplo de código corrector de errores.
La comprobación del bit 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 la 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 usando XOR:
Los esquemas de paridad tienen una limitación. Un bit de paridad solo detecta un número impar de errores de bits. Si un número par de bits presenta errores, el bit de paridad registra la cantidad correcta de unos, aunque los datos estén corruptos. (Véase también detección y corrección de errores ). Consideremos el mismo ejemplo anterior, pero con un número par de bits corruptos:
Bob observa una paridad uniforme, como era de esperar, por lo que no detecta los dos errores de bits.
Uso
Because of its simplicity, parity is used in many hardware applications in which an operation can be repeated in case of difficulty, or simply detecting the error is helpful. For example, the SCSI and PCI buses use parity to detect transmission errors, and many microprocessor instruction caches include parity protection. Because the Instruction cache data is just a copy of the main memory, it can be disregarded and refetched if it is found to be corrupted.
In serialdata transmission, a common format is 7 data bits, an even parity bit, and one or two stop bits. That format accommodates all the 7-bit ASCII characters in an 8-bit byte. Other formats are possible; 8 bits of data plus a parity bit can convey all 8-bit byte values.
In serial communication contexts, parity is usually generated and checked by interface hardware (such as a UART) and, on reception, the result made available to a processor such as the CPU (and so too, for instance, the operating system) via a status bit in a hardware register in the interface hardware. Recovery from the error is usually done by retransmitting the data, the details of which are usually handled by software (such as the operating system I/O routines).
When the total number of transmitted bits, including the parity bit, is even, odd parity has the advantage that both all-zeros and all-ones patterns are detected as errors. If the total number of bits is odd, only one of the patterns is detected as an error, and the choice can be made based on what the more common error is expected to be.
RAID array
Parity data is used by RAID arrays (redundant array of independent/inexpensive disks) to achieve redundancy. If a drive in the array fails, remaining data on the other drives can be combined with the parity data (using the Boolean XOR function) to reconstruct the missing data.
For example, suppose two drives in a three-drive RAID 4 array contained the following data:
To calculate parity data for the two drives, an XOR is performed on their data:
The resulting parity data, 10111001, is then stored on Drive 3.
Should any of the three drives fail, the contents of the failed drive can be reconstructed on a replacement drive by subjecting the data from the remaining drives to the same XOR operation. If Drive 2 were to fail, its data could be rebuilt using the XOR results of the contents of the two remaining drives, Drive 1 and Drive 3:
as follows:
El resultado de ese cálculo XOR proporciona el contenido de la unidad 2. A continuación, se almacena el valor 11010100 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 mostrado anteriormente 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 bits de paridad: paridad "doble", "dual" o "diagonal" .
Historia
En 1951, los primeros sistemas de almacenamiento de datos en cinta magnética incluían una pista de paridad. Esta paridad, aplicada a través de múltiples señales paralelas, se conoce como verificación de redundancia transversal . Puede combinarse con la paridad calculada sobre múltiples bits enviados en una sola señal, lo que se denomina verificación de redundancia longitudinal . En un bus paralelo, existe un bit de verificación de redundancia longitudinal por cada señal paralela.
La paridad también se utilizaba 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 (antes ICT), la cinta de papel de 25 mm de ancho tenía 8 posiciones perforadas a lo largo de ella, siendo la octava para la paridad. Siete posiciones se utilizaban para los datos, por ejemplo, ASCII de 7 bits. La octava posición tenía una perforación que dependía del número de perforaciones de datos.
Véase también
Referencias
Enlaces externos
- Diferentes métodos para generar el bit de paridad, entre otras operaciones con bits.
- Aritmética binaria
- Transmisión de datos
- Detección y corrección de errores
- Paridad (matemáticas)
- RAID
