Bit de paridad

Bit añadido a una cadena binaria para detección de errores
7 bits de datos
(recuento de 1 bits)8 bits incluida la paridad
inclusoextraño
000000000000000 00000000 1
101000131010001 11010001 0
110100141101001 01101001 1
111111171111111 11111111 0

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.

Paridad

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.

Detección de errores

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.

Tipo de paridad de bitsEscenario de transmisión exitosa
Paridad uniforme

Alice quiere transmitir: 1001 y 1011

Alice calcula el valor del bit de paridad:
1+0+0+1 (mod 2) = 0
1+0+1+1 (mod 2) = 1

Alice agrega bit de paridad y envía:
1001 0 y 1011 1

Bob recibe: 10010 y 10111

Bob calcula la paridad:
1+0+0+1+0 (mod 2) = 0
1+0+1+1+1 (mod 2) = 0

Bob informa que la transmisión es correcta después de observar el resultado esperado.

Paridad impar

Alice quiere transmitir: 1001 y 1011

Alice calcula el valor del bit de paridad:
1+0+0+1 (+ 1 mod 2) = 1
1+0+1+1 (+ 1 mod 2) = 0

Alice agrega bit de paridad y envía:
1001 1 y 1011 0

Bob recibe: 10011 y 10110

Bob calcula la paridad general:
1+0+0+1+1 (mod 2) = 1
1+0+1+1+0 (mod 2) = 1

Bob informa que la transmisión es correcta después de observar el resultado extraño esperado.

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:

Tipo de error de paridad de bitsEscenario de transmisión fallida
Paridad uniforme

Error en el segundo bit

Alice quiere transmitir: 1001

Alice calcula el valor del bit de paridad: 1^0^0^1 = 0

Alice agrega bit de paridad y envía: 10010

...ERROR DE TRANSMISIÓN...

Bob recibe: 1 1 010

Bob calcula la paridad general: 1^1^0^1^0 = 1

Bob informa una transmisión incorrecta después de observar un resultado extraño e inesperado.

Paridad uniforme

Error en el bit de paridad

Alice quiere transmitir: 1001

Alice calcula el valor de paridad par: 1^0^0^1 = 0

Alice envía: 10010

...ERROR DE TRANSMISIÓN...

Bob recibe: 1001 1

Bob calcula la paridad general: 1^0^0^1^1 = 1

Bob informa una transmisión incorrecta después de observar un resultado extraño e inesperado.

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:

Tipo de error de paridad de bitsEscenario de transmisión fallida
Paridad uniforme

Dos bits corruptos

Alice quiere transmitir: 1001

Alice calcula el valor de paridad par: 1^0^0^1 = 0

Alice envía: 10010

...ERROR DE TRANSMISIÓN...

Bob recibe: 1 1 01 1

Bob calcula la paridad general: 1^1^0^1^1 = 0

Bob informa que la transmisión es correcta aunque en realidad es incorrecta.

Bob observa paridad uniforme, como se esperaba, por lo que no logra detectar los dos errores de bits.

Uso

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 hardware de 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 interfaz . La recuperación del error se realiza generalmente 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.

Matriz RAID

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:

Conducir 1:01101101
Conducir 2:11010100

Para calcular los datos de paridad de las dos unidades, se realiza una operación XOR en sus datos:

01101101
  XOR    11010100
10111001

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:

Conducir 1:01101101
Conducir 3:10111001

como sigue:

01101101Conducir 1
XOR10111001Conducir 3
11010100Unidad reconstruida 2

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" .

Historia

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.

Véase también

Referencias

  1. ^ Ziemer, Rodger E.; Tranter, William H. (17 de marzo de 2014). Principios de comunicación: sistemas, modulación y ruido (séptima edición). Hoboken, Nueva Jersey. ISBN 9781118078914.OCLC 856647730  .{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  • Diferentes métodos para generar el bit de paridad, entre otras operaciones de bits
Obtenido de "https://es.wikipedia.org/w/index.php?title=Bit_de_paridad&oldid=1218769279"