Rilevazioni degli errori

di Francesco Commenta

In fase di trasferimento dati tra dispositivi, quali dischi o memorie dinamiche, è possibile che questi non si concludano in maniera positiva. Infatti, gli errori di trasmissione sono causati da fenomeni fisici di natura differente: rumore termico di fondo, rumore impulsivo, diafonia fra due fili conduttori fisicamente adiacenti, o quant’altro.

Gli errori, poi, tendono a presentarsi a raffica (errori burst), anziché a bit isolati. In presenza di errori di questo tipo, si ha il vantaggio che, se la trasmissione avviene a blocchi, la maggior parte di essi risulterà esente da errori. Esiste anche uno svantaggio, vale a dire una maggior difficoltà nella rilevazione e correzione rispetto agli errori isolati. 

Per questa ragione esistono diversi metodi di verifica, come il controllo di parità, il controllo della somma e la ridondanza ciclica.

Chiaramente, esistono tecniche più precise che consentono non solo di rilevare un errore, ma anche, in linea di massima, di correggerli.

Il controllo di parità si basa sull’assunto che in ogni trasmissione, composto da un numero variabili di byte, ci sono un certo numero, in numero pari o dispari, di 1.

In una trama di bit composti da un numero pari a 8, si inserisce un bit di parità che è l’ottavo o, a volte il nono, bit. La funzione di questo bit è quello di rendere la trama, o il byte, che si sta trasmettendo pari o dispari. Gli errori possono essere rilevati registrando un bit di parità insieme ad ogni byte.

Una volta acquisita la trama, controllando i bit risulta un dato valore di parità dagli otto bit letti. Se esso non corrisponde a quello memorizzato, allora esiste un errore su almeno un bit.

In ogni caso, è da tenere presente che i cambiamenti contemporanei di due bit, rispettivamente da 1 a 0 e da 0 a 1 non sono rilevati: questo rappresenta un limite a questo tipo di controllo.

Il controllo di somma si basa su di una verifica diversa.

Infatti, per verificare che un intera trama è corretta viene generato e aggiunto alla fine della trama un byte di controllo. Qui, per trama si intende un blocco di una qualsiasi sequenza di bit. Una volta acquista l’informazione, occorre verificare la trama e confrontarla con quella appesa al blocco.

Chiaramente, se sono differenti allora il blocco, o la trama, contiene delle informazioni corrotte. L’operazione di controllo si basa o sulla somma della trama attraverso istruzioni di somma con riporto, oppure si realizza l’operazione di OR esclusivo tra tutti i byte.