Leçon
La théorie — Code de Hamming : corriger un bit en repérant sa position
Un code de Hamming ajoute des bits de contrôle aux données afin de repérer et de réinverser un bit erroné. Chaque bit de contrôle impose une parité paire à un ensemble choisi de positions : c’est un contrôle de parité. Le décodeur répète ces contrôles sur le mot reçu. Le motif des échecs, appelé syndrome, se lit comme un nombre binaire qui donne la position du bit erroné ; 0 signifie qu’il n’y en a aucun. Un chiffre de contrôle indique seulement qu’une erreur existe ; ici, sa position est connue. Le code étendu ajoute un bit qui rend paire la parité du mot entier. Il corrige alors toute inversion unique et détecte toute paire d’inversions sans la corriger : c’est le principe SECDED.
Ce que signifie chaque symbole
dᵢ- les quatre bits de données, aux positions 3, 5, 6 et 7
p₁, p₂, p₄- les bits de contrôle, chacun placé à la position qui lui donne son nom ; p0 est le bit de parité globale du code étendu
s- le syndrome, 4s4 + 2s2 + s1, où sk vaut 1 lorsque le cercle k contient un nombre impair de uns à l’arrivée
P- la parité des huit bits reçus dans le code étendu : 1 indique un nombre impair d’inversions
p- le taux d’erreur binaire, c’est-à-dire la probabilité qu’un bit donné s’inverse, indépendamment de tous les autres
- Suppose
- Chaque bit s’inverse indépendamment, avec la même probabilité p. Les canaux et les mémoires réels connaissent aussi des erreurs en rafale, qui touchent plusieurs bits voisins à la fois. Or une rafale constitue précisément le type d’inversions multiples que ces codes gèrent le moins bien.
- Ne tient plus quand
- À partir de trois inversions. Le code étendu interprète trois inversions comme une seule, car le contrôle global devient impair, puis corrige un bit qui était juste : le tableau exhaustif montre que les 896 triples inversions produisent toutes des données erronées sans signalement.
Problème entièrement résolu
-
Combien de bits de contrôle faut-il pour un mot de 64 bits ? 4 étapes
Protégez 64 bits de données de la même manière. Appuyez sur Étendu, une inversion : quatre bits de contrôle pour quatre bits de données, soit un rendement de 50,0 %. Déterminez combien de bits de contrôle exige un mot de 64 bits pour offrir la même garantie — corriger toute inversion unique et signaler toute paire d’inversions — puis calculez le coût du mot plus long pour la valeur p = 0,001 de ce préréglage.
Ouvrez ce problème dans l'outil
-
Avec r bits de contrôle, le syndrome peut prendre 2r valeurs. L’une doit signifier « aucune erreur », et chacune des m + r positions doit avoir sa propre valeur ; il faut donc 2r ≥ m + r + 1. Sur cette page, m = 4 et r = 3 satisfait exactement l’inégalité, sans aucune valeur libre.
-
Pour m = 64, six bits de contrôle donnent 64 valeurs, alors qu’il en faut 71 ; sept en donnent 128, assez pour 72 positions. Un mot de 71 bits corrige donc toute inversion unique.
-
L’ajout d’un bit de parité globale porte la longueur à 72 bits, dont 8 bits de contrôle, pour un rendement de 88,9 % au lieu des 50,0 % affichés sur la page.
-
Un mot plus long recueille plus souvent deux inversions, précisément le cas que SECDED ne sait plus réparer. Pour un mot de 8 bits, cette probabilité est la somme des deux valeurs indiquées sur la page.
Réponse
Huit bits de contrôle, un mot de 72 bits, un rendement de 88,9 %. Pour p = 0,001, la probabilité qu’il subisse au moins deux inversions est de 2,44×10⁻³. Si les mêmes 64 bits sont répartis entre seize mots de 8 bits, ils sont perdus dès que l’un de ces mots l’est, avec une probabilité de 4,46×10⁻⁴. Le mot long risque donc environ 5,5 fois plus de perdre ses 64 bits, en échange de huit fois moins de bits de contrôle.
-
Parcours
Pourquoi un algorithme est correct
Références (2)
- The code itself, the requirement that the checking number give the position of any single error, the check positions 1, 2, 4 and the reason for them, the extended code that adds double-error detection, and the relay computers that motivated it: R. W. Hamming, "Error Detecting and Error Correcting Codes." Bell System Technical Journal 29(2), April 1950, pp. 147-160. DOI 10.1002/j.1538-7305.1950.tb00463.x
- How Hamming told the story in his later course: a relay computer that could detect an error, retried three times and then dropped the problem, and the question that followed: R. W. Hamming, The Art of Doing Science and Engineering: Learning to Learn, Session 12, "Error-Correcting Codes". Lecture slides, Naval Postgraduate School, Monterey (course delivered 1995).