Qu'est-ce que Code de Hamming ?
Le code correcteur d'erreurs le plus connu parmi ceux qui corrigent les erreurs de 1 bit. Avec r bits de contrôle, un mot de code fait 2^r − 1 bits, dont 2^r − 1 − r bits portent des données. Le code de Hamming (7, 4), avec r = 3, ajoute 3 bits de contrôle à 4 bits de données. Chaque bit de contrôle est la parité d'un groupe de bits qui se chevauchent, et le résultat des contrôles refaits à la réception (le syndrome) donne la position du bit erroné en binaire. Sa distance de Hamming minimale vaut 3, et le SECDED, qui ajoute 1 bit de parité globale, peut aussi détecter les erreurs de 2 bits. Il est utilisé par exemple pour l'ECC des mémoires de serveurs.
Nom japonais: ハミング符号
« Code de Hamming » apparaît dans 5 questions d'entraînement réparties sur 2 thèmes, dont Bases de la théorie de l'information et du codage, Circuits logiques.
Domaine: Bases de la théorie de l'information et du codage
Fonctionnement du code (7, 4)
Les positions des bits sont numérotées de 1 à 7, et les positions qui sont des puissances de 2, 1, 2 et 4, sont les bits de contrôle. Le contrôle 1 rend pair le nombre de 1 sur les positions dont le numéro écrit en binaire a un 1 au rang des unités (1, 3, 5, 7), le contrôle 2 sur celles qui ont un 1 au rang des deux (2, 3, 6, 7), et le contrôle 4 sur celles qui ont un 1 au rang des quatre (4, 5, 6, 7). Seuls échouent les contrôles correspondant aux chiffres binaires valant 1 dans le numéro de la position erronée : additionner les poids des contrôles en échec donne donc la position erronée.
Rendement et longueur du code
Avec r bits de contrôle, le mot de code fait 2^r − 1 bits, et plus le code est long, comme (7, 4), (15, 11) et (31, 26), plus le rendement est élevé : 4/7 ≈ 0,57, 11/15 ≈ 0,73 et 26/31 ≈ 0,84. En contrepartie, un mot de code ne peut corriger que 1 bit : plus le mot de code est long, plus il risque de subir une erreur de 2 bits ou plus.
Questions fréquentes
Que se passe-t-il avec un code de Hamming en cas d'erreur sur 2 bits ?
Dans un code de Hamming sans parité globale, une erreur sur 2 bits fait quand même pointer le syndrome vers une position non nulle : un bit correct est alors inversé et l'erreur passe à 3 bits. Pour l'éviter, les mémoires et dispositifs similaires utilisent le SECDED, qui ajoute une parité globale, et signalent une erreur sur 2 bits comme une erreur au lieu de la corriger.
Les codes de Hamming sont-ils encore utilisés aujourd'hui ?
Oui. Ils sont simples et rapides à calculer, et donc très utilisés là où la latence doit rester faible, comme l'ECC des mémoires et la protection des caches et des registres. Là où il faut corriger efficacement beaucoup d'erreurs, comme dans les communications, on utilise des codes plus puissants comme les codes LDPC.