Paridade bit

Devido à sua simplicidade, a paridade é usada em muitas aplicações de hardware onde uma operação pode ser repetida em caso de dificuldade, ou onde a simples detecção do erro é útil. Por exemplo, os barramentos SCSI e PCI usam paridade para detectar erros de transmissão, e muitas caches de instruções de microprocessador incluem proteção de paridade. Como os dados do I-cache são apenas uma cópia da memória principal, eles podem ser desconsiderados e recuperados se forem encontrados corrompidos.

Na transmissão de dados em série, um formato comum é 7 bits de dados, um bit de paridade uniforme e um ou dois bits de parada. Este formato acomoda todos os caracteres ASCII de 7 bits em um byte de 8 bits. Outros formatos são possíveis; 8 bits de dados mais um bit de paridade podem transmitir todos os valores de byte de 8 bits.

Em contextos de comunicação serial, a paridade é normalmente gerada e verificada pelo hardware da interface (por exemplo, uma UART) e, na recepção, o resultado é disponibilizado a um processador como a CPU (e também, por exemplo, o sistema operacional) através de um bit de status em um registro de hardware no hardware da interface. A recuperação do erro é normalmente feita pela retransmissão dos dados, cujos detalhes são normalmente tratados por software (por exemplo, as rotinas de E/S do sistema operacional).

Quando o número total de bits transmitidos, incluindo o bit de paridade, é uniforme, a paridade ímpar tem a vantagem de que os padrões all-zeros e all-ones são ambos detectados como erros. Se o número total de bits for ímpar, apenas um dos padrões é detectado como um erro, e a escolha pode ser feita com base no erro mais comum.

Matriz redundante de discos independentesEditar

Dados de paridade são usados por alguma matriz redundante de discos independentes (RAID) para alcançar redundância. Se uma unidade no array falhar, os dados restantes nas outras unidades podem ser combinados com os dados de paridade (usando a função Boolean XOR) para reconstruir os dados ausentes.

Por exemplo, suponha que dois drives em um array RAID 5 de três drives contenham os seguintes dados:

Drive 1: 01101101
Drive 2: 1101010100

Para calcular dados de paridade para os dois drives, um XOR é executado nos seus dados:

01101101
XOR 11010100
_____________
10111001

Os dados de paridade resultantes, 10111001, são então armazenados no Drive 3.

Se algum dos três conversores falhar, o conteúdo do conversor falhado pode ser reconstruído num conversor de substituição, sujeitando os dados dos restantes conversores à mesma operação XOR. Se o Drive 2 falhar, os seus dados podem ser reconstruídos usando os resultados XOR do conteúdo dos dois drives restantes, Drive 1 e Drive 3:

Drive 1: 01101101
Drive 3: 10111001

como se segue:

p> 10111001
XOR 01101101
_____________
11010100

O resultado desse cálculo XOR produz o conteúdo do Drive 2. O 11010100 é então armazenado no Drive 2, reparando completamente a matriz. Este mesmo conceito XOR aplica-se de forma semelhante a matrizes maiores, usando qualquer número de discos. No caso de um conjunto RAID 3 de 12 unidades, 11 unidades participam no cálculo XOR mostrado acima e produzem um valor que é depois armazenado na unidade de paridade dedicada.

Extensões e variações no mecanismo de bit de paridade “dupla”, “dupla” ou “diagonal”, são utilizadas no RAID-DP.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *