Calcolatore di bit ECC del codice di Hamming
Dati di input
| Bit di dati | 8 |
|---|
Calcolatore di bit ECC del codice di Hamming
Trova il numero minimo di bit di parità di cui un codice di Hamming a correzione di un errore ha bisogno per proteggere un dato numero di bit di dati, insieme alla lunghezza totale della parola di codice e al sovraccarico di parità.
Dati di input
Bit di dati
Risultati
Inserisci un valore per visualizzare i risultati.
Risultati
Bit ECC del codice di Hamming
Un codice di Hamming protegge un blocco di dati aggiungendo alcuni bit di parità. Quando in seguito un bit si inverte, lo schema dei controlli di parità falliti indica la posizione esatta che è cambiata, così un decodificatore può ripristinarla. L'unica questione di progetto è quanti bit di parità serve a un blocco di una data dimensione.
La condizione del numero minimo di bit
Sia il numero di bit di dati e il numero di bit di parità. I bit di parità formano insieme una sindrome di bit, che può assumere valori distinti. Ognuna delle posizioni della parola di codice ha bisogno di una propria sindrome diversa da zero perché il decodificatore possa indicare il bit invertito, e un valore è riservato a «nessun errore». Da qui la condizione di correzione di un errore (SEC):
2r≥m+r+1Poiché compare in entrambi i membri, non esiste una soluzione in forma chiusa. Il numero di parità richiesto è semplicemente il minimo che soddisfa la disuguaglianza, trovato provando a turno.
Esempio svolto: 8 bit di dati
Prendiamo e proviamo ogni candidato:
| 2 | 4 | 11 | no |
| 3 | 8 | 12 | no |
| 4 | 16 | 13 | sì |
La prima riga che vale è , quindi 8 bit di dati richiedono 4 bit di parità:
24=16≥8+4+1=13La parola di codice completa è
n=m+r=8+4=12 bite il sovraccarico di parità è
O=nr=124≈33,3%Il sovraccarico cala al crescere dei blocchi
Il numero di parità cresce all'incirca come , così i blocchi più grandi distribuiscono i bit di controllo su molti più dati. La tabella elenca dimensioni di blocco comuni.
| Bit di dati | Bit di parità | Parola | Sovraccarico |
|---|---|---|---|
| 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% |
Il classico codice di Hamming (7, 4) — 4 bit di dati in una parola di 7 bit — si trova nella terza riga dall'alto, e il codice (15, 11) nella quarta.
Collocazione dei bit di parità
Nella disposizione standard i bit di parità occupano le posizioni potenza di due 1, 2, 4, 8, 16, … e i bit di dati riempiono le restanti. Un bit di parità nella posizione è responsabile esattamente delle posizioni il cui indice ha il bit impostato, così l'insieme dei controlli falliti si legge direttamente come l'indirizzo binario del bit invertito. Il numero di posizioni potenza di due fino a coincide con lo stesso che questa pagina calcola, motivo per cui la disposizione e la condizione del numero minimo di bit concordano sempre.
SEC contro SECDED
La condizione sopra vale per un codice a correzione di un errore, che corregge qualsiasi errore di un bit ma non può distinguere un vero errore di due bit da uno di un solo bit. Aggiungere un unico bit di parità complessivo sull'intera parola di codice produce un codice a correzione di un errore e rilevamento di due errori (SECDED): corregge ancora qualsiasi errore di un bit e rileva inoltre — senza correggerlo — qualsiasi errore di due bit. Per il SECDED, aggiungi un bit sia al conteggio di parità sia alla lunghezza totale. La memoria venduta come «ECC» usa di solito il SECDED, per esempio 64 bit di dati protetti da 8 bit di controllo.
Stime correlate
Per confrontare due stringhe di bit di uguale lunghezza e contare in quante posizioni differiscono — la grandezza che stabilisce quanti errori un codice può intercettare — vedi la Calcolatore della distanza di Hamming. Per un diverso schema di rilevamento degli errori che aggiunge una somma di controllo anziché una parità che indirizza le posizioni, la Calcolatore di checksum CRC calcola i controlli di ridondanza ciclica.
Domande frequenti (FAQ)
Che cosa sono i bit di parità in un codice di Hamming?
I bit di parità, detti anche bit di controllo, sono bit aggiuntivi inseriti in un blocco di dati affinché un decodificatore possa rilevare e correggere gli errori. In un codice di Hamming a correzione di un errore (SEC), ogni bit di parità copre un sottoinsieme specifico e sovrapposto delle posizioni di dati. Quando un bit si inverte, lo schema dei controlli di parità falliti — la sindrome — compone in binario la posizione esatta del bit invertito, così il decodificatore può ripristinarlo.
Il numero di bit di parità r per m bit di dati è il minimo r che soddisfa 2^r ≥ m + r + 1. Per 8 bit di dati si ottiene r = 4, producendo una parola di codice di 12 bit.
Qual è la differenza tra SEC e SECDED?
Un codice di Hamming a correzione di un errore (SEC) corregge qualsiasi errore di un bit in una parola di codice, ma non può distinguere in modo affidabile un errore di due bit da uno di un solo bit. La correzione di un errore con rilevamento di due errori (SECDED) aggiunge un ulteriore bit di parità complessivo al codice SEC. Questo bit in più consente al decodificatore di correggere qualsiasi errore di un bit e di rilevare (ma non correggere) qualsiasi errore di due bit.
Questo calcolatore riporta i bit di parità per la forma SEC. Per il SECDED, aggiungi un bit al conteggio di parità e alla lunghezza totale della parola di codice. La memoria server venduta come «ECC» usa spesso un codice SECDED, per esempio 64 bit di dati protetti da 8 bit di controllo.
Perché la disuguaglianza è 2^r ≥ m + r + 1 e non 2^r ≥ m + r?
I r bit di parità producono insieme una sindrome di r bit, che può assumere 2^r valori distinti. Ognuna delle n = m + r posizioni della parola di codice ha bisogno di una propria sindrome diversa da zero affinché il decodificatore possa indicare la posizione invertita.
Un ulteriore valore — la sindrome tutta zeri — è riservato a significare «nessun errore rilevato». Questo valore riservato è l'origine del + 1, quindi la sindrome deve coprire m + r posizioni più il caso senza errore: 2^r ≥ (m + r) + 1.
Dove vanno i bit di parità nella parola di codice?
Nella disposizione classica di Hamming, i bit di parità occupano le posizioni potenza di due — 1, 2, 4, 8, 16 e così via — mentre i bit di dati riempiono le posizioni restanti. Collocare ogni bit di parità nella posizione 2^k lo rende responsabile esattamente delle posizioni il cui indice ha il bit k impostato, ed è ciò che permette di leggere i controlli falliti come l'indirizzo binario del bit errato.
Il numero di posizioni potenza di due fino a n coincide con lo stesso r che questo calcolatore restituisce, motivo per cui la disposizione e la formula del numero minimo di bit concordano sempre.