Hamming-Code ECC-Bits-Rechner
Eingaben
| Datenbits | 8 |
|---|
Hamming-Code ECC-Bits-Rechner
Ermittelt die minimale Anzahl an Paritätsbits, die ein einfehlerkorrigierender Hamming-Code benötigt, um eine gegebene Anzahl an Datenbits zu schützen, samt der gesamten Codewortlänge und des Paritäts-Overheads.
Eingaben
Datenbits
Ergebnisse
Geben Sie einen Wert ein, um die Ergebnisse zu sehen.
Ergebnisse
ECC-Bits des Hamming-Codes
Ein Hamming-Code schützt einen Datenblock, indem er eine Handvoll Paritätsbits hinzufügt. Kippt später ein Bit, benennt das Muster der fehlgeschlagenen Paritätsprüfungen genau die geänderte Position, sodass ein Decoder sie zurücksetzen kann. Die einzige Entwurfsfrage ist, wie viele Paritätsbits ein Block einer bestimmten Größe braucht.
Die Mindestbit-Bedingung
Sei die Anzahl der Datenbits und die Anzahl der Paritätsbits. Die Paritätsbits bilden zusammen ein -Bit-Syndrom, das verschiedene Werte annehmen kann. Jede der Codewortpositionen braucht ihr eigenes von null verschiedenes Syndrom, damit der Decoder auf das gekippte Bit zeigen kann, und ein Wert ist für „kein Fehler“ reserviert. Das ergibt die Bedingung für einfehlerkorrigierende (SEC) Codes:
2r≥m+r+1Da auf beiden Seiten steht, gibt es keine geschlossene Lösung. Die nötige Paritätszahl ist einfach das kleinste , das die Ungleichung erfüllt, gefunden durch Ausprobieren von .
Rechenbeispiel: 8 Datenbits
Für prüfen wir jeden Kandidaten:
| 2 | 4 | 11 | nein |
| 3 | 8 | 12 | nein |
| 4 | 16 | 13 | ja |
Die erste zutreffende Zeile ist , also brauchen 8 Datenbits 4 Paritätsbits:
24=16≥8+4+1=13Das volle Codewort ist
n=m+r=8+4=12 Bitund der Paritäts-Overhead beträgt
O=nr=124≈33,3%Der Overhead sinkt mit wachsenden Blöcken
Die Paritätszahl wächst ungefähr wie , sodass größere Blöcke die Prüfbits auf weit mehr Daten verteilen. Die Tabelle listet gängige Blockgrößen.
| Datenbits | Paritätsbits | Codewort | Overhead |
|---|---|---|---|
| 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% |
Der klassische (7, 4)-Hamming-Code – 4 Datenbits in einem 7-Bit-Wort – steht in der dritten Zeile von oben, der (15, 11)-Code in der vierten.
Platzierung der Paritätsbits
In der Standardanordnung besetzen die Paritätsbits die Zweierpotenz-Positionen 1, 2, 4, 8, 16, … und die Datenbits füllen den Rest. Ein Paritätsbit an Position ist genau für die Positionen zuständig, deren Index das Bit gesetzt hat, sodass sich die Menge der fehlgeschlagenen Prüfungen unmittelbar als Binäradresse des gekippten Bits lesen lässt. Die Anzahl der Zweierpotenz-Positionen bis entspricht demselben , das diese Seite berechnet, weshalb Anordnung und Mindestbit-Bedingung stets übereinstimmen.
SEC versus SECDED
Die obige Bedingung gilt für einen einfehlerkorrigierenden Code, der jeden Einzelbitfehler korrigiert, aber einen echten Doppelbitfehler nicht von einem Einzelbitfehler unterscheiden kann. Fügt man ein einziges Gesamtparitätsbit über das ganze Codewort hinzu, entsteht ein einfehlerkorrigierender, doppelfehlererkennender (SECDED) Code: Er korrigiert weiterhin jeden Einzelbitfehler und erkennt zusätzlich – ohne ihn zu korrigieren – jeden Doppelbitfehler. Für SECDED addieren Sie ein Bit sowohl zur Paritätszahl als auch zur Gesamtlänge. Als „ECC“ vermarkteter Speicher nutzt typischerweise SECDED, etwa 64 Datenbits, geschützt durch 8 Prüfbits.
Verwandte Schätzungen
Um zwei gleich lange Bitfolgen zu vergleichen und zu zählen, an wie vielen Positionen sie sich unterscheiden – die Größe, die festlegt, wie viele Fehler ein Code fangen kann –, siehe den Hamming-Abstand-Rechner. Für ein anderes Fehlererkennungsverfahren, das eine Prüfsumme anhängt statt positionsadressierender Parität, berechnet der CRC-Prüfsummen-Rechner zyklische Redundanzprüfungen.
Häufig gestellte Fragen (FAQ)
Was sind Paritätsbits in einem Hamming-Code?
Paritätsbits, auch Prüfbits genannt, sind zusätzliche Bits, die einem Datenblock hinzugefügt werden, damit ein Decoder Fehler erkennen und korrigieren kann. In einem einfehlerkorrigierenden (SEC) Hamming-Code deckt jedes Paritätsbit eine bestimmte, sich überlappende Teilmenge der Datenpositionen ab. Kippt ein Bit, buchstabiert das Muster der fehlgeschlagenen Paritätsprüfungen – das Syndrom – die genaue Position des gekippten Bits im Binärformat, sodass der Decoder es zurücksetzen kann.
Die Anzahl der Paritätsbits r für m Datenbits ist das kleinste r, das 2^r ≥ m + r + 1 erfüllt. Für 8 Datenbits ergibt sich r = 4, also ein 12-Bit-Codewort.
Was ist der Unterschied zwischen SEC und SECDED?
Ein einfehlerkorrigierender (SEC) Hamming-Code korrigiert jeden Einzelbitfehler in einem Codewort, kann aber einen Doppelbitfehler nicht zuverlässig von einem Einzelbitfehler unterscheiden. Einfehlerkorrigierend, doppelfehlererkennend (SECDED) fügt dem SEC-Code ein weiteres Gesamtparitätsbit hinzu. Dieses zusätzliche Bit erlaubt es dem Decoder, jeden Einzelbitfehler zu korrigieren und zudem jeden Doppelbitfehler zu erkennen (aber nicht zu korrigieren).
Dieser Rechner gibt die Paritätsbits der SEC-Form aus. Für SECDED addieren Sie ein Bit zur Paritätszahl und zur gesamten Codewortlänge. Als „ECC“ bezeichneter Serverspeicher nutzt häufig einen SECDED-Code – zum Beispiel 64 Datenbits, geschützt durch 8 Prüfbits.
Warum lautet die Ungleichung 2^r ≥ m + r + 1 und nicht 2^r ≥ m + r?
Die r Paritätsbits erzeugen zusammen ein r-Bit-Syndrom, das 2^r verschiedene Werte annehmen kann. Jede der n = m + r Codewortpositionen benötigt ihr eigenes von null verschiedenes Syndrom, damit der Decoder die gekippte Position benennen kann.
Ein weiterer Wert – das Nullsyndrom – ist reserviert für „kein Fehler erkannt“. Dieser reservierte Wert ist die Quelle des + 1, sodass das Syndrom m + r Positionen plus den Fehlerfrei-Fall abdecken muss: 2^r ≥ (m + r) + 1.
Wo befinden sich die Paritätsbits im Codewort?
In der klassischen Hamming-Anordnung sitzen die Paritätsbits an den Zweierpotenz-Positionen – 1, 2, 4, 8, 16 und so weiter –, während die Datenbits die übrigen Positionen füllen. Ein Paritätsbit an Position 2^k ist genau für die Positionen zuständig, deren Index das Bit k gesetzt hat; genau das lässt die fehlgeschlagenen Prüfungen als Binäradresse des fehlerhaften Bits lesen.
Die Anzahl der Zweierpotenz-Positionen bis n entspricht demselben r, das dieser Rechner zurückgibt. Deshalb stimmen Anordnung und Formel für die Mindestbitzahl stets überein.