Lektion
Die Theorie — Hamming-Code: Ein Bit über seine Position korrigieren
Ein Hamming-Code ergänzt Daten um Prüfbits, damit sich ein einzelnes gekipptes Bit finden und zurückkippen lässt. Jedes Prüfbit sorgt dafür, dass eine bestimmte Menge von Positionen eine gerade Anzahl von Einsen enthält. Das ist eine Paritätsprüfung. Der Decoder wiederholt diese Prüfungen an den empfangenen Daten. Das Muster der fehlgeschlagenen Prüfungen heißt Syndrom. Als Binärzahl gelesen gibt es die Position des falschen Bits an; 0 bedeutet, dass kein Fehler vorliegt. Eine Prüfziffer kann nur erkennen, dass etwas nicht stimmt. Hier lässt sich auch die fehlerhafte Position bestimmen. Der erweiterte Code fügt ein Bit hinzu, das dem gesamten Wort gerade Parität gibt. Damit korrigiert er jeden einzelnen Bitfehler und erkennt zwei Bitfehler, ohne sie zu korrigieren: SECDED.
Was die einzelnen Symbole bedeuten
dᵢ- die vier Datenbits an den Positionen 3, 5, 6 und 7
p₁, p₂, p₄- die Prüfbits, jeweils an der Position, nach der sie benannt sind; p0 ist das Gesamtparitätsbit des erweiterten Codes
s- das Syndrom 4s4 + 2s2 + s1, wobei sk den Wert 1 hat, wenn Kreis k bei der Ankunft eine ungerade Anzahl von Einsen enthält
P- die Parität aller acht empfangenen Bits im erweiterten Code: 1 bedeutet eine ungerade Anzahl gekippter Bits
p- die Bitfehlerrate, also die Wahrscheinlichkeit, dass ein bestimmtes Bit unabhängig von allen anderen kippt
- Setzt voraus
- Jedes Bit kippt unabhängig und mit derselben Wahrscheinlichkeit p. In realen Kanälen und Speichern treten Fehler auch gebündelt auf, wenn mehrere benachbarte Bits zugleich kippen. Solche Mehrfachfehler beherrschen diese Codes besonders schlecht.
- Versagt, wenn
- Bei drei gekippten Bits. Der erweiterte Code deutet drei Bitfehler als einen, weil die Gesamtparität ungerade wird, und kippt ein zuvor richtiges Bit. Die vollständige Fehlertabelle zeigt, dass alle 896 dreifachen Bitfehler ohne Markierung falsche Daten liefern.
Aufgabe vollständig gelöst
-
Wie viele Prüfbits benötigt ein 64-Bit-Wort? 4 Schritte
Schütze 64 Datenbits auf dieselbe Weise. Drück Erweitert, ein Fehler: Für vier Datenbits werden vier Prüfbits verwendet, die Rate beträgt 50,0 %. Bestimme, wie viele Prüfbits ein 64-Bit-Wort für dieselbe Zusicherung benötigt: Jeder einzelne Bitfehler wird korrigiert, zwei werden markiert. Ermittle außerdem, was das längere Wort beim voreingestellten p = 0,001 kostet.
-
Bei r Prüfungen kann das Syndrom 2r verschiedene Werte annehmen. Einer muss „kein Fehler“ bedeuten, und jede der m + r Positionen benötigt einen eigenen Wert. Daher gilt 2r ≥ m + r + 1. Auf dieser Seite ist m = 4. Mit r = 3 ist die Bedingung exakt erfüllt; kein Wert bleibt übrig.
-
Für m = 64 liefern sechs Prüfungen 64 Werte, benötigt werden 71. Sieben Prüfungen liefern 128 Werte, genug für 72. Somit korrigieren 71 Bits jeden einzelnen Bitfehler.
-
Ein zusätzliches Gesamtparitätsbit ergibt 72 Bits. Davon sind 8 Prüfbits. Die Rate beträgt 88,9 % gegenüber 50,0 % auf dieser Seite.
-
Der Preis dafür: In einem längeren Wort treten zwei Bitfehler häufiger auf, und zwei kann SECDED nicht mehr korrigieren. Für ein einzelnes 8-Bit-Wort ergibt sich diese Wahrscheinlichkeit als Summe der beiden auf der Seite angegebenen Werte.
Antwort
Acht Prüfbits, ein 72-Bit-Wort, Rate 88,9 %. Bei p = 0,001 enthält es mit Wahrscheinlichkeit 2,44×10⁻³ mindestens zwei Bitfehler. Werden dieselben 64 Bits als sechzehn 8-Bit-Wörter gesendet, gehen sie verloren, sobald eines davon verloren geht; die Wahrscheinlichkeit beträgt 4,46×10⁻⁴. Beim langen Wort ist der Verlust der 64 Bits etwa 5,5-mal so wahrscheinlich. Dafür benötigt es nur ein Achtel so viele Prüfbits.
-
Lernpfad
Warum ein Algorithmus korrekt ist
Quellen (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).