Calculateur de bits ECC du code de Hamming
Données
| Bits de données | 8 |
|---|
Calculateur de bits ECC du code de Hamming
Trouve le nombre minimal de bits de parité dont un code de Hamming correcteur d'une erreur a besoin pour protéger un nombre donné de bits de données, ainsi que la longueur totale du mot de code et le surcoût de parité.
Données
Bits de données
Résultats
Saisissez une valeur pour afficher les résultats.
Résultats
Bits ECC du code de Hamming
Un code de Hamming protège un bloc de données en ajoutant une poignée de bits de parité. Lorsqu'un bit s'inverse par la suite, le motif des contrôles de parité en échec désigne la position exacte qui a changé, si bien qu'un décodeur peut la rétablir. La seule question de conception est : combien de bits de parité faut-il à un bloc d'une taille donnée ?
La condition du nombre minimal de bits
Soit le nombre de bits de données et le nombre de bits de parité. Les bits de parité forment ensemble un syndrome de bits, qui peut prendre valeurs distinctes. Chacune des positions du mot de code a besoin de son propre syndrome non nul pour que le décodeur puisse désigner le bit inversé, et une valeur est réservée à « aucune erreur ». D'où la condition de correction d'une erreur (SEC) :
2r≥m+r+1Comme figure des deux côtés, il n'existe pas de solution fermée. Le nombre de parité requis est simplement le plus petit vérifiant l'inégalité, trouvé en essayant tour à tour.
Exemple résolu : 8 bits de données
Prenons et testons chaque candidat :
| 2 | 4 | 11 | non |
| 3 | 8 | 12 | non |
| 4 | 16 | 13 | oui |
La première ligne vérifiée est , donc 8 bits de données nécessitent 4 bits de parité :
24=16≥8+4+1=13Le mot de code complet vaut
n=m+r=8+4=12 bitset le surcoût de parité est
O=nr=124≈33,3%Le surcoût diminue quand les blocs grandissent
Le nombre de parité croît à peu près comme , si bien que les blocs plus grands répartissent les bits de contrôle sur bien plus de données. Le tableau liste des tailles de bloc courantes.
| Bits de données | Bits de parité | Mot | Surcoût |
|---|---|---|---|
| 1 | 2 | 3 | 66,7% |
| 4 | 3 | 7 | 42,9% |
| 8 | 4 | 12 | 33,3% |
| 11 | 4 | 15 | 26,7% |
| 16 | 5 | 21 | 23,8% |
| 26 | 5 | 31 | 16,1% |
| 32 | 6 | 38 | 15,8% |
| 57 | 6 | 63 | 9,5% |
| 64 | 7 | 71 | 9,9% |
| 247 | 8 | 255 | 3,1% |
Le classique code de Hamming (7, 4) — 4 bits de données dans un mot de 7 bits — occupe la troisième ligne à partir du haut, et le code (15, 11) la quatrième.
Placement des bits de parité
Dans la disposition standard, les bits de parité occupent les positions puissances de deux 1, 2, 4, 8, 16, … et les bits de données remplissent le reste. Un bit de parité à la position est responsable exactement des positions dont l'indice a le bit activé, de sorte que l'ensemble des contrôles en échec se lit directement comme l'adresse binaire du bit inversé. Le nombre de positions puissances de deux jusqu'à est égal au même que calcule cette page, ce qui explique pourquoi la disposition et la condition du nombre minimal de bits concordent toujours.
SEC contre SECDED
La condition ci-dessus concerne un code correcteur d'une erreur, qui corrige toute erreur d'un bit mais ne peut distinguer une véritable erreur de deux bits d'une erreur d'un bit. Ajouter un unique bit de parité global sur tout le mot de code donne un code correcteur d'une erreur et détecteur de deux erreurs (SECDED) : il corrige toujours toute erreur d'un bit et détecte en plus — sans la corriger — toute erreur de deux bits. Pour le SECDED, ajoutez un bit au nombre de parité et à la longueur totale. La mémoire commercialisée sous le nom « ECC » utilise généralement le SECDED, par exemple 64 bits de données protégés par 8 bits de contrôle.
Estimations connexes
Pour comparer deux chaînes de bits de même longueur et compter en combien de positions elles diffèrent — la grandeur qui fixe combien d'erreurs un code peut attraper —, voir le Calculateur de distance de Hamming. Pour un autre schéma de détection d'erreurs qui ajoute une somme de contrôle plutôt qu'une parité adressant les positions, le Calculateur de somme de contrôle CRC calcule des contrôles de redondance cyclique.
Questions fréquentes (FAQ)
Que sont les bits de parité dans un code de Hamming ?
Les bits de parité, aussi appelés bits de contrôle, sont des bits supplémentaires ajoutés à un bloc de données pour qu'un décodeur puisse détecter et corriger les erreurs. Dans un code de Hamming correcteur d'une erreur (SEC), chaque bit de parité couvre un sous-ensemble précis et chevauchant des positions de données. Lorsqu'un bit s'inverse, le motif des contrôles de parité en échec — le syndrome — épelle en binaire la position exacte du bit inversé, ce qui permet au décodeur de le rétablir.
Le nombre de bits de parité r pour m bits de données est le plus petit r vérifiant 2^r ≥ m + r + 1. Pour 8 bits de données, cela donne r = 4, soit un mot de code de 12 bits.
Quelle est la différence entre SEC et SECDED ?
Un code de Hamming correcteur d'une erreur (SEC) corrige toute erreur d'un bit dans un mot de code, mais ne peut pas distinguer de façon fiable une erreur de deux bits d'une erreur d'un bit. La correction d'une erreur avec détection de deux erreurs (SECDED) ajoute un bit de parité global au code SEC. Ce bit supplémentaire permet au décodeur de corriger toute erreur d'un bit et de détecter (sans la corriger) toute erreur de deux bits.
Ce calculateur donne les bits de parité de la forme SEC. Pour le SECDED, ajoutez un bit au nombre de parité et à la longueur totale du mot de code. La mémoire serveur commercialisée sous le nom « ECC » utilise souvent un code SECDED — par exemple 64 bits de données protégés par 8 bits de contrôle.
Pourquoi l'inégalité est-elle 2^r ≥ m + r + 1 et non 2^r ≥ m + r ?
Les r bits de parité produisent ensemble un syndrome de r bits, qui peut prendre 2^r valeurs distinctes. Chacune des n = m + r positions du mot de code a besoin de son propre syndrome non nul pour que le décodeur puisse nommer la position inversée.
Une valeur de plus — le syndrome nul — est réservée pour signifier « aucune erreur détectée ». Cette valeur réservée est à l'origine du + 1 : le syndrome doit donc couvrir m + r positions plus le cas sans erreur, soit 2^r ≥ (m + r) + 1.
Où placer les bits de parité dans le mot de code ?
Dans la disposition classique de Hamming, les bits de parité occupent les positions puissances de deux — 1, 2, 4, 8, 16, etc. — tandis que les bits de données remplissent les positions restantes. Placer chaque bit de parité à la position 2^k le rend responsable exactement des positions dont l'indice a le bit k activé, ce qui permet de lire les contrôles en échec comme l'adresse binaire du bit erroné.
Le nombre de positions puissances de deux jusqu'à n est égal au même r que renvoie ce calculateur, ce qui explique pourquoi le placement et la formule du nombre minimal de bits concordent toujours.