Controllo e correzione degli errori - diegm
Transcript
Controllo e correzione degli errori - diegm
Fondamenti di Informatica - Controllo e correzione degli errori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Controllo e correzione degli errori © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1 Fondamenti di Informatica - Controllo e correzione degli errori Nota di Copyright Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine. Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione. Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell’autore. L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione). In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide. In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali. © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2 Fondamenti di Informatica - Controllo e correzione degli errori Ridondanza • La memorizzazione/trasmissione dei dati è soggetta ad errori • Si possono aggiungere ai dati informazioni ridondanti per: – controllarne la correttezza – correggere (quando possibile) gli errori © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3 Fondamenti di Informatica - Controllo e correzione degli errori Controllo e correzione degli errori in fase di codifica (o memorizzazione o trasmissione) dati f (dati) CRC dati CRC Nell’esempio: Cyclic Redundancy Check = f (dati) © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4 Fondamenti di Informatica - Controllo e correzione degli errori Controllo e correzione degli errori in fase di decodifica (o lettura o ricezione) dati CRC f (dati) CRC =? NO se possibile si correggono i bit errati, altrimenti si segnale l’errore SÌ i dati ricevuti sono corretti © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 5 Fondamenti di Informatica - Controllo e correzione degli errori Alcune tecniche • Parità – solo controllo • Somma di blocco – controllo e correzione • Codici polinomiali – solo controllo • Codici di Hamming – controllo e correzione • Codici a convoluzione – controllo e correzione © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 6 Fondamenti di Informatica - Controllo e correzione degli errori Parità • Ad ogni dato (es. 1 codice ASCII su 7 bit) viene aggiunto un bit tale che il numero totale di bit a 1 sia sempre pari (“parità pari”) o sempre dispari (“parità dispari”) © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 7 Fondamenti di Informatica - Controllo e correzione degli errori Esempio: parità pari bit di parità 0111011 1 0000000 0 0000001 1 1001101 0 0111011 1 P = A1 A2 ... An © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 8 Fondamenti di Informatica - Controllo e correzione degli errori Distanza di Hamming • Numero minimo di bit in cui differiscono due parole del codice (dato + informazione ridondante) valide • Nella tecnica di parità: – distanza di Hamming = 2 (almeno due bit differenti) – quindi lo schema individua errori singoli e non doppi © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 9 Fondamenti di Informatica - Controllo e correzione degli errori Distanza di Hamming • Distanza di Hamming dell’intero codice: HD = min { HD di tutte le possibili coppie di parole del codice } • Per rilevare k errori HD del codice deve essere k+1 • Per correggere k errori HD del codice deve essere 2k+1 © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 10 Fondamenti di Informatica - Controllo e correzione degli errori Somma di blocco • Opera su blocchi di dati con parità (detta trasversale o “di riga”, relativa a ciascun dato) • Si aggiunge al termine del blocco una serie di di bit di parità relativi ai bit di una data posizione in tutti i dati del blocco (parità longitudinale o “di colonna”) © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 11 Fondamenti di Informatica - Controllo e correzione degli errori Esempio: parità pari bit di parità di riga 0000000 0 0000001 1 1001101 0 0111011 1 0001100 0 1010101 0 1111101 0 1111111 1 0101100 1 bit di parità di colonna © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 12 Fondamenti di Informatica - Controllo e correzione degli errori Esempio: parità pari (con errore di lettura e correzione) 0000000 0 0000001 1 1001101 0 0111011 1 0101100 0 1010101 0 1111101 0 1111111 1 0101100 1 errore 0000000 0 0000001 1 1001101 0 0111011 1 0101100 0 1010101 0 1111101 0 1111111 1 0101100 1 errore © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 13 Fondamenti di Informatica - Controllo e correzione degli errori Codici polinomiali • Codici adatti nel caso di errori “a burst” (danneggiano più bit consecutivi) – Si definisce uno schema di n+1 bit detto generatore (G), comune a trasmettitore e ricevitore – Si aggiungono al messaggio M (lungo k bit) n bit tali che i k+n bit trasmessi siano divisibili per G (in aritmetica modulo 2) Gli r bit aggiunti sono detti FCP (Frame Check Sequence) o CRC (Cyclic Redundancy Check) © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 14 Fondamenti di Informatica - Controllo e correzione degli errori Codici polinomiali • Il calcolo del CRC si basa su alcune proprietà dell’aritmetica modulo 2: – non ci sono riporti nelle addizioni – non ci sono prestiti nelle sottrazioni – addizioni e sottrazioni sono identiche e coincidono con l’operazione di EXOR • Di conseguenza, A + A = 0 © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 15 Fondamenti di Informatica - Controllo e correzione degli errori Divisione modulo 2 • La divisione in aritmetica modulo due procede come in aritmetica decimale, ma con EXOR al posto delle sottrazioni • Il divisore “sta dentro” il dividendo se il dividendo ha tanti bit quanti il divisore © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 16 Fondamenti di Informatica - Controllo e correzione degli errori Divisione modulo 2 1011 : 10 = 101 10 -0011 10 -01 resto il parziale corrente (001) ha meno bit significativi del divisore: aggiungo uno zero al quoziente e “abbasso” un’altra cifra NOTA: in generale, il risultato di una divisione modulo due non coincide con il risultato della divisione normale © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 17 Fondamenti di Informatica - Controllo e correzione degli errori Proprietà della divisione modulo 2 M ( x) ⋅ 2 R( x) = Q( x) + G ( x) G ( x) n nell’aritmetica modulo 2 la somma di due numeri uguali dà zero, quindi: M ( x) ⋅ 2 R( x) R( x) R( x) + = Q( x ) + + G ( x) G ( x) G ( x) G ( x) n M ( x) ⋅ 2 + R( x) = Q( x) G ( x) n © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 18 Fondamenti di Informatica - Controllo e correzione degli errori Codici polinomiali • Sia: – M(x) il messaggio da trasmettere (su k bit) – G(x) il numero “generatore” che sarà usato come divisore (su n+1 bit) – R(x) il resto (su n<k bit) di M(x)•2n/G(x) • Si genera la parola di codice appendendo R(x) al messaggio • Se il messaggio comprensivo di R(x) è corretto, la divisione per il numero generatore deve dare resto zero © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 19 Fondamenti di Informatica - Controllo e correzione degli errori Esempio G(x): 101 (quindi CRC su 2 bit, uno in meno dei bit di G(x)) M(x): 1110 bit a zero equivalenti alla moltiplicazione per 2n verranno sostituiti da R(x) (il CRC) 111000 : 101 = 1101 il quoziente viene 101 ignorato ai fini del calcolo --del CRC 0100 101 --messaggio con CRC: 111001 00100 101 --M(x) CRC 001 CRC © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 20 Fondamenti di Informatica - Controllo e correzione degli errori Esempio ricezione corretta: 111001 esempio di ricezione errata: 100001 111001 : 101 = 1101 101 --0100 101 --00101 101 --000 resto zero: OK 100001 : 101 = 110 101 --00100 101 --00011 resto non zero: errore! © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 21 Fondamenti di Informatica - Controllo e correzione degli errori Codici polinomiali • Polinomi generatori standard: CRC-8: CRC-16: CRC-CCITT: CRC-32: X8+X2+X1+1 (1 0000 0111) X16+X15+X2+1 (1 1000 0000 0000 0101) X16+X12+X5+1 X32+X26+X23+X16+X12+X11+ +X10+X8+X7+X5+X4+X2+X+1 © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 22 Fondamenti di Informatica - Controllo e correzione degli errori Codici di Hamming • Un semplice codice di Hamming (a 1 bit) aggiunge al messaggio la somma modulo due delle posizioni dei bit a 1 del messaggio stesso • Tale somma occupa nel messaggio le posizioni corrispondenti al peso di ogni singolo bit della somma stessa • Consente la correzione di errori singoli © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 23 Fondamenti di Informatica - Controllo e correzione degli errori Esempio 11 = 1011 + 7 = 0111 + 6 = 0110 + 3 = 0011 ----------------- 11 10 9 8 7 6 5 4 3 2 1 1 0 0 x 1 1 0 x 1 x x 11 10 9 8 7 6 5 4 3 2 1 1 0 0 1 1 1 0 0 1 0 1 1001 © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 24 Fondamenti di Informatica - Controllo e correzione degli errori Esempio • In ricezione si sommano (modulo 2) le posizioni in cui ci sono dei bit a 1 – se la somma è zero il messaggio è (probabilmente) corretto – se la somma è diversa da zero il valore ottenuto è la posizione del bit errato (è infatti il valore - posizione di un bit a 1 che manca o che è di troppo nella somma) © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 25 Fondamenti di Informatica - Controllo e correzione degli errori Esempio 11 10 9 8 7 6 5 4 3 2 1 1 0 0 1 1 1 0 0 1 0 1 11 = 1011 + 8 = 1000 + 7 = 0111 + 6 = 0110 + 3 = 0011 + 1 = 0001 ----------------0000 messaggio corretto © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 26 Fondamenti di Informatica - Controllo e correzione degli errori Esempio 11 10 9 8 7 6 5 4 3 2 1 1 0 0 1 0 1 0 0 1 0 1 11 = 1011 + 8 = 1000 + 6 = 0110 + 3 = 0011 + 1 = 0001 ----------------0111 errore al bit 7 © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 27 Fondamenti di Informatica - Controllo e correzione degli errori Codici a convoluzione • Molto utilizzati nella trasmissione dei dati • Non sono limitati al singolo blocco di dato: viene elaborato l’intero flusso • Si basano su un sistema con memoria in cui il risultato della decodifica di un dato è funzione dei dati ricevuti in precedenza © 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 28