Hamming-Codes sind die ersten praktisch eingesetzten fehlerkorrigierenden Blockcodes. Sie ergänzen die Nutzdaten um gezielt platzierte Paritätsbits, mit denen der Empfänger einen einzelnen Bitfehler nicht nur erkennt, sondern auch korrigiert – die Grundlage der Vorwärtsfehlerkorrektur im Arbeitsspeicher von Servern.
Die Idee: Paritätsbits an Zweierpotenz-Positionen
Der Klassiker ist der (7,4)-Hamming-Code von Richard Hamming (Bell Labs, 1950): Auf 4 Datenbits kommen 3 Paritätsbits, die an den Positionen 1, 2 und 4 (den Zweierpotenzen) des 7 Bit langen Codeworts liegen. Jedes Paritätsbit prüft dabei mehrere Datenbits gleichzeitig, sodass sich die Prüfbits gegenseitig überlappen. Empfängt der Decoder das Codewort, wiederholt er die Paritätsberechnungen. Das Ergebnis ist ein Syndrom, dessen Wert direkt die Position eines gekippten Bits angibt – dieses Bit wird einfach umgedreht.
Was der Code leistet
- 1 Bitfehler korrigieren: Die Mindestdistanz des Codes ist 3, damit lassen sich Einzelbitfehler sicher korrigieren.
- 2 Bitfehler erkennen: Zwei verfälschte Bits ergeben ein Syndrom ungleich null, sind aber nicht mehr eindeutig korrigierbar.
- Perfekt: Beim (7,4)-Code füllen die Korrekturkugeln um alle Codewörter den gesamten Raum aus – mehr leistet ein Code mit diesen Parametern nicht.
SEC-DED für den Arbeitsspeicher
In der Praxis reicht die Korrektur eines einzelnen Bits oft nicht: Ein Speichermodul soll auch melden, wenn zwei Bits gleichzeitig kippen. Dafür wird der Hamming-Code um ein zusätzliches Gesamtparitätsbit erweitert – SEC-DED (Single Error Correction, Double Error Detection). Bei ECC-RAM werden 64 Datenbits so auf 72 Bit codiert (Hamming (72,64)); die Speichercontroller von Servern und Workstations korrigieren damit jede einzelne Bitkipp-Sitzung automatisch und warnen bei Doppelfehlern, bevor stille Datenkorruption entsteht.
Wo Hamming-Codes stecken
- ECC-Arbeitsspeicher in Servern, Workstations und geschäftskritischen Systemen
- Fehlerkorrektur in eingebetteten Systemen, Flash-Controllern und Cache-Speichern
- Grundbaustein moderner Verfahren – die Hamming-Distanz bewertet jeden Code, und die Kanalcodierung baut auf solchen Blockcodes auf
Verwandte Grundlagen: Hamming-Distanz, Reed-Solomon-Code, Kanalcodierung, Vorwärtsfehlerkorrektur.