Rilevamento e correzione degli errori

Dic 28, 2021
admin

Le applicazioni che richiedono una bassa latenza (come le conversazioni telefoniche) non possono usare la richiesta di ripetizione automatica (ARQ); devono usare la correzione degli errori in avanti (FEC). Nel momento in cui un sistema ARQ scopre un errore e lo ritrasmette, i dati ritrasmessi arriveranno troppo tardi per essere utilizzabili.

Le applicazioni in cui il trasmettitore dimentica immediatamente l’informazione appena viene inviata (come la maggior parte delle telecamere) non possono usare l’ARQ; devono usare la FEC perché quando si verifica un errore, i dati originali non sono più disponibili.

Le applicazioni che usano l’ARQ devono avere un canale di ritorno; le applicazioni che non hanno un canale di ritorno non possono usare l’ARQ.

Le applicazioni che richiedono tassi di errore estremamente bassi (come i trasferimenti di denaro digitale) devono usare l’ARQ a causa della possibilità di errori non correggibili con il FEC.

L’affidabilità e l’ingegneria di ispezione fanno anche uso della teoria dei codici di correzione degli errori.

InternetEdit

In un tipico stack TCP/IP, il controllo degli errori viene eseguito a più livelli:

  • Ogni frame Ethernet usa la rilevazione degli errori CRC-32. I frame con errori rilevati vengono scartati dall’hardware del ricevitore.
  • L’intestazione IPv4 contiene una somma di controllo che protegge il contenuto dell’intestazione. I pacchetti con checksum errati vengono scartati all’interno della rete o al ricevitore.
  • Il checksum è stato omesso dall’intestazione IPv6 per minimizzare i costi di elaborazione nel routing di rete e perché si presume che l’attuale tecnologia del livello di collegamento fornisca un sufficiente rilevamento degli errori (vedi anche RFC 3819).
  • UDP ha un checksum opzionale che copre il carico utile e le informazioni di indirizzo nelle intestazioni UDP e IP. I pacchetti con checksum errati vengono scartati dallo stack di rete. Il checksum è opzionale sotto IPv4, e richiesto sotto IPv6. Quando viene omesso, si presume che il livello di collegamento dati fornisca il livello desiderato di protezione dagli errori.
  • TCP fornisce una somma di controllo per proteggere il carico utile e le informazioni di indirizzamento nelle intestazioni TCP e IP. I pacchetti con checksum errati vengono scartati dallo stack di rete, e alla fine vengono ritrasmessi usando l’ARQ, sia esplicitamente (come attraverso il triple-ack) o implicitamente a causa di un timeout.

Telecomunicazioni nello spazio profondoModifica

Lo sviluppo dei codici di correzione degli errori è stato strettamente legato alla storia delle missioni nello spazio profondo a causa dell’estrema diluizione della potenza del segnale su distanze interplanetarie, e la limitata disponibilità di potenza a bordo delle sonde spaziali. Mentre le prime missioni inviavano i loro dati non codificati, a partire dal 1968, la correzione degli errori digitali è stata implementata sotto forma di codici convoluzionali (decodificati in modo sub-ottimale) e codici Reed-Muller. Il codice Reed-Muller si adattava bene al rumore a cui era soggetto il veicolo spaziale (approssimativamente corrispondente a una curva a campana), e fu implementato per il veicolo spaziale Mariner e usato nelle missioni tra il 1969 e il 1977.

Le missioni Voyager 1 e Voyager 2, che iniziarono nel 1977, erano progettate per fornire immagini a colori e informazioni scientifiche da Giove e Saturno. Questo ha comportato un aumento dei requisiti di codifica, e quindi le navicelle sono state supportate da codici convoluzionali (ottimamente decodificati da Viterbi) che potevano essere concatenati con un codice esterno Golay (24,12,8). Il Voyager 2 supportava inoltre un’implementazione di un codice Reed-Solomon. Il codice concatenato Reed-Solomon-Viterbi (RSV) permetteva una correzione degli errori molto potente, e permise il viaggio esteso della navicella verso Urano e Nettuno. Dopo gli aggiornamenti del sistema ECC nel 1989, entrambe le navicelle hanno usato la codifica V2 RSV.

Il Comitato consultivo per i sistemi di dati spaziali attualmente raccomanda l’uso di codici di correzione degli errori con prestazioni simili al codice RSV della Voyager 2 come minimo. I codici concatenati stanno cadendo sempre meno in favore delle missioni spaziali, e sono sostituiti da codici più potenti come i codici Turbo o i codici LDPC.

I diversi tipi di missioni orbitali e nello spazio profondo che vengono condotte suggeriscono che cercare di trovare un sistema di correzione degli errori unico per tutti sarà un problema continuo. Per le missioni vicino alla Terra, la natura del rumore nel canale di comunicazione è diversa da quella che sperimenta un veicolo spaziale in una missione interplanetaria. Inoltre, man mano che un veicolo spaziale aumenta la sua distanza dalla Terra, il problema della correzione del rumore diventa più difficile.

Trasmissione satellitareModifica

La domanda di larghezza di banda del transponder satellitare continua a crescere, alimentata dal desiderio di fornire la televisione (compresi i nuovi canali e la televisione ad alta definizione) e dati IP. La disponibilità dei transponder e i vincoli di larghezza di banda hanno limitato questa crescita. La capacità del transponder è determinata dallo schema di modulazione selezionato e dalla proporzione di capacità consumata dal FEC.

Archiviazione dei datiModifica

I codici di rilevamento e correzione degli errori sono spesso utilizzati per migliorare l’affidabilità dei supporti di archiviazione dei dati. Una traccia di parità in grado di rilevare errori di un singolo bit era presente sul primo nastro magnetico di archiviazione dati nel 1951. Il codice rettangolare ottimale usato nei nastri di registrazione codificati in gruppo non solo rileva ma corregge anche gli errori a singolo bit. Alcuni formati di file, in particolare i formati di archivio, includono un checksum (più spesso CRC32) per rilevare la corruzione e il troncamento e possono impiegare file di ridondanza o parità per recuperare porzioni di dati corrotti. I codici Reed-Solomon sono usati nei compact disc per correggere gli errori causati dai graffi.

I moderni dischi rigidi usano codici CRC per rilevare e codici Reed-Solomon per correggere gli errori minori nella lettura dei settori, e per recuperare i dati dai settori che sono “andati a male” e memorizzarli nei settori di riserva. I sistemi RAID usano una varietà di tecniche di correzione degli errori per correggere gli errori quando un disco rigido fallisce completamente. Filesystem come ZFS o Btrfs, così come alcune implementazioni RAID, supportano il data scrubbing e il resilvering, che permette ai blocchi danneggiati di essere rilevati e (si spera) recuperati prima che vengano utilizzati. I dati recuperati possono essere riscritti esattamente nella stessa posizione fisica, su blocchi di riserva altrove sullo stesso pezzo di hardware, o i dati possono essere riscritti su hardware sostitutivo.

Memoria a correzione di erroreModifica

Articolo principale: Memoria ECC

La memoria DRAM può fornire una protezione più forte contro gli errori soft affidandosi a codici di correzione degli errori. Tale memoria a correzione di errore, nota come memoria protetta da ECC o EDAC, è particolarmente auspicabile per le applicazioni mission-critical, come il calcolo scientifico, finanziario, medico, ecc. così come le applicazioni nello spazio profondo a causa dell’aumento delle radiazioni nello spazio.

I controllori di memoria che correggono gli errori usano tradizionalmente codici Hamming, anche se alcuni usano la ridondanza modulare tripla.

L’interleaving permette di distribuire l’effetto di un singolo raggio cosmico che potenzialmente sconvolge più bit fisicamente vicini su più parole associando i bit vicini a parole diverse. Finché un singolo evento di disturbo (SEU) non supera la soglia di errore (ad esempio, un singolo errore) in qualsiasi parola particolare tra gli accessi, può essere corretto (ad esempio, da un codice di correzione degli errori a singolo bit), e l’illusione di un sistema di memoria senza errori può essere mantenuta.

In aggiunta all’hardware che fornisce le caratteristiche necessarie per il funzionamento della memoria ECC, i sistemi operativi di solito contengono strutture di segnalazione correlate che vengono utilizzate per fornire notifiche quando gli errori soft vengono recuperati in modo trasparente. Un tasso crescente di errori soft potrebbe indicare che un modulo DIMM deve essere sostituito, e tali informazioni di feedback non sarebbero facilmente disponibili senza le relative capacità di segnalazione. Un esempio è il sottosistema EDAC del kernel Linux (precedentemente noto come Bluesmoke), che raccoglie i dati dai componenti abilitati al controllo degli errori all’interno di un sistema informatico; oltre a raccogliere e riportare gli eventi relativi alla memoria ECC, supporta anche altri errori di checksumming, compresi quelli rilevati sul bus PCI.

Alcuni sistemi supportano anche lo scrubbing della memoria.

Si tratta di una serie di sistemi che supportano lo scrubbing.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.