⚙️ Hamming-Codes
Visualisieren Sie, wie Hamming-Codes Einzelbitfehler erkennen und korrigieren. Die Grundlage moderner Datenspeicherung und -übertragung.
Über Hamming-Codes SECDED
Hamming-Codes sind eine Familie linearer, fehlerkorrigierender Codes, die 1950 von Richard Hamming bei Bell Labs erfunden wurden. Ein Hamming(7,4)-Code codiert 4 Datenbits in 7 Codewortbits, indem 3 Paritätsbits an Zweierpotenz-Positionen (1, 2, 4) hinzugefügt werden; jedes Paritätsbit deckt eine bestimmte Teilmenge von Datenbitpositionen ab, die durch die Spalten der Paritätsprüfmatrix H definiert wird. Diese Anordnung verleiht dem Code einen minimalen Hamming-Abstand von 3, wodurch garantiert wird, dass er jeden Einzelbitfehler korrigieren und jeden Zweibitfehler erkennen kann. Fügt man ein zusätzliches Gesamtparitätsbit hinzu, entsteht der SECDED-Code (Single-Error Correcting, Double-Error Detecting) Hamming(8,4), der in ECC-RAM verwendet wird, wo ein gekipptes Speicherbit bei jedem Lesevorgang automatisch korrigiert wird.
Der Simulator erlaubt es Ihnen, 4-Bit-Datenwörter einzugeben, dabei zuzusehen, wie die Paritätsprüfmatrix sie in 7- oder 8-Bit-Codewörter codiert, einzelne oder doppelte Bitkipper einzufügen und die Syndrom-Decodierung zu beobachten: Der Syndromvektor s = H·r (mod 2) zeigt direkt auf die Position des fehlerhaften Bits und ermöglicht so eine automatische Korrektur in einem Schritt.
Häufig gestellte Fragen
Wie lokalisiert die Syndrom-Decodierung einen Einzelbitfehler?
Nach Empfang eines Codeworts r berechnet der Decoder das Syndrom s = H·r (mod 2), wobei H die Paritätsprüfmatrix ist. Ist s = 0, wird kein Fehler erkannt. Ist s ≠ 0, entspricht es einer der Spalten von H; die Position dieser Spalte identifiziert das zu invertierende Bit. Bei Hamming(7,4) ist das Syndrom eine 3-Bit-Binärzahl, die direkt dem 1-basierten Index des fehlerhaften Bits entspricht, was die Korrektur in Hardware trivial schnell macht.
Was ist der Hamming-Abstand und warum ist er wichtig?
Der Hamming-Abstand zwischen zwei Codewörtern ist die Anzahl der Bitpositionen, in denen sie sich unterscheiden. Ein Code mit minimalem Hamming-Abstand d_min kann bis zu d_min − 1 Fehler erkennen und bis zu ⌊(d_min − 1)/2⌋ Fehler korrigieren. Hamming(7,4) hat d_min = 3, korrigiert also 1 Fehler und erkennt 2. Um t Fehler zu korrigieren, benötigt man d_min ≥ 2t + 1; die minimale Codewortlänge dafür wächst gemäß der Hamming-Schranke (Kugelpackungsschranke) als O(t log n).
Was ist ECC-RAM und wie nutzt es Hamming-Codes?
Error-Correcting-Code-RAM verwendet ein Hamming-SECDED-Schema für jedes 64-Bit-Speicherwort und fügt 8 Prüfbits hinzu (72 gespeicherte Bits pro Wort). Bei jedem Lesevorgang eines Wortes wird das Syndrom in Hardware berechnet; ein Einzelbitfehler wird transparent in einem Speicherzyklus (~60 ns bei DDR5) ohne Softwarebeteiligung korrigiert. ECC-RAM ist Standard in Servern und Workstations, bei denen stille Datenkorruption finanzielle, medizinische oder wissenschaftliche Berechnungen gefährden könnte.
Warum werden Paritätsbits an Zweierpotenz-Positionen platziert?
In Hammings Konstruktion deckt das Paritätsbit an Position 2ᵏ alle Bitpositionen ab, deren Binärdarstellung im k-ten Bit eine 1 hat. Zum Beispiel deckt Paritätsbit 1 (Position 001₂) die Positionen 1, 3, 5, 7 ab (alle Positionen mit gesetztem Bit 0). Dies stellt sicher, dass jede Datenposition von einer eindeutigen, nicht leeren Teilmenge von Paritätsbits abgedeckt wird, sodass das Syndrom jede Einzelfehlerposition eindeutig identifiziert. Die Platzierung an Zweierpotenzen macht diese Teilmengenstruktur elegant und effizient.
Was ist der Unterschied zwischen Hamming(7,4) und Hamming(8,4) SECDED?
Hamming(7,4) verwendet 3 Paritätsbits über 4 Datenbits und korrigiert 1 Fehler (d_min = 3). Fügt man ein viertes Gesamtparitätsbit hinzu (XOR aller 7 Bits), entsteht Hamming(8,4), das Doppelfehler erkennt, indem es feststellt, wann das Syndrom ungleich null ist, die Gesamtparität aber stimmt — ein Signal für ein 2-Bit-Fehlermuster. Diese SECDED-Eigenschaft ist entscheidend für Speichersysteme, bei denen zwei Fehler selten, aber möglich sind, etwa bei kosmischer Strahlung oder Mehrzellen-Umkippungen.
Was sind Reed-Solomon-Codes und wie schneiden sie im Vergleich ab?
Reed-Solomon-Codes arbeiten über größeren Alphabeten (Symbole aus k Bits statt einzelnen Bits) und können mehrere Symbolfehler korrigieren. Ein Reed-Solomon(255,223)-Code (verwendet in CDs, DVDs, QR-Codes und der Kommunikation im tiefen Weltraum) korrigiert bis zu 16 Symbolfehler pro 255-Symbol-Block. Während Hamming-Codes optimal für die Korrektur von Einzelbitfehlern mit minimaler Redundanz sind, ist Reed-Solomon für Bündelfehler weitaus leistungsfähiger und wird bei Speicherung und Satellitenkommunikation bevorzugt.
Was ist die Hamming-Schranke (Kugelpackungsschranke)?
Die Hamming-Schranke besagt, dass für einen binären Code der Länge n, der t Fehler korrigiert, die Anzahl der Codewörter M die Bedingung M · Σᵢ₌₀ᵗ C(n,i) ≤ 2ⁿ erfüllt. Codes, die Gleichheit erreichen, heißen perfekte Codes; Hamming-Codes sind perfekt (ihre Fehlerkugeln mit Radius 1 zerlegen den gesamten n-Bit-Raum ohne Lücken). Die einzigen anderen binären perfekten Codes sind der triviale Wiederholungscode und der Golay(23,12)-Code.
Wie werden Hamming-Codes über RAM hinaus eingesetzt?
Hamming-Codes finden sich in der Satellitentelemetrie (Schutz von Befehls-Uplinks), in NAND-Flash-ECC (obwohl BCH-Codes für Mehrbitkorrektur üblicher sind), in frühen Datenübertragungsmodems, Magnetbändern und Netzwerkprotokoll-Headern. Hamming(7,4) ist zudem ein klassisches Lehrbeispiel in Kursen zur Informationstheorie und algebraischen Codierungstheorie, das die Kraft der linearen Algebra über GF(2) veranschaulicht.
Was passiert bei zwei gleichzeitigen Bitfehlern in Hamming(7,4)?
Mit nur Einzelfehlerkorrektur (kein Gesamtparitätsbit) erzeugt ein 2-Bit-Fehler ein von null verschiedenes Syndrom, das einer Spalte von H entspricht — aber der falschen. Der Decoder „korrigiert" das falsche Bit und führt so stillschweigend einen dritten Fehler ein, der die Daten verfälscht. SECDED (8,4) verhindert dies: Das Gesamtparitätsbit unterscheidet 1-Bit-Fehler (ungerade Paritätsabweichung + von null verschiedenes Syndrom) von 2-Bit-Fehlern (gerade Paritätsabweichung + von null verschiedenes Syndrom) und markiert Letztere, statt sie falsch zu korrigieren.
Häufig gestellte Fragen
Was ist ein Hamming-Code?
Wie funktioniert die Syndrom-Decodierung?
Was ist SECDED und warum ist es wichtig?
Wo werden Hamming-Codes in der Praxis eingesetzt?
Warum werden Paritätsbits an Zweierpotenz-Positionen platziert?
Was ist der Hamming-Abstand?
Wie hoch ist die Coderate von Hamming(7,4)?
Können Hamming-Codes mehr als einen Bitfehler korrigieren?
Wie wird die Paritätsprüfmatrix H konstruiert?
Was ist der Unterschied zwischen Fehlererkennung und Fehlerkorrektur?
Kippen Sie ein Bit in einem Hamming-codierten Wort und beobachten Sie, wie die Paritätsprüfungen ein Syndrom erzeugen, das direkt auf die Position des Fehlers zeigt.
2D · HTML5 Canvas 2D · Ziel 60 FPS · läuft vollständig clientseitig, keine Installation nötig