Bit de parité

En raison de sa simplicité, la parité est utilisée dans de nombreuses applications matérielles où une opération peut être répétée en cas de difficulté, ou lorsque la simple détection de l’erreur est utile. Par exemple, les bus SCSI et PCI utilisent la parité pour détecter les erreurs de transmission, et de nombreux caches d’instructions de microprocesseurs incluent une protection de parité. Comme les données du cache I ne sont qu’une copie de la mémoire principale, elles peuvent être ignorées et réinitialisées si elles s’avèrent être corrompues.

Dans la transmission de données en série, un format courant est de 7 bits de données, un bit de parité pair et un ou deux bits d’arrêt. Ce format permet d’accueillir tous les caractères ASCII de 7 bits dans un octet de 8 bits. D’autres formats sont possibles ; 8 bits de données plus un bit de parité peuvent véhiculer toutes les valeurs d’octets de 8 bits.

Dans les contextes de communication série, la parité est généralement générée et vérifiée par le matériel d’interface (par exemple, un UART) et, à la réception, le résultat est mis à la disposition d’un processeur tel que l’unité centrale (et aussi, par exemple, le système d’exploitation) via un bit d’état dans un registre matériel du matériel d’interface. La récupération de l’erreur se fait généralement en retransmettant les données, dont les détails sont généralement gérés par un logiciel (par exemple, les routines d’E/S du système d’exploitation).

Lorsque le nombre total de bits transmis, y compris le bit de parité, est pair, la parité impaire présente l’avantage que les motifs tout-zéro et tout-un sont tous deux détectés comme des erreurs. Si le nombre total de bits est impair, seul l’un des schémas est détecté comme une erreur, et le choix peut être fait en fonction de celui qui est censé être l’erreur la plus courante.

Réseau redondant de disques indépendantsModification

Les données de parité sont utilisées par certains niveaux de réseau redondant de disques indépendants (RAID) pour obtenir une redondance. Si un disque de la matrice tombe en panne, les données restantes sur les autres disques peuvent être combinées avec les données de parité (en utilisant la fonction booléenne XOR) pour reconstituer les données manquantes.

Par exemple, supposons que deux lecteurs dans une matrice RAID 5 à trois lecteurs contiennent les données suivantes :

Lecteur 1 : 01101101
Lecteur 2 : 11010100

Pour calculer les données de parité pour les deux lecteurs, un XOR est effectué sur leurs données :

01101101
XOR 11010100
_____________
10111001

Les données de parité résultantes, 10111001, sont ensuite stockées sur le lecteur 3.

Si l’un des trois lecteurs tombe en panne, le contenu du lecteur défaillant peut être reconstitué sur un lecteur de remplacement en soumettant les données des autres lecteurs à la même opération XOR. Si le lecteur 2 tombait en panne, ses données pourraient être reconstruites en utilisant les résultats XOR du contenu des deux lecteurs restants, le lecteur 1 et le lecteur 3 :

Le lecteur 1 : 01101101
Le lecteur 3 : 10111001

comme suit :

10111001
XOR 01101101
_____________
11010100

Le résultat de ce calcul XOR donne le contenu du lecteur 2. 11010100 est alors stocké sur le lecteur 2, réparant complètement le tableau. Ce même concept XOR s’applique de manière similaire à des matrices plus importantes, utilisant n’importe quel nombre de disques. Dans le cas d’une matrice RAID 3 de 12 disques, 11 disques participent au calcul XOR présenté ci-dessus et donnent une valeur qui est ensuite stockée sur le disque de parité dédié.

Des extensions et des variations sur le mécanisme de bit de parité « double », « dual » ou « diagonale », sont utilisées dans RAID-DP.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *