La relazione del progetto - Home Page

Transcript

La relazione del progetto - Home Page
Facoltà di Scienze Matematiche, Fisiche e Naturali
D IPARTIMENTO DI T ECNOLOGIE DELL’I NFORMAZIONE
Laurea Magistrale in Scienze e Tecnologie dell’Informazione
Corso di S ISTEMI ELETTRONICI SICURI
Rilevamento degli errori nei
sistemi di elaborazione digitali
v. 1.8e - 21 settembre 2007
Studenti:
Luca Uberti Foppa xxxxxx
Massimo Manara xxxxxx
Docente del corso:
Vincenzo Piuri
Alberto Ferrante (tutor)
Anno Accademico 2006/2007
.
Quest’opera è stata rilasciata sotto la licenza Creative Commons Attribuzione 2.5
Italia.
Per leggere una copia della licenza visita il sito web http://creativecommons.
org/licenses/by/2.5/it/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Indice
3
Indice
Sommario
7
1
Introduzione
8
2
Concetti generali
9
3
Ridondanza di informazione
3.1 Codici di parità (parity checking) . . . . . . . . . . . . . . .
3.2 Somma di controllo (checksum) . . . . . . . . . . . . . . . .
3.3 Controllo di ridondanza ciclica (cyclic redundancy checks)
3.4 Codici Hamming (Hamming codes) . . . . . . . . . . . . .
3.5 Codici m su n (M-of-N codes) . . . . . . . . . . . . . . . . .
3.6 Codici aritmetici (arithmetic codes) . . . . . . . . . . . . . .
.
.
.
.
.
.
12
12
17
22
24
27
30
4
Ridondanza di componenti
4.1 Duplicazione e confronto (duplication and comparison) . . . . . . .
34
34
5
Ridondanza temporale
5.1 Duale (alternating logic) . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Computazione con traslazione di bit (recomputing with shifted operands) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Controllo temporale (watchdog timers) . . . . . . . . . . . . . . . .
39
40
A Concetti di probabilità e statistica
A.1 MTTF . . . . . . . . . . . . . .
A.2 MTTR . . . . . . . . . . . . . .
A.3 Codice . . . . . . . . . . . . .
A.4 Probabilità d’errore . . . . . .
A.5 Codifica . . . . . . . . . . . .
A.6 Tasso di informazione . . . .
A.7 Decodifica . . . . . . . . . . .
A.8 Distanza di Hamming . . . .
A.9 Efficienza del codice . . . . .
A.10 Esponenziale negativa . . . .
A.11 Binomiale . . . . . . . . . . .
A.12 Matrice trasposta . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
44
47
47
47
47
48
48
48
48
48
49
49
50
51
.
Elenco delle figure
5
Elenco delle figure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MTTF - MTTD - MTTR. . . . . . . . . . . . . . . . . . . . .
Sorgente, causa d’errore, destinazione. . . . . . . . . . . .
Parità. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parità bit per byte. . . . . . . . . . . . . . . . . . . . . . . .
Parità intrecciata. . . . . . . . . . . . . . . . . . . . . . . .
Codifica di parità pari. . . . . . . . . . . . . . . . . . . . .
Parità lato ricevente. . . . . . . . . . . . . . . . . . . . . .
Parità lato ricevente errore rilevato. . . . . . . . . . . . . .
AN code. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AN code esempio. . . . . . . . . . . . . . . . . . . . . . . .
Residue code. . . . . . . . . . . . . . . . . . . . . . . . . .
Residue code esempio. . . . . . . . . . . . . . . . . . . . .
Duplicazione e confronto. . . . . . . . . . . . . . . . . . .
Schema scambia e confronta A. . . . . . . . . . . . . . . .
Schema scambia e confronta B. . . . . . . . . . . . . . . .
Ridondanza temporale - Rilevamento errori permanenti.
Alternating logic . . . . . . . . . . . . . . . . . . . . . . .
Implementazione logica della funzione duale . . . . . . .
Rilevazione di errori nell’ALU con RESO . . . . . . . . .
Distribuzione esponenziale negativa . . . . . . . . . . . .
Binomiale . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
12
13
13
13
14
15
15
30
31
31
32
35
35
36
39
40
40
42
49
50
Elenco delle tabelle
6
Elenco delle tabelle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Tecniche di codifica parità - confronto. . . . . .
Checksum precisione singola. . . . . . . . . . .
Checksum precisione singola - trasmissione. .
Checksum precisione doppia. . . . . . . . . . .
Checksum precisione doppia - trasmissione. .
Checksum honeywell. . . . . . . . . . . . . . .
Checksum honeywell - trasmissione. . . . . . .
Tecniche di codifica checksum - confronto. . . .
Tecniche di codifica CRC - confronto. . . . . . .
Tecniche di codifica Hamming - confronto. . .
2 su 4. . . . . . . . . . . . . . . . . . . . . . . . .
3 su 6. . . . . . . . . . . . . . . . . . . . . . . . .
Tecniche di codifica M su N - confronto. . . . .
Tecniche di codifica aritmetica - confronto. . .
Somma senza traslazioni e salvataggio traslato.
Somma con traslazioni per il confronto. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
18
18
18
19
19
19
21
23
26
27
28
29
32
43
43
Sommario
7
Sommario
In molte discipline il rilevamento degli errori e la correzione hanno
una fondamentale importanza, sia per mantenere l’integrità dei dati,
sia nei canali di trasmissione e nei supporti per l’archiviazione.
Questo lavoro vuole presentare le principali tecniche di rilevamento
degli errori, le quali possono essere applicate sia ai canali di trasmissione sia ai supporti d’archiviazione. Ad ogni tecnica è associata una
scheda di valutazione in termini di complessità circuitale, latenza ed
efficacia di rilevamento.
1
8
1
Introduzione
Introduzione
La diffusione dei mezzi di comunicazione e strumenti digitali ha ormai pervaso
il nostro lavoro e le nostre abitudini. Risulta quindi di importanza fondamentale ricevere e trasmettere dati in modo corretto al fine di evitare errori. Già negli
anni successivi alla seconda guerra mondiale le tematiche dell’affidabilità dei sistemi (reliability theory) cominciarono a svilupparsi, l’EDVAC (Electronic Discrete
Variable Automatic Computer) nel 1949 con la duplicazione dell’unità aritmetica
e logica (ALU), l’UNIVAC (UNIVersal Automatic Computer II) [Ros69] nel 1955
con il controllo di parità nelle trasmissioni di dati. Arrivando nell’ultimo decennio con lo sviluppo di applicazioni e sistemi critici: safety-critical, mission-critical,
business-critical .
In questo scenario, i soggetti coinvolti sono una sorgente e un destinatario. Chi
funge da sorgente utilizza qualche tecnica di ridondanza al fine di limitare gli errori sul canale trasmissivo e far giungere al destinatario un messaggio, codificato
in maniera tale da verificare la presenza di un errore.
Con il termine rilevamento degli errori, si fa riferimento alla capacità di rilevare
guasti causati da interferenze esterne o altre problematiche durante la trasmissione, dalla sorgente alla destinazione, sulla base di qualche forma di ridondanza.
Con il termine correzione degli errori si intende una funzione aggiuntiva atta a
identificare e correggere gli errori. Il rilevamento precede sempre la correzione.
Questo lavoro si propone di presentare le principali tecniche di rilevamento degli
errori nei sistemi digitali e di fornire una tassonomia secondo alcuni aspetti ad
esempio: la complessità circuitale, la diminuzione del throughput, l’efficacia di
rilevamento.
Nella prima sezione vengono esposti alcuni concetti basilari di queste tematiche
mentre nelle successive tre sezioni vengono presentate le tecniche di rilevamento
degli errori basate sulla ridondanza di informazione, di componenti e temporale.
2
2
Concetti generali
9
Concetti generali
In un sistema digitale le informazioni sono rappresentate, elaborate e trasmesse
mediante grandezze fisiche (segnali) che possono assumere solo due valori discreti. Ogni valore è associato ad una cifra binaria, scelta in pratica, tra due cifre
o simboli (ad es. 0-1 V-F).
Per incrementare l’affidabilità di un sistema digitale esistono due approcci: fault
avoidance (fault intolerance) in altre parole l’evitare i guasti e fault tolerance: la tolleranza ai guasti.
Il punto chiave del fault avoidance deriva dall’uso di componenti ad alta affidabilità, programmabili in modo statico e da un’attenta progettazione del percorso
del segnale riducendo in tal modo la possibilità di generazione d’errori. Nella tolleranza ai guasti, invece, si fornisce informazione aggiuntiva per contrastare l’evolversi d’eventuali errori. Questa ridondanza può presentarsi sotto tre differenti
modalità.
• La ridondanza d’informazione “extra information” consiste nell’aggiungere
pattern (pacchetti d’informazione) per aumentare la possibilità d’identificazione dell’informazione. Questi pacchetti aggiuntivi possono essere codici
di controllo molto complessi o più semplicemente dei bit di parità.
• La ridondanza di componenti “extra components” consiste nel replicare porte,
celle di memoria, bus, moduli funzionali al fine di produrre informazioni
supplementari per ridurre gli effetti dei guasti.
• La ridondanza di tempo “extra time” consiste nell’esecuzione multipla d’alcuni processi di calcolo attraverso metodi differenti. La comparazione dei
risultati fornisce una buona risposta al controllo d’errori. Questo tipo di
ridondanza è tipicamente utilizzata all’interno di controlli software.
La ridondanza d’informazione e di componenti sono definite ridondanze nello
spazio, mentre la ridondanza di tempo è definita temporale.
Un sistema ridondante necessita di dieci passi di controllo, descritti di seguito, al
fine di avere una buona resistenza ai guasti.
1. Fault confinement (Limitazione dei guasti): questo passo consiste nel limitare la diffusione degli effetti di un errore solo nell’area dove questo errore è
apparso.
2. Fault detection (Rilevazione di errori): vi sono molte tecniche disponibili per
la rilevazione degli errori come parità, verifica della consistenza e violazione di protocollo. Queste tecniche non sono sempre performanti e prima
che esse rilevino un errore può passare un certo periodo di tempo. Questo
lasso temporale viene chiamato fault latency. Le tecniche di rilevamento
di errore si suddividono in due maggiori classi: off-line detection e on-line
10
2
Concetti generali
detection. Con la off-line detection, il dispositivo in questione non è in grado di eseguire le operazioni di routine mentre viene eseguito il test. Questo tipo di rilevamento garantisce l’integrità prima e possibilmente durante
gli intervalli del processo ma non durante l’intero periodo di tempo in cui
l’operazione è attiva. L’altro tipo di rilevamento fornisce una capacità in
tempo reale di analisi senza interferire con i processi attivi.
3. Fault masking (Errore mascherato): questa tecnica nasconde gli effetti di un
guasto. Tuttavia, molte tecniche di mascheramento possono essere estese
anche a tecniche on-line di rilevamento.
4. Retry (Ritenta): in molti casi fare un secondo tentativo su una operazione
finita male potrebbe portarla alla corretta esecuzione. Questo è particolarmente vero negli errori transitori che non creano un danno fisico.
5. Diagnosis (Diagnosi): se il rilevamento di errore non fornisce informazioni
sul punto dove si è verificato il guasto, la diagnosi è necessaria.
6. Reconfiguration (Riconfigurazione): se il guasto è stato trovato ed è permanente, potrebbe essere necessario riconfigurare il componente che ha
indotto l’errore o isolare quest’ultimo dal resto del sistema.
7. Recovery (Recupero): dopo aver rilevato il guasto e, se necessario, aver riconfigurato il componente, gli effetti degli errori sono stati eliminati. Quindi si procede con il recupero del lavoro.
8. Restart (Riavvio): il recupero non è possibile se troppe informazioni sono
danneggiate. Vengono usate diverse tecniche di riavvio chiamate a caldo, a
freddo.
9. Repair (Riparazione): i componenti guasti vengono rimpiazzati. Come il
rilevamento, la riparazione può essere on-line e off-line.
10. Reintegration (Reintegrazione): dopo la sostituzione fisica del componente,
il modulo riparato deve essere reintegrato nel sistema [SS82, pag. 63-66].
La Figura 1 descrive uno scenario dove vengono illustrati i concetti sopra menzionati. Come mostrato nella figura, esistono dei valori che indicano il tempo di
fallimento (MTTF - Mean Time To Failure cfr. § A.1), il tempo di riconoscimento (MTTD - Mean Time To Detection), il tempo riparazione (MTTR - Mean Time
To Repair cfr. § A.2) e la disponibilità. Il primo di questi, indica il tempo complessivo da quando il sistema è caduto in errore fino a quando è stato ristabilito
completamente; all’interno di questo lasso temporale si collocano i restanti citati. Il secondo indica il tempo trascorso dalla nascita dell’errore fino a quando il
sistema si accorge dell’incombenza sorta. Il terzo indica il tempo trascorso per
la riparazione del sistema. Al termine di tutto ciò il sistema è pronto per essere
utilizzato di nuovo (disponibile).
2
Concetti generali
11
Figura 1: MTTF - MTTD - MTTR.
Bibliografia
[Ros69] Saul Rosen. Electronic computers: A historical survey. ACM Comput.
Surv., 1(1):7–36, 1969.
[SS82] Daniel Siewiorek and Robert Swarz. Reliable Computer Systems: Design
and Evaluation. Digital Press, 1982.
12
3
3
Ridondanza di informazione
Ridondanza di informazione
L’insieme di tecniche che vanno sotto questa classificazione, servono per rilevare
un errore attraverso l’aggiunta d’informazione (informazione aggiuntiva al messaggio da trasmettere) ai dati (messaggio da trasmettere), durante la trasmissione
o l’archiviazione di un messaggio.
Nella Figura 2 è mostrata una possibile causa d’errore, tra sorgente e destinazione
nello scambio di dati.
Per limitare errori di trasmissione, il trasmettitore (sorgente) inserisce delle informazioni aggiuntive nel messaggio destinato al ricevente, in modo da poter
rilevare ed eventualmente correggere dopo la ricezione l’errore trovato. Questa
modalità d’intervento prende il nome di ridondanza. Formalmente può essere
definita come il numero di bit usati per trasmettere il messaggio meno il numero
di bit dell’informazione (dati)[Sha48].
Figura 2: Sorgente, causa d’errore, destinazione.
Il passaggio dal dato all’informazione ridondata avviene attraverso un processo di codifica, l’inverso, decodifica. L’insieme di tutte le possibili combinazioni
di bit della lunghezza ottenuta dal processo di codifica è chiamato word, mentre
è definito codice l’insieme di tutte le word corrette, in altre parole l’insieme delle word che tramite il processo di decodifica corrispondono ad un’informazione
originale [SS82, pag. 84].
La rilevazione degli errori attraverso i codici consiste nel determinare in fase di
decodifica, in altre parole l’estrazione dell’informazione da un codice, se un ingresso è o meno una code word [Ham50, Sho02, pag. 31].
Al fine di misurare le prestazioni di una o più tecniche, nel caso della rilevazione degli errori, si fa riferimento alla probabilità di non rilevare un errore, Pue
(probability of an undetected error), la quale deve essere minimizzata (cfr. § A.4).
3.1
Codici di parità (parity checking)
Questa tecnica prevede l’aggiunta di un ulteriore bit alla word nel processo di
codifica, al fine di rilevare la parità della stessa. Nel caso di una word con un
numero pari di ’1’, questa, è chiamata pari. Altrimenti dispari [Sho02, pag. 35].
A seguito di questa distinzione si aggiunge un bit in più alla word chiamato appunto bit di parità.
Word con un numero pari di ’1’ identificano un codice di parità pari quindi il
3
Ridondanza di informazione
13
nuovo bit sarà ’0’, al contrario, nel caso di un numero dispari di ’1’, il bit avrà
valore ’1’.
Figura 3: Parità.
Esistono diverse varianti di questa tecnica, le quali prevedono: un bit di parità per ogni byte, alternando parità pari e dispari, ciò aumenta la copertura degli
errori (vedi Figura 4) oppure parità intrecciate (vedi Figura 5), alla word di dati
di dimensione b sono aggiunti i bit di parità. Ogni bit di parità è associato ad
un proprio gruppo di b/l bit, distanti l posizioni tra loro. Ogni bit della codifica
aggiunta è calcolato con il controllo di parità su tutti i bit d’ugual posto del pacchetto. Nel caso in cui un solo bit del pacchetto è alterato, il ricevitore riconosce la
riga e la posizione dell’errore e ricostruisce il bit errato negandolo. Nell’ipotesi di
due o più bit modificati, il ricevitore riconosce l’errore senza poterlo correggere e
chiede la ripetizione del messaggio. Infine se quattro bit si alterano il ricevitore,
non riconosce l’errore e accetta il messaggio.
Figura 4: Parità bit per byte.
Figura 5: Parità intrecciata.
Un esempio di circuito per il calcolo della parità è mostrato in Figura 6. Il trasmettitore combina i sette bit con una cascata di porte XOR (0 ⊕ 0 = 0, 0 ⊕ 1 = 1,
1 ⊕ 0 = 1, 1 ⊕ 1 = 0), generando quindi il bit di parità pari; il bit p sarà inviato
sul canale insieme agli altri sette bit. Il ricevitore verifica la correttezza del messaggio con un analogo circuito (vedi Figura 7) applicato agli otto bit ricevuti, con
uscita ’1’ in caso d’errore. Modificando un bit, ad esempio il sesto bit, b6 = 0, il
3
14
Ridondanza di informazione
risultato dal lato ricevente darà come uscita ’1’. L’errore sarà quindi rilevato (vedi Figura 8). Volendo utilizzare il controllo di parità dispari, occorre modificare i
due circuiti aggiungendo una porta NOT sull’uscita. Questa tecnica di rilevamen-
Figura 6: Codifica di parità pari.
to è una delle meno costose in termini di throughput e latenza, infatti, necessita
soltanto dell’aggiunta di un bit per word o per byte, secondo la metodologia implementativa utilizzata (vedi Figure 6, 7; ipotizzando una word di lunghezza 8
bit).
• Bit per word si ha un dimensione della word di a = b + 1 e una latenza:
dlog2 ae; b rappresenta la word.
• Bit per byte si ha una dimensione della word di a = m + 1 e una latenza:
dlog2 ae; m rappresenta il numero di bit per byte.
• Bit intrecciata si ha una dimensione della word di a = db/l e + 1 e una
latenza: dlog2 ae.
Tuttavia in termini d’efficacia nella rilevazione degli errori, risulta essere poco
affidabile. In quanto esiste una possibilità d’alterazione dei dati che rende vana
la rilevazione dell’errore con questa tecnica. Nel caso della parità semplice, un
esempio di trasmissione potrebbe essere il seguente:
• La sorgente invia s : {101 − 0}, tre bit con l’ultimo bit di parità pari;
• Il destinatario riceve d : {111 − 0}, ne verifica la parità ed essendo non
coerente vi è la presenza di un errore;
• L’errore viene rilevato.
Qualora il destinatario avrebbe ricevuto: d : {111 − 1} quindi due errori, l’errore
non sarebbe stato rilevato.
3
Ridondanza di informazione
15
Figura 7: Parità lato ricevente.
Figura 8: Parità lato ricevente errore rilevato.
La copertura degli errori e del 100% per singoli bit, 100% per errori multipli che
alterano un numero dispari di bit, nessuno degli errori multipli che alterano un
numero pari di bit.
La probabilità di non rilevare un errore Pue = 1 − Pe , può essere calcolata attraverso la distribuzione binomiale (cfr. § A.11). La probabilità di r errori su n bit
con una probabilità q è data dalla distribuzione B(r : n, q). In genere q è definito
come 10−4 . L’equazione (1) mostra il caso generale, mentre l’equazione (2) mostra
il caso di due errori.
9 r
Pe = B(r : 9, q) =
q (1 − q )9−r .
r
(1)
9 2
B(2 : 9, q) =
q (1 − q )9−2 .
2
(2)
3
16
Ridondanza di informazione
Ipotizzando q = 10−4 nell’equazione (2), si ottiene (3).
2 7
B(2 : 9, 10−4 ) = 36q2 (1 − q)2 = 36 · 10−4 · 1 − 10−4 = 3, 59 · 10−7 .
(3)
Da (3) è quindi possibile trovare la pue = 3, 59 · 10−7 la quale confrontata con
un parametro di misurazione dell’efficienza del codice (cfr. § A.9 punto 1) restituisce la bontà o meno del codice utilizzato. pue ≤ 2−(n−k) = 3, 59 · 10−4 < 2−7 .
Parità - Descrizione del confronto In Tabella 1 è riportato il confronto delle
varie tecniche viste nella sezione corrente. Le stelle sono comprese tra un massimo di tre, caratteristica ottima, a un minimo di una, caratteristica pessima. Secondo costo circuitale, latenza, tasso d’informazione, probabilità di non rilevare
un errore: pue e complessità dell’algoritmo di codifica e decodifica.
La complessità circuitale nel caso della parità è determinata dal limitato numero
di porte logiche del circuito (vedi Figura 7). La latenza è maggiore nel caso della
parità bit per byte, la quale aumenta con l’aumentare delle word, nelle altre due
tecniche, parità semplice, intrecciata, è relativamente minore.
Nel caso della parità semplice si fa riferimento ad una word di lunghezza 40 bit.
Quindi n = 40, k = 1. Il tasso di informazione (cfr. § A.6) ti = 0, 025 = 2%.
Nel caso della parità bit per byte, n = 45, k = 5. ti = 1, 125 = 12%.
Nel caso della parità intrecciata, n = 43, k = 3 l = 3. ti = 0, 069 = 7%.
La complessità dell’algoritmo di codifica e decodifica è rappresentata dall’operatore XOR.
Tabella 1: Tecniche di codifica parità - confronto.
Nome
Parità S.
Parità b. per B
Intrecciata
Costo circu. Latenza
FFF
FFF
FFF
FFF
FF
FF
T. info.
2%
12%
7%
pue
2−(n−k)
pue ≤
pue ≤ 2−(n−k)
pue ≤ 2−(n−k)
Comp. Cod./Dec.
FFF
FFF
FFF
3
Ridondanza di informazione
3.2
17
Somma di controllo (checksum)
Per verificare l’integrità di un blocco di dati, si può calcolare un valore hash, detto
checksum (somma di controllo), dal contenuto del blocco stesso. Piccole variazioni nel contenuto del segmento modificano sensibilmente il valore e ciò permette
di controllare la presenza d’errori nella trasmissione. Un valore di checksum corretto non significa che il blocco di dati è integro, ma piuttosto che il blocco ha
una probabilità insignificante di essere errato. Il controllo d’integrità confronta il
valore di checksum calcolato dal trasmittente con quello calcolato dal ricevente.
Un possibile algoritmo di checksum è il seguente:
1. Un array L[1 . . . N ] di parole a 16 bit, rappresenta il blocco.
2. Calcolare la seguente funzione:
(a) S1 = L[1]
(b) Si + 1 = ( L[i + 1] + Si ) mod 65536, con 0 < i < N + 1.
3. Quindi il valore di checksum è il complemento a 1 di S N .
Il complemento a 1 di S si ottiene negando tutti i bit di S.
Questo valore è solitamente espresso come il complemento a 1 della somma di
tutte le parole a 16 bit del segmento, ignorando i riporti. Dato un blocco esistono
vari modi efficienti per calcolare rapidamente il checksum basandosi sul fatto che
è possibile calcolare in parallelo la somma di quattro parole a 16 bit, ignorando i
riporti. Questo riduce la lunghezza del ciclo di calcolo di S N alla metà e inoltre,
il calcolo del complemento a 1 può essere effettuato, senza aggravio, mentre si
calcola la somma.
Il blocco costruito unendo i dati e l’informazione aggiuntiva rappresenta la codeword di un codice separabile. Esistono diverse versioni di checksum:
• Precisione singola,
• Doppia precisione,
• Honeywell,
• Low cost [SS82, pag. 94-98].
Nella versione a precisione singola, sono sommati i vari byte ed il risultato ottenuto, rappresenta il checksum, come mostrato in Tabella 2. L’esempio mostra
la procedura di codifica di 4 byte, nella parte finale della tabella, sulla destra,
è rappresentato il byte in formato esadecimale. Nel calcolo della somma viene
ignorato il resto finale, la dimensione ottenuta del checksum è identica alla dimensione della word iniziale. Il limite di questa versione sussiste quando il bit
più significativo è scartato dall’operazione di resto.
3
18
Byte 1
Byte 2
Byte 3
Byte 4
Ridondanza di informazione
0
0
1
1
0
1
0
1
1
0
0
0
0
1
1
1
Checksum calcolato 1
1
1
0
1
0
0
0
⇓
1
1
0
1
1
0
1
1
0
0
1
1
0
2C
53
97
D4
0
1 0
EA
Tabella 2: Checksum precisione singola.
Il blocco trasmesso a seguito dell’operazione di codifica è rappresentato in Tabella 3 nel formato esadecimale. È possibile calcolare la probabilità di un errore
nascosto (“masking error”) come mostrato in (4) dove n rappresenta la lunghezza
di un word, mentre S è la dimensione della colonna [SM90]. Accanto alla formula
generale, l’esempio mostrato in Tabella 2 con S = 4 e n = 8.
pue =
2nS−n − 1
224 − 1
= 0, 039 = 4%.
=
232 − 1
2nS − 1
(4)
⇐ Dati ⇒
Checksum
2C 53 97 D4
EA
Tabella 3: Checksum precisione singola - trasmissione.
Nella seconda versione, a doppia precisione, ogni word/blocco di n-bit è sommato in un blocco di 2n-bit. L’esempio in Tabella 4, mostra la fase di codifica nel
caso di 8 bit di dati. Nel caso in cui i dati sono 16 bit allora il checksum a doppia
precisione, sarà di 32 bit (4 byte).
Il problema del resto nel caso del checksum a precisione singola, è risolto. Infatti,
nel caso di 8 bit come nell’esempio, si ottengono due classi di resto chiamate principale e secondario. Quando il resto nella classe secondaria esiste, questo viene
inserito nella classe primaria. Tuttavia se anche la classe primaria ha un resto,
questo è ignorato.
Byte 1 5A
Byte 2 EF
Byte 3 24
Byte 4 C5
Checksum calcolato
Checksum calcolato hex
10
02
1011010
11101111
100100
11000101
⇓
00110010
32
Tabella 4: Checksum precisione doppia.
3
Ridondanza di informazione
19
Il blocco trasmesso a seguito dell’operazione di codifica è rappresentato in Tabella
5 nel formato esadecimale. Il blocco 02 è la classe primaria di resto, mentre il
blocco 32 del checksum è la classe secondaria.
⇐ Dati ⇒
⇐ Checksum ⇒
5A EF 24 C5 02
32
Tabella 5: Checksum precisione doppia - trasmissione.
La versione honeywell può essere vista come un’alternativa della versione a
doppia precisione. Per 8 bit, come mostra l’esempio in Tabella 6, si ottiene un
checksum di 8 · 2. Al contrario della tecnica a doppia precisione, in questo caso
i byte sono accoppiati in modo asimmetrico prima della somma. Il resto in ogni
caso è ignorato. Questa tecnica può rilevare un errore comune (sullo stesso bit)
che si ripercuote su word differenti.
Byte 1
Byte 2
Byte 3
Byte 4
C3
FE
DB
B4
⇓
Correlazione
FE
B4
⇓
Checksum calcolato 10110010
Checksum calcolato hex
B2
11000011
11111110
11011011
10110100
⇓
C3
DB
⇓
10011110
9E
Tabella 6: Checksum honeywell.
Il blocco trasmesso a seguito dell’operazione di codifica è rappresentato in Tabella
7 nel formato esadecimale. Il blocco B2 è la classe primaria di resto, mentre il
blocco 9E del checksum è la classe secondaria.
⇐ Dati ⇒
⇐ Checksum ⇒
C3 FE DB B4 B2
9E
Tabella 7: Checksum honeywell - trasmissione.
L’ultima versione presentata low cost, è una modifica della prima, in cui si
tiene conto del resto, del bit di riporto.
Questa tecnica di rilevazione degli errori è molto economica in termini d’informazione aggiuntiva, ma presenta alcuni svantaggi [SS82].
Infatti, risulta essere adatta alle sole applicazioni in cui i dati sono gestiti in grandi blocchi contigui inoltre nelle memorie è necessario molto tempo per rilevare
3
20
Ridondanza di informazione
un errore (dato che le word devono in ogni caso essere sempre lette e sommate),
inoltre ogni volta che una word viene modificata il checksum del blocco di riferimento deve essere calcolato nuovamente e memorizzato.
Tali motivi rendono quindi sconsigliabile come metodo di controllo on-line, perlomeno per memorie con scritture frequenti.
La probabilità di rilevamento di un errore nella versione a precisione singola, può
essere calcolata come segue:
• 100% nel caso di una word; con i < z − log2 s dove i rappresenta il bit di
ordine minore nella word, z il numero di bit di ogni word, s il numero di
word;
• (1 − 2−s ) nel caso di più word e con i = z − log2 s. Ad esempio, con tre
word: Pe = (1 − 2−3 ), Pue = 1 − Pe = 0.87;
• Nel caso di errori multipli: 100% con i =≤ z − (log2 s) − c mentre (1 −
2−(z−i) + 2−cs ) altrimenti. c rappresenta il numero di posizioni con errore.
Mentre per la versione honeywell:
• 100% nel caso di una word;
• (1 − 2−(s+1) ) nel caso di più word, s rappresenta il numero di word, con
i = z − log2 (s/2)[SS82, pag. 99];
• Nel caso di errori multipli: 100% con i =≤ z − (log2 (s/2)) − c mentre (1 −
2−(z−i+(cs/2)) + 2−cs ) altrimenti.
Checksum - Descrizione del confronto In Tabella 8 è riportato il confronto
delle varie tecniche viste nella sezione corrente. Le stelle sono comprese tra un
massimo di tre, caratteristica ottima, a un minimo di una, caratteristica pessima.
Secondo costo circuitale, latenza, tasso d’informazione, probabilità di non rilevare un errore: pue e complessità dell’algoritmo di codifica e decodifica.
La complessità circuitale nel caso del checksum è determinata da un semplice
sommatore di bit. La latenza è maggiore nel caso del checksum a doppia precisione e honeywell, mentre è minore nel caso del checksum semplice. In quanto
nei primi due casi si considera anche il resto dell’operazione di somma, mentre
nell’ultimo, checksum semplice, non viene fatto.
Nel caso di una somma di controllo, si fa riferimento ad una word di lunghezza
32 bit. Quindi n = 32, k = 8. Il tasso di informazione ti = 0, 25 = 25%, per la
somma di controllo a doppia precisione: n = 32, k = 16. Il tasso di informazione
ti = 0, 5 = 50%. Il caso honeywell è identico alla quello della somma di controllo
a doppia precisione.
La complessità dell’algoritmo di codifica e decodifica è rappresentata dall’operatore somma di bit. Nel caso di una codeword con distanza di Hamming pari a
3, la capacità di rilevare un singolo errore sarà (h/2) − 1 dove h rappresenta il
numero di check bit [McA94, Ngu05].
3
Ridondanza di informazione
21
Tabella 8: Tecniche di codifica checksum - confronto.
Nome
Checksum S.
Checksum d.p.
Checksum H.
Costo circu. Latenza
FFF
FFF
FFF
FFF
FF
FF
T. info.
pue
Comp. Cod./Dec.
25%
50%
50%
pue ≤ 2−(n−k)
pue ≤ 2−(n−k)
pue ≤ 2−(n−k)
FFF
FFF
FFF
22
3
Ridondanza di informazione
3.3
Controllo di ridondanza ciclica (cyclic redundancy checks)
Il CRC, o controllo di ridondanza ciclica, è un metodo per determinare i bit di
controllo (check bit) da inserire in coda ad un blocco di bit informativi.
Il compito dei bit di controllo è quello di consentire al ricevitore di rilevare la presenza di eventuali errori dovuti al rumore.
Se il numero di bit totali generati dal codificatore è n e i bit originari del blocco
sono k, allora il numero di bit di controllo è pari a r = n − k. Un codice di questo
tipo viene indicato come codice ciclico (n, k ).
È una tecnica per la rilevazione e correzione degli errori che sfrutta le proprietà dei polinomi binari nei campi binari finiti, l’implementazione via hardware è
molto semplice [RG88].
Per la determinazione del codice CRC nella fase di trasmissione si considerano i
bit informativi presenti in un blocco di k bit il quale viene considerato come un
polinomio di grado k − 1, P( x ), nella generica variabile x. I bit rappresentano i
coefficienti del polinomio e in corrispondenza del bit zero si ha l’assenza del relativo termine di polinomio.
Per esempio, al blocco di 6 bit 110101 è possibile associare un polinomio P( x )
come mostrato in (5):
101011 ⇒ P( x ) = 1 · x5 + 1 · x4 + 0 · x3 + 1 · x2 + 0 · x + 1 · 1
= x5 + x4 + x2 + 1.
(5)
Si fissa in numero di bit, r, che costituiscono il CRC e si sceglie un polinomio di
grado r, G ( x ), noto come polinomio generatore.
Per esempio, imponendo r = 3 si deve scegliere un polinomio G ( x ) di grado tre,
come mostrato in (6):
G ( x ) = x3 + 1 ⇒ 1001.
(6)
Il polinomio G ( x ) è noto sia al trasmettitore che al ricevente e non dipende dal
messaggio informativo prodotto dalla sorgente. Si effettua quindi la divisione di
P( x ) per G ( x ) come mostrato in (7):
P( x )
= Q ( x ) + R ( x ).
G(x)
(7)
Si scarta il quoziente e si utilizzano come CRC gli r bit che costituiscono il resto, i
quali vengono accodati ai k bit informativi.
Mentre nel caso della ricezione, il ricevitore conosce G ( x ) e quindi può dividere per esso il polinomio P( x ) associato al blocco di bit ricevuto e confrontare
se il resto che si ottiene è uguale a quello calcolato dal trasmettitore [PB61]. Ovviamente se il resto calcolato dal ricevitore coincide con il CRC ricevuto si può
ritenere che non vi siano errori.
3
Ridondanza di informazione
23
In realtà si preferisce agire in modo più veloce, facendo sì che l’assenza di errori
corrisponda a una divisione con resto ’0’ di tutto il blocco ricevuto (bit di informazione CRC) per il polinomio G ( x ). A tal fine i trasmissione si deve moltiplicare
per xr il polinomio P( x ) prima della divisione. Quando i bit di P( x ) sono stati
tutti trasmessi nel contempo pronto il CRC che viene inserito in coda al posto dei
bit zero derivanti dalla moltiplicazione. In assenza di errori, della divisione fatta
in lato ricezione, si analizza il resto che, se diverso da zero, significa la presenza
di un errore nella trasmissione del segnale.
CRC - Descrizione del confronto In Tabella 9 sono riportati i principali parametri di valutazione della tecnica presentata nella sezione corrente. Le stelle
sono comprese tra un massimo di tre, caratteristica ottima, a un minimo di una,
caratteristica pessima. Secondo costo circuitale, latenza, tasso d’informazione,
probabilità di non rilevare un errore: pue e complessità dell’algoritmo di codifica
e decodifica.
La complessità circuitale nel caso del calcolo CRC è determinata dal componente
che esegue l’operazione di scorrimento (shift) 8, 16, 32 bit.
La latenza è proporzionale al tipo di codice adottato. Anche esiste la possibilità
di pre calcolare il resto, il quale è archiviato in tabelle indicizzate.
La rilevazione di errori per singolo bit è del 100%, nel caso di errori multipli (due)
100%. In generale l’utilizzo del CRC garantisce il 99% dei rilevamenti di errore;
come nel caso del CRC-16 con n ≤ 32, 767 e k ≤ 32, 751 [RG88].
Tabella 9: Tecniche di codifica CRC - confronto.
Nome Costo circu. Latenza
CRC
FF
FF
T. info.
pue
Comp. Cod./Dec.
0.01%
FF
3
24
3.4
Ridondanza di informazione
Codici Hamming (Hamming codes)
Il concetto chiave che sta alla base di questo codice di rilevazione degli errori si
esprime attraverso la distanza di Hamming: date due word di uguale lunghezza
x1 e x2 , la distanza di Hamming d( x1 , x2 ) è il numero di bit con cui le due word
differiscono. Per stringhe binarie ad esempio a e b, la distanza di Hamming corrisponde al numero di uni presenti nello XOR tra a e b.
I codici Hamming ricevono come ingresso i bit dei dati (m) e come uscita restituiscono i bit di dati più le informazioni ridondate check bit (c). Le parole codificate
sono quindi formate da messaggio più informazioni: m + c.
L’informazione viene aggiunta alla fine della word da un componente che implementa la matrice generatrice. La code word è trasmessa al ricevitore il quale
implementa un altro componente: una matrice di parità. L’uscita di questa matrice di parità è un vettore di bit della stessa dimensione dei check bit. Questa uscita
prende il nome di sindrome di Hamming e, attraverso questo vettore, è possibile
trovare e correggere un errore. Tutte le moltiplicazioni tra matrici vengono eseguite in modulo-2.
Dato un codice di Hamming (n, k ), k è il numero di bit in ingresso n il numero
di bit in uscita. Il numero di bit necessari alla codifica è mostrato in (8), dove k
rappresenta il numero di dati da inviare mentre n il numero totale di bit trasmessi.
2n−k ≥ n + 1.
(8)
La matrice generatrice per codificare un codice (7,4) è mostrata in (9) I rappresenta la matrice identità mentre P la sottomatrice. In (10) lo sviluppo.
G = [ I | P ].

1
 0
G=
 0
0
0
1
0
0
0
0
1
0
0
0
0
1
(9)
1
1
1
0
0
1
1
1

1
1 
.
0 
1
(10)
La matrice di parità per il controllo degli errori è mostrato in (11) P T è la trasposta
di P mentre I è la matrice d’identità. In (12) lo sviluppo.
H = [ P T | I ].

1 1 1 0
H= 0 1 1 1
1 1 0 1

1 0 0
0 1 0 .
0 0 1
Per l’invio e la ricezione del messaggio m = 1010:
(11)
(12)
3
Ridondanza di informazione
25
1 m · G = c dove G rappresenta la matrice generatrice mentre c rappresenta
la code word. In (13) il risultato, dove[m1 · · · m4 ] sono i bit del messaggio
invece [c1 · · · c3 ] sono i check bit.
m1 m2 m3 m4 c1 c2 c3 .
(13)

1
 0
1 0 1 0 ·
 0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
0

1
1 
= 1 0 1 0 0 1 1 .

0
1
0
1
1
1
2 Per controllare la correttezza della code word c, si moltiplica per la matrice
trasposta H T (vedi (14)), al fine di ottenere la “sindrome” (vedi (3.4)). Se il
valore di S è ’0’ non sono stati rilevati errori. I check bit saranno rimossi
per ottenere i dati [Dub07, pag. 85-88].
c · H T = S.





1 0 1 0 0 1 1 ·




1
1
1
0
1
0
0
0
1
1
1
0
1
0
(14)
1
1
0
1
0
0
1




 = 0 0 0 .




3 In (15) è mostrato un errore di trasmissione della code word, nel terzo bit.





1 1 1∗ 0 0 1 1 · 




1
1
1
0
1
0
0
0
1
1
1
0
1
0
1
1
0
1
0
0
1




 = 1 1 1 .




(15)
Il tasso di informazione (cfr. § A.6) di un codice Hamming(7,4) è mk = 74 . In
generale il tasso di informazione di un codice Hamming(n, k ) è 2n−kk −1 .
Il numero minimo di check bit per correggere un errore, un Single event correct
(SEC) è: c ≥ log2 (n + 1).
26
3
Ridondanza di informazione
Codici Hamming - Descrizione del confronto In Tabella 10 sono riportati
i principali parametri di valutazione della tecnica presentata nella sezione corrente. Le stelle sono comprese tra un massimo di tre, caratteristica ottima, a un
minimo di una, caratteristica pessima. Secondo costo circuitale, latenza, tasso
d’informazione, probabilità di non rilevare un errore: pue e complessità dell’algoritmo di codifica e decodifica.
La complessità circuitale nel caso dei codici di Hammming è determinata dal numero di dati trattati, in ogni caso, simile alla complessità circuitale della parità
intrecciata.
La latenza è proporzionale al tipo di codice adottato negli esempi mostrati (7,4).
Nel caso di un codici di Hamming (7,4), si fa riferimento ad una word di lunghezza 7 bit. Quindi n = 7, k = 4. Il tasso di informazione ti = 0, 571 = 57%.
Maggiore è questo valore, maggiore è l’efficienza del codice.
La pue dipende dal codice adottato in altre parole dalla distanza (cfr. § A.8, nella
Tabella 10 indicata come D ( H )) che il codice possiede.
Tabella 10: Tecniche di codifica Hamming - confronto.
Nome
Costo circu. Latenza T. info.
pue
Hamming
FFF
FF
57%
1 − ( D ( H ) − 1)
Comp. Cod./Dec.
FF
3
Ridondanza di informazione
3.5
27
Codici m su n (M-of-N codes)
La caratteristica principale di questi codici è il fatto di avere code word di n bit,
in cui m - e solo m - bit sono “1” [SS82, pag. 87].
Dal punto di vista implementativo, se la decodifica avviene in modo seriale risulta semplice e a basso costo - basta infatti un contatore dei bit “1” - mentre diviene
complessa se viene eseguita in modo parallelo.
In (16) è possibile calcolare l’efficienza relativa (M) al numero di word appartenenti alla codifica di questo tipo di codice.
M=
(mn )
n!
=
· 2− n
n
2
m! · (n − m)!
(16)
In Tabella 11 viene mostrato un codice 2 su 4 in grassetto.
1100
1110
1000
1010
0101
0111
0001
0011
Tabella 11: 2 su 4.
Ad esempio per un codice 2-su-4 come quello mostrato in Tabella 11 si otterrà
il risultato mostrato in (17).
M=
4!
24 1
6
· 2−4 =
·
=
= d0, 375e = 4.
2! · (4 − 2)!
4 16
16
(17)
Una semplice implementazione della codifica consiste nell’aggiungere alla fine della word alcuni bit contenenti il numero di ’1’ necessari a soddisfare la specifica del codice. Nella Tabella 12 viene mostrata una semplice implementazione di
un codice 3 su 6. Su 6 bit di codifica devono essere presenti tre ’1’. Per raggiungere
tale obiettivo vengono collocati in coda al dato dei nuovi bit.
28
3
Ridondanza di informazione
Dati originali Aggiunta bit della codifica
000
111
001
110
010
110
011
100
100
110
101
100
110
100
111
000
Tabella 12: 3 su 6.
Un singolo errore causa la violazione del codice andando quindi ad aggiungere o togliere un ’1’: m + 1 o m − 1. Nel caso di un doppio errore, questo non sarà
rilevato. L’esempio seguente mostra alcuni casi d’errore e rilevazione tra sorgente
s e destinazione d.
• s: 000 − 111 d: 010 − 111 errore rilevato, il codice deve contenere esattamente tre ’1’.
• s: 000 − 111 d: 010 − 110 errore non rilevato, la codifica viene ricevuta come
corretta.
Codici M su N - Descrizione del confronto In Tabella 13 sono riportati
i principali parametri di valutazione della tecnica presentata nella sezione corrente. Le stelle sono comprese tra un massimo di tre, caratteristica ottima, a un
minimo di una, caratteristica pessima. Secondo costo circuitale, latenza, tasso
d’informazione, probabilità di non rilevare un errore: pue e complessità dell’algoritmo di codifica e decodifica.
La complessità circuitale nel caso dei codici M su N è determinata dall’implementazione scelta per realizzare questo tipo di codici. Un esempio in [BTEF03].
La latenza è proporzionale al tipo di codice adottato; in altre parole aumenta con
la dimensione dei bit da trattare (1 su 4; 2 su 4, 3 su 6 e così via).
Nella Tabella 13 sono riportati alcuni risultati mostrati in [BTEF03]. Il tasso di
informazione è calcolato come M/n dove M rappresenta il numero possibili codeword rappresentabili (vedi (16)). Ad esempio, per il codice 2 su 4; m = 2 n = 4
quindi ti = log2 6/4 = 0, 5 = 44%. Per la pue , si fa riferimento alla Sezione 3.1,
nella parte finale; utilizzando la binomiale è possibile verificare l’upper bound
del codice adottato. Nel caso del codice 2 su 4 si ottiene (42)q · (1 − q)3 ∼
= 0, 006 <
1/23 = 0, 25.
3
Ridondanza di informazione
29
Tabella 13: Tecniche di codifica M su N - confronto.
Nome
1 su 4
2 su 4
3 su 6
Costo circu. Latenza
FF
FF
FF
FF
FF
FF
T. info.
pue
Comp. Cod./Dec.
50%
44%
49%
pue ≤ 2−(n−k)
pue ≤ 2−(n−k)
pue ≤ 2−(n−k)
FF
FF
FF
30
3.6
3
Ridondanza di informazione
Codici aritmetici (arithmetic codes)
I codici aritmetici si dividono in due categorie: separabili (parità, aritmetici) e non
separabili (CRC) [Gar66]. Nei codici non separabili le word codificate consistono
in due parti, i dati e i bit di controllo che vengono aggiunti in fondo alla word.
Vengono in genere identificati con l’espressione (n, k ) dove n rappresenta il numero totale di bit della word codificata, mentre k rappresenta i dati.
I codici aritmetici sono molto utili quando si desidera controllare la corretta esecuzione delle operazioni aritmetiche come: addizione, sottrazione, moltiplicazione
e divisione.
I dati che rappresentano gli operandi sono codificati prima che su di loro sia eseguita una delle operazioni suddette. Al termine di questa la code word risultante
viene controllata per la sua validità o meno, nel caso in cui la verifica dia esito
negativo, viene segnalata una condizione d’errore. Per quanto detto un codice
aritmetico deve necessariamente possedere la proprietà d’invarianza rispetto all’operazione che si propone di controllare.
Con il termine codice aritmetico s’intende definire - data la rappresentazione numerica in forma digitale X e Y, un’operazione aritmetica “·” e una funzione di
codifica f () - che una funzione f () è un codice aritmetico rispetto a “·” se e solo
se esiste un algoritmo applicabile ad operandi codificati che implementa l’operazione “·” in modo tale che f ( X ) · f (Y ) ≡ f ( X · Y ) [Avi71].
Esistono diversi tipi di codici aritmetici ad esempio: AN code, residue code e inverse residue code.
I primi, AN code, sono i più semplici ed appartengono alla classificazione di codici non separabili. Si ottengono moltiplicando ogni word per una costante C.
Ipotizziamo che X e Y siano due operandi originali, dopo la fase di codifica si
otterrà f ( X ) = C · X e f (Y ) = C · Y. I codici AN sono invarianti rispetto alla
somma e sottrazione ma non rispetto alla moltiplicazione e divisione. Un successivo controllo è possibile aggiungendo al termine dell’operazione una verifica
sulla divisibilità per la costante C come mostrato in Figura 9.
Figura 9: AN code.
Un esempio viene mostrato in Figura 10 con i seguenti dati: C = 5, X = 3, Y = 4.
Ai fini d’efficacia ed efficienza, la scelta della costante è cruciale in quanto il
suo valore determina il numero di bit aggiuntivi. Esiste la possibilità che un multiplo della costante scelta, causi un errore, questo porterebbe il controllo modula-
3
Ridondanza di informazione
31
Figura 10: AN code esempio.
re a perdere la sua efficacia. Infine dal punto di vista dell’efficienza, l’incremento
della lunghezza delle word dovuto alla codifica è pari a dlog2 C e.
Una conveniente scelta della costante è C = 2a − 1, con a > 1, in quanto una tale
configurazione permette di rilevare tutti gli errori multipli e permette l’esecuzione del modulo con un costo molto basso [SS82, pag. 98-101].
Il costo hardware ne risente nella gran parte per la complessità maggiore del processore principale; in quanto esso riceve in input operandi che dopo la codifica
hanno aumentato la dimensione.
Il secondo tipo di codici rientra nella classificazione di codici separabili il quale si
basa sulla proprietà: ( X · Y ) mod C = [( X mod C ) · (Y mod C )] mod C.
Le quantità X, Y, (X mod C), (Y mod C), i residui di moduli, entrano in due
processori separati (primario e secondario) che eseguono la stessa operazione “·”,
fornendo due risultati. Da questi sono generati i residui e confrontati tra loro
come mostrato in Figura 11.
La decisione di scelta rispecchia le considerazioni fatte per i codici AN. Il costo
hardware risiede nell’aggiunta di un processore.
Figura 11: Residue code.
Un esempio viene mostrato in Figura 12 con i seguenti dati: C = 22 − 1 = 3,
X = 8, Y = 3.
3
32
Ridondanza di informazione
Figura 12: Residue code esempio.
Esiste tuttavia una variante ai residue chiamata inverse residue code. La differenza risiede nel calcolo dei residue ad esempio: C − ( X mod C ). Questa tecnica
può essere utile quando i bit danneggiati sono più di uno.
Codici aritmetici - Descrizione del confronto In Tabella 14 è riportato il
confronto delle varie tecniche viste nella sezione corrente. Le stelle sono comprese tra un massimo di tre, caratteristica ottima, a un minimo di una, caratteristica
pessima. Le stelle di colore grigio indicano una posizione poco netta, tra il limite
inferiore (stella nera precedente) e superiore (stella grigia). Secondo costo circuitale, latenza, tasso d’informazione, probabilità di non rilevare un errore: pue e
complessità dell’algoritmo di codifica e decodifica.
La complessità circuitale nel caso dei codici aritmetici è determinata dal componente di confronto (AN code) e dalla componentistica ridondata (residue code).
Le scelte implementative possono far variare il giudizio trattato, ecco il significato
delle stelle grigie. Infatti, in base al tipo di ridondanza adottata (ad esempio: processore), la complessità circuitale può essere differente. La latenza è fortemente
dipendente dalla scelta della costante. L’incremento della lunghezza delle word
dovuto alla codifica è pari a dlog2 C e.
La probabilità di non rilevare un errore è nulla se viene usato un modulo che rispetti la condizione: (2a − 1). L’error magnitude | Em | per entrambi i codici (AN e
residue) consiste in tutti i multipli della costante scelta C. | Em | = KA,
K =
1, 2, · · · b(r n − 1) /Ac; dove n è il numero di bit, r è la base [Avi71]. Nel caso di un
singolo errore (2ka − 1) − | E| con n = ka.
Tabella 14: Tecniche di codifica aritmetica - confronto.
Nome
Costo circu. Latenza
AN code
FF F
FF
Residue code
FF
FF
T. info.
dlog2 C e /n
dlog2 C e /n
pue
C = (2 a − 1)
C = (2 a − 1)
Com. Cod./Dec.
FF
FF
3
Ridondanza di informazione
33
Bibliografia
[Avi71] A. Avizienis. Arithmetic error codes: Cost and effectiveness studies
for application in digital system design. Computers, IEEE Transactions
on, C-20(11):1322–1331, 1971.
[BTEF03] W. J. Bainbridge, W. B. Toms, D. A. Edwards, and S. B. Furber. Delayinsensitive, point-to-point interconnect using m-of-n codes. 2003. Proceedings. Ninth International Symposium on Asynchronous Circuits and
Systems, pages 132–140, May 2003.
[Dub07] Elena Dubrova.
Fault tolerant design: an introduction.
Kluwer Acedemic Publischer, http://web.it.kth.se/~elena/draft.
pdf, 2007.
[Gar66] H.L. Garner. Error codes for arithmetic operations.
Computers, IEEE Transactions on, EC-15(5):763–770, 1966.
Electronic
[Ham50] R.W. Hamming. Error detecting and error correcting codes. Bell
System Tech., 29:147–160, 1950.
[McA94] A. J. McAuley. Weighted sum codes for error detection and their
comparison with existing codes. IEEE/ACM Trans. Netw., 2(1):16–22,
1994.
[Ngu05] G. D. Nguyen. Error-detection codes: algorithms and fast implementation. IEEE Transactions on Computers, 54(1):1–11, January
2005.
[PB61] W.W. Peterson and D.T. Brown. Cyclic codes for error detection.
Proceedings of the IRE, 49(1):228–235, 1961.
[RG88] Tenkasi V. Ramabadran and Sunil S. Gaitonde. A tutorial on crc
computations. IEEE Micro, 08(4):62–75, 1988.
[Sha48] C.E. Shannon. A mathematical theory of communications. Bell System
Tech., 27:370–423, 1948.
[Sho02] Martin L. Shooman. Reliability of Computer Systems and Networks: Fault
Tolerance,Analysis,and Design. John Wiley & Sons, Inc., New York, NY,
USA, 2002.
[SM90] N. R. Saxena and E. J. McCluskey.
Analysis of checksums,
extended-precision checksums, and cyclic redundancy checks. IEEE
Transactions on Computers, 39(7):969–975, July 1990.
[SS82] Daniel Siewiorek and Robert Swarz. Reliable Computer Systems: Design
and Evaluation. Digital Press, 1982.
4
34
4
Ridondanza di componenti
Ridondanza di componenti
Questo genere di tecniche si basa sull’introduzione di componenti aggiuntivi a
quelli già presenti ad esempio la replicazione di un processore, di una memoria,
di un registro, per garantire la possibilità di rilevamento dell’errore e l’effettiva
trasmissione corretta del dato.
Esistono tre diversi tipi di ridondanza:
• Passiva,
• Attiva,
• Ibrida.
La prima, quella passiva, sfrutta il meccanismo del mascheramento, non richiede
nessun intervento da parte del sistema o di operatori esterni. Normalmente non
implica il rilevamento del guasto, né alcuna azione di riconfigurazione. Si basa
spesso sul principio del voto tra i risultati prodotti da moduli diversi.
La ridondanza attiva, si basa sulle seguenti fasi:
• Rilevamento dell’errore (error detection),
• Posizione dell’errore (fault location),
• Contenimento dell’errore (fault containment),
• Recupero dell’errore (fault recovery).
Le ultime tre fasi vengono anche indicate con il termine riconfigurazione. A differenza della ridondanza passiva, non fa uso del mascheramento, e quindi il sistema può essere temporaneamente soggetto ad errori, ed eventualmente anche
a malfunzionamenti.
Infine la ridondanza ibrida, combina ridondanza attiva e passiva. Adotta il mascheramento, ma i moduli guasti vengono rimpiazzati una volta rilevato il guasto
ad esempio N-modular redundancy (NMR) con moduli ridondati oppure Tripleduplex vale a dire la combinazione di Triple modular redundancy (TMR) e duplicazione e confronto.
Non permette ai guasti di produrre malfunzionamenti, ma ha un costo hardware
elevato. È adatta ai casi in cui si desidera la massima affidabilità.
4.1
Duplicazione e confronto (duplication and comparison)
La forma più comune e di tipo attivo di replication check prende il nome di Duplicazione e Confronto - detta anche Duplication and comparison - (vedi Figura
13) in cui sono sfruttate due copie di una stessa entità: alla presenza di un errore, le copie non sono più identiche e un semplice confronto consente di rilevare
4
Ridondanza di componenti
35
la situazione di disaccordo. Nel caso si duplichino moduli hardware o software,
è possibile far loro eseguire le stesse elaborazioni in parallelo, confrontandone
in seguito i risultati: se il comparatore è corretto e i componenti falliscono in
maniera indipendente, viene rilevato ogni singolo errore. Uno dei maggiori problemi di questo controllo, sono i fallimenti comuni, in altri termini, se entrambe
le copie presentano lo stesso errore il comparatore non sarà in grado di rilevare
l’anomalia.
Figura 13: Duplicazione e confronto.
Al fine di migliorare il rilevamento, sono state create svariate versioni di questa tecnica, una variante è la scambia e confronta, swap and compare [DSMT78,
SS82, pag. 79-84] usata nel multiprocessore C.mmp. Il funzionamento di questa
tecnica si basa su due copie esistenti di una word, una ha i byte invertiti: lo scambio di questi, necessario per tornare alla situazione originaria, è previsto appena
prima di eseguire il confronto tra le due word. In Figura 14 e 15 un esempio;
nel caso prima del confronto 14 e dopo il confronto 15. Nei casi di duplicazione,
Figura 14: Schema scambia e confronta A.
come già accennato, entrambe le copie, possono essere soggette a errori comuni
4
36
Ridondanza di componenti
(common-mode failures), soprattutto se esistono errori di progettazione all’inizio
oppure se le copie risiedono sullo stesso IC chip (Integrated Circuits).
Figura 15: Schema scambia e confronta B.
Una soluzione nell’ambito delle VLSI (Very Large Scale Integration) è stata
proposta in [SL80] la quale prevede che una copia sia il duale logico dell’altra.
Un guasto comune alle copie, probabilmente, causerà errori diversi rilevabili nella fase di detection. Una generalizzazione di quest’approccio consiste nel NMR il
quale usa N copie di moduli. Dove N è un numero pari per la sola rilevazione di
errori, dispari per la correzione. Il componente di voto è sostituito da un componente di confronto [CC90].
La differenza d’affidabilità tra un solo componente e tre componenti (nel caso
della correzione) è mostrata nell’esempio seguente:
• Rs = e−λt dove Rs rappresenta l’affidabilità (reliability) di un singolo componente, mentre λ rappresenta il tasso di fallimento del componente;
R
• Il MTTF del singolo componente è: MTTFs e−λt = λ1 ;
• L’affidabilità di un sistema TMR: R TMR = e−3λt + (32)e−2λt (1 − e−λt ) =
3e−2λt ;
• Quindi MTTFTMR =
3
2λ
−
2
3λ
=
5
6λ ;
• MTTFs > MTTFTMR [Sho02, pag. 147-153].
Questo esempio mostra come un sistema TMR possa essere più affidabile di un
componente singolo per periodi minori di una certa soglia.
Nel caso di NMR, l’affidabilità può essere calcolata attraverso una distribuzione binomiale come mostrato in (18) dove p = e−λt se ogni componente ha una
distribuzione di fallimento esponenziale.
n n i
R N MR = ∑
p (1 − p ) n −1 .
(18)
i
i =k
Quindi
n
R N MR
n −λti
=∑
e
(1 − e−λt )n−1 .
i
i =k
4
Ridondanza di componenti
37
La complessità circuitale (numero di porte) cresce rapidamente con l’aumentare
del numero di bit trattati.
Duplicazione e confronto - Pregi e difetti della tecnica. In questo paragrafo sono descritti i pregi e difetti di questa tecnica, prendendo in esame le
considerazioni fatte nella sezione corrente.
Grazie a questa tecnica attiva, è possibile rilevare un errore in una word. Esistono
tuttavia alcune problematiche.
• Rileva l’errore ma non permette di capire dove esso sia. Questo è dovuto
ad una problematica di progettazione concettuale.
• Problematiche sul componente di confronto tra le due word. Questo componente può essere un punto di fallimento.
• Il componente del confronto può essere implementato via hardware o software, nel primo caso si tratta di uno XOR. Nel caso software è possibile
usare l’istruzione apposita nel processore adottato.
• Se le due word in ingresso presentano errori comuni, questi non vengono
rilevati.
• Altre tecniche che sfruttano il medesimo principio ad esempio swap and
compare.
4
38
Ridondanza di componenti
Bibliografia
[CC90] Yinong Chen and Tinghuai Chen. Implementing fault-tolerance
via modular redundancy with comparison. IEEE Transactions on
Reliability, 39(2):217–225, June 1990.
[DSMT78] H. Mashburn D.P. Siewiorek, V. Kini, S.R. McConnel, and M.M. Tsao.
A case study of c.mmp, cm*, and c.vmp: Part i–experiences with fault
tolerance in multiprocessor systems. Proc. IEEE, 66(10):1178–1199,
1978.
[Sho02] Martin L. Shooman. Reliability of Computer Systems and Networks: Fault
Tolerance,Analysis,and Design. John Wiley & Sons, Inc., New York, NY,
USA, 2002.
[SL80] Richard M. Sedmak and Harris L. Liebergot. Fault tolerance of a general purpose computer implemented by very large scale integration.
IEEE Trans. Computers, 29(6):492–500, 1980.
[SS82] Daniel Siewiorek and Robert Swarz. Reliable Computer Systems: Design
and Evaluation. Digital Press, 1982.
5
5
Ridondanza temporale
39
Ridondanza temporale
Il concetto di base della ridondanza temporale è quello di eseguire un dato calcolo in sequenza più di una volta, e confrontare a posteriori i risultati ottenuti in
ciascuna ripetizione per verificare se esista qualche discrepanza.
Nel caso affermativo, viene rilevato un errore e l’azione è quella di ripetere il
calcolo tramite una nuova sequenza per verificare se tale discrepanza persiste o
meno.
Originariamente la ridondanza temporale è stata impiegata soprattutto per il
trattamento degli errori dovuti a guasti temporanei, ove, una volta rivelato l’errore, successive ripetizioni dovrebbero rivelare assenza di discrepanza dovuta al
fatto che il guasto scompare autonomamente.
Figura 16: Ridondanza temporale - Rilevamento errori permanenti.
Questo tipo di ridondanza ha inoltre la capacità di far scoprire anche guasti
permanenti1 in componenti hardware a patto che si faccia uso di una minima
quantità di hardware aggiuntivo, la procedura per la rilevazione è mostrata in
Figura 16.
La Figura 16 riporta un esempio di ridondanza temporale per la scoperta di guasti permanenti.
Al tempo t0 viene effettuata una prima computazione, poi al tempo t1 viene effettuata una seconda computazione in cui i dati di ingresso vengono codificati e
poi decodificati in uscita. I risultati delle due computazioni vengono poi comparati per rivelare eventuali discrepanze. Le funzioni di codifica e decodifica sono
selezionate in modo da poter rivelare guasti nel sistema di calcolo ad esempio la
duplication and comparison (cfr. § 4.1 a Pagina 34) [Sho02].
Per la rilevazione degli errori permanenti è possibile usare diverse tecniche di ridondanza temporale, sfruttando la computazione in momenti diversi: alternating
logic, shifted operand, swapped operands.
1 La
cui presenza non è in relazione a condizioni temporali puntuali.
5
40
5.1
Ridondanza temporale
Duale (alternating logic)
Questa tecnica consiste nel trasmettere una parola, word, ad un istante t0 , e nell’istante t1 trasmettere il suo duale. Nella Figura 17, è mostrata una rappresentazione grafica. A seguito dell’invio della word e del suo duale, nell’istante successivo, viene eseguito un confronto; se questo controllo non da esito corretto, viene
generato un errore [RM78].
Figura 17: Alternating logic
Il duale di una funzione è definito come: f ( x1 , x2 , . . . , xn ) = f ( x1 , x2 , . . . , xn ).
La realizzazione di un circuito per il calcolo del duale per la funzione f = ab + cd,
f d = ( a + b)(c + d) è mostrata in Figura 18.
Figura 18: Implementazione logica della funzione duale
5
Ridondanza temporale
41
Duale - Pregi e difetti della tecnica. In questo paragrafo sono descritti i
pregi e difetti di questa tecnica, prendendo in esame le considerazioni fatte nella
sezione corrente.
L’obiettivo di questa tecnica è quello di rilevare errori nella stessa word a distanza
temporale ti + ∆. Il costo circuitale richiede l’implementazione di una funzione
duale, questo, necessita il raddoppio della circuiteria. La complessità aumenta
con il crescere del numero di dati da trattare; infine nel calcolo della complessità
circuitale, va aggiunto il costo del confronto finale delle word ricevute. È importante sottolineare che serve un circuito normale e uno con la funzione duale
(invertendo le porte logiche) come già detto poc’anzi. Uno dei vantaggi di questa
tecnica è la probabilità bassa di trovare errori comuni nelle word.
42
5.2
5
Ridondanza temporale
Computazione con traslazione di bit (recomputing with shifted operands)
L’utilizzo tipico di questo metodo avviene nelle unità aritmetico logiche (ALU).
Recomputing with shifted operands (RESO) è in grado di rilevare errori generati
da guasti avvenuti in una certa zona del chip, ad esempio la perdita di un bit (bitslice) [PF82].
Indichiamo con f la funzione eseguita dall’ALU, mentre con c indichiamo l’operazione di spostamento di bit a sinistra (left shift) infine c−1 l’operazione di
spostamento di bit a destra (right shift). Possiamo quindi esprimere c( x ) come lo
spostamento di x − bit a sinistra di una certa word. Analogamente per c−1 ( x ).
Nella Figura 19 è mostrata la procedura di rilevamento dell’errore.
Figura 19: Rilevazione di errori nell’ALU con RESO
Come primo passo le word sono sommate (se l’operazione è la somma) in modo normale; mentre il risultato prodotto dall’ALU viene memorizzato nel registro
con una traslazione a sinistra.
Il secondo passo consiste nel traslare a sinistra entrambe le word destinate all’ALU e confrontare il risultato ottenuto direttamente con il registro. Una disuguaglianza produce un errore.
Quando vengono traslati a sinistra k − bit di una word di n − bit, i k − bit più
5
Ridondanza temporale
43
significativi vengono persi. Per fare restare integre le computazioni successive
l’ALU deve gestire word di (n + k ) − bit.
Un esempio di rilevazione: A = 010, B = 011, l’operazione dell’ALU è la somma.
1 Primo passo: somma delle due word A e B (vedi Tabella 15). Il risultato
prodotto dall’ALU viene salvato nel registro una traslazione a sinistra c( A)
(left shift).
Shifter A
0 1 0 +
Shifter B
0 1 1
Risultato ALU 1 0 1
c( A)
0
1
0
⇐1bit
Tabella 15: Somma senza traslazioni e salvataggio traslato.
2 Secondo passo: compio la traslazione degli operatori (word) A e B quindi
c( A) = 100, c( B) = 110 (vedi Tabella 16). Il risultato prodotto dall’ALU:
010 sarà confrontato con il precedente risultato (c( A)) salvato nel registro
durante la prima computazione. In questo caso i risultati coincidono.
Shifter A
1 0 0 +
Shifter B
1 1 0
Risultato ALU 0 1 0
Tabella 16: Somma con traslazioni per il confronto.
In alcune versioni l’uso delle traslazioni avviene in maniera differente come in
[Sub91]. Dove il risultato da confrontare è ottenuto con una traslazione a destra.
La tecnica presentata sopra, è chiamata anche RESO-1, il numero indica l’ampiezza della traslazione, in questo caso di un bit. In circuiti più complessi è possibile
utilizzare RESO-k. Esiste inoltre una modifica a questa tecnica: recomputing with
rotated operands la quale cerca di ottimizzare l’operazione di shift [PF82, pag. 594].
RESO - Pregi e difetti della tecnica. In questo paragrafo sono descritti i
pregi e difetti di questa tecnica, prendendo in esame le considerazioni fatte nella
sezione corrente.
L’obiettivo di questa tecnica è quello di rilevare errori dovuti alla perdita di informazione (bit). In genere questa tecnica è impiegata nelle ALU.
• Le performance dell’ALU calano a seguito dell’introduzione di questa tecnica.
44
5
Ridondanza temporale
• È possibile utilizzare un numero k di traslazioni.
• Esistono performance differenti a seconda della scelta dell’algoritmo di traslazione/rotazione.
• Altre tecniche che sfruttano il medesimo principio ad esempio RESWO (REcomputing with SWapped Operands), REDWC (REcomputing With Duplication
and Comparison).
5.3
Controllo temporale (watchdog timers)
Il Controllo temporale o watchdog timer è una tecnica poco costosa in termini di
ciruiteria per la rilevazione degli errori. Con questa tecnica si vuole monitorare
un processo, il timer che controllerà questo processo è separato dal processo stesso. Se il timer viene impostato con una certa durata e questa scade, il processo
viene considerato fallito.
Questa tecnica può essere implementata via hardware o software [SS82, pag. 110112].
Watchdog timer - Pregi e difetti della tecnica. In questo paragrafo sono
descritti i pregi e difetti di questa tecnica, prendendo in esame le considerazioni
fatte nella sezione corrente.
L’obiettivo di questa tecnica è quello di rilevare errori nel processo controllato.
• È possibile controllare solo processi deterministici. Se la durata della computazione del processo maggiore del limite di scadenza del timer, il processo verrà ritenuto fallito.
• Watchdog timer indica soltanto un possibile errore. La copertura degli errori è limitata, nessun controllo viene effettuato sul valore di uscita (output)
del processo controllato, è difficile scoprire errori permanenti.
• Il watchdog timer controlla lo stato di un processo, non l’errore.
• Viene usato spesso in altre tecniche di ridondanza temporale.
5
Ridondanza temporale
45
Bibliografia
[PF82] J. H. Patel and L. Y. Fung. Concurrent error detection in ALU’s by recomputing with shifted operands. Transactions on Computers, 31(7):589–595,
July 1982.
[RM78] D. A. Reynolds and G. Metze. Fault detection capabilities of alternating
logic. IEEE Transactions on Computers, 27(12):1093–1098, December 1978.
[Sho02] Martin L. Shooman. Reliability of Computer Systems and Networks: Fault
Tolerance,Analysis,and Design. John Wiley & Sons, Inc., New York, NY,
USA, 2002.
[SS82] Daniel Siewiorek and Robert Swarz. Reliable Computer Systems: Design
and Evaluation. Digital Press, 1982.
[Sub91] W. V. Subbarao. Fault tolerant digital system design. In Southeastcon ’91.,
IEEE Proceedings of, pages 124–128, Williamsburg, VA, April 1991.
.
A
Concetti di probabilità e statistica
A
47
Concetti di probabilità e statistica
In questa appendice sono riportati alcuni richiami a concetti di statistica, affidabilità dei sistemi e teoria dei codici.
A.1
MTTF
MTTF o tempo di fallimento è quel lasso di tempo nel quale un sistema opera prima di avere un guasto. In (19) viene mostrato com’è possibile calcolare tale valore
conoscendo la distribuzione di fallimento del componente [Sho02, pag. 435-437].
MTTF =
Z ∞
R(t)dt.
0
A.2
(19)
MTTR
MTTR o tempo di riparazione è una media del tempo necessario alla riparazione
del componente. Questo valore è difficile da stimare, in genere viene approssimato in via sperimentale. In (20) è mostrata la possibile computazione nel caso di N
componenti identici con i componenti da riparare. Comunemente questo valore
è specificato con µ, il tasso di riparazione [HHJKH02, pag. 441].
N
∑ ti
MTTR =
A.3
i =1
N
=
1
.
µ
(20)
Codice
Un codice binario di lunghezza n è un insieme di n-tuple che soddisfano alcune
regole ben definite. Ad esempio, un codice di parità pari sarà composto da tutte
le n-tuple che contengono un numero pari di ’1’.
L’insieme Bn = {0, 1}n di tutte le possibili 2n combinazioni di n-tuple è chiamato
spazio di codifica (codespace).
Un codice viene indicato come: (n, k; q) dove n rappresenta la lunghezza dei bit
di dati più i check bit n = k + r se r sono i check bit, k rappresenta i bit di dati, q rappresenta il numero di elementi del campo considerato, nel caso binario:
’2’. Quando si considerano codici binari in genere un codice viene indicato come
(n, k).
Una codeword è un elemento dell’insieme dello spazio di codifica che soddisfa le
regole del codice.
Il numero di codeword in un codice C è chiamato dimensione di C, definito come:
| C |.
A
48
A.4
Concetti di probabilità e statistica
Probabilità d’errore
Per calcolare la probabilità di non rilevamento di un errore pue , è necessario definire un modello di probabilità che descriva il canale di trasmissione. Assumiamo
che ogni simbolo sia trasmesso con la probabilità (1 − e) di arrivare correttamente
a destinazione; e con una probabilità e/(q − 1) di essere trasformato in una delle
possibili q − 1 combinazioni possibili.
Nello scenario descritto, la probabilità che una word ricevuta sia differisca di e
posizioni rispetto a quella trasmessa, è mostrata in (21).
e
n
e
n e
e
n−e
( q − 1)
(1 − e )
=
e (1 − e ) n − e .
(21)
e
q−1
e
Nel caso e = (q − 1)/q, ogni simbolo q viene ricevuto con la stessa probabilità. Il
valore di e viene considerato come: e ≤ (q − 1)/q.
Per un dato codice (n, k; q) e un certo valore di e è possibile definire la probabilità
di non rilevare un errore pue [WML82].
A.5
Codifica
La codifica è un processo di trasformazione di un certo dato k-tuple in una codeword, con le regole del codice utilizzato per la codifica.
Nel caso della parità, se la parità è dispari, un bit sarà aggiunto alla fine delle
k-tuple. La differenza n − k, dove n rappresenta la lunghezza della codeword
mentre k la lunghezza dei bit aggiunti chiamati check bit .
I codici separabili sono tali quando è possibile separare in modo chiaro la codeword dai check bit. Al contrario i codici si dicono non separabili, come ad
esempio il CRC.
A.6
Tasso di informazione
Il rapporto nk è chiamato tasso di informazione di un codice. Questo tasso determina la ridondanza di un codice.
A.7
Decodifica
La decodifica è il processo inverso della codifica, data una codeword ricevuta
restituisce i dati usando le regole del codice scelto.
A.8
Distanza di Hamming
La distanza di Hamming tra due tuple binarie, x e y, definita come δ( x, y), è il
numero di bit differenti tra le due tuple. Ad esempio x = 0011 e y = 0101 allora
δ = ( x, y) = 2.
A
Concetti di probabilità e statistica
A.9
49
Efficienza del codice
Al fine di ottenere una valutazione del codice sono stati adottati alcuni criteri
[Dub07, pag. 76].
1. La capacità del codice di essere fault tolerant a seconda di quanto riesca
a rilevare e correggere gli errori. Un codice binario è definito buono se la
pue ≤ q−(n−k) [Per91, LYCBF79, LYCH76].
2. Tasso di informazione nk , la quantità di informazione ridondante aggiuntiva
ai dati.
3. La complessità degli algoritmi di codifica e decodifica, quindi la complessità dell’hardware necessario.
A.10
Esponenziale negativa
Questa tipologia di distribuzioni serve a descrivere l’affidabilità dei sistemi, senza
memoria. L’esponenziale negativa normalizzata, è mostrata nella (22):
f (t) = λe−λt
(22)
dove t, rappresenta il tempo, e λ, è una costante caratteristica che rappresenta il
rischio istantaneo di fallimento [Sho02, pag. 397-399].
Una rappresentazione grafica della densità dell’esponenziale negativa con λ =
0.5; 1.0; 1.5, è mostrata in Figura 20 a Pagina 49.
Figura 20: Distribuzione esponenziale negativa
A
50
A.11
Concetti di probabilità e statistica
Binomiale
Mentre l’esponenziale negativa è una distribuzione di attesa, la binomiale è una
distribuzione di conteggio [Sho02, pag. 393-394].
Figura 21: Binomiale
La sua formula generale è riportata in (23).
n k n−k
B(k |n, p) =
p q ,
k
(23)
dove k rappresenta il verificarsi di un certo evento, n rappresenta il numero di
tentativi, p, rappresenta la probabilità che si verifichi l’evento k.
Quando il numero di tentativi n è molto alto e la probabilità che si verifichi un
evento k è molto bassa, questa distribuzione viene approssimata alla Poissoniana
riportata in (24)
P(k|µ) =
µk −µ
e
k!
quando n → ∞; p → 0;
(24)
dove µ viene rappresentato come np ma con 0 < np < ∞ cioè con baricentro
finito.
Nella Figura 21 a Pagina 50, viene mostrata una distribuzione binomiale con n =
10 e p = 0.5.
A
Concetti di probabilità e statistica
A.12
51
Matrice trasposta
Data una matrice A = ( ai,j )i=1,...,m , la sua trasposta A T è definita come: A T =
j=1,...,n
( a j,i ) j=1,...,n , ovvero la matrice che ha per colonne le righe della matrice originale
i =1,...,m
A. Un esempio in (25).

A1,1 A1,2

A = A2,1 A2,2
A3,1 A3,2

A1,3
A2,3  .
A3,3

A1,1
T

A = A1,2
A1,3
A2,1
A2,2
A2,3

A3,1
A3,2  .
A3,3
(25)
Bibliografia
[Dub07] Elena Dubrova. Fault tolerant design: an introduction. Kluwer
Acedemic Publischer, http://web.it.kth.se/~elena/draft.pdf,
2007.
[HHJKH02] Kim Hyunki, Jeon Hyung-Joon, Lee Keyseo, and Lee Hyuntae.
The design and evaluation of all voting triple modular redundancy system. IEEE Proceedings Annual Reliability and Maintainability
Symposium, 2002.
[LYCBF79] S. Leung-Yan-Cheong, E. Barnes, and D. Friedman. On some properties of the undetected error probability of linear codes (corresp.).
IEEE Transactions on Information Theory, 25(1):110–112, January 1979.
[LYCH76] S. Leung-Yan-Cheong and M. Hellman. Concerning a bound on undetected error probability (corresp.). IEEE Transactions on Information
Theory, 22(2):235–237, March 1976.
[Per91] P. Perry. Necessary conditions for good error detection. IEEE
Transactions on Information Theory, 37(2):375–378, March 1991.
[Sho02] Martin L. Shooman. Reliability of Computer Systems and Networks:
Fault Tolerance,Analysis,and Design. John Wiley & Sons, Inc., New
York, NY, USA, 2002.
[WML82] J. Wolf, A. Michelson, and A. Levesque. On the probability of undetected error for linear block codes. Communications, IEEE Transactions
on [legacy, pre - 1988], 30(2):317–325, February 1982.
Indice analitico
destinatario . . . . . . . . . . . . . . . . . . . . . . . . . 8
Simboli
2-su-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 destinazione . . . . . . . . . . . . . . . . . . . . . . . 12
digitali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
A
discipline . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
affidabilità . . . . . . . . . . . . . . . . . . . 8, 34, 53 distanza di Hamming . . . . . . . . . . . . . . 24
alternating logic . . . . . . . . . . . . . . . . . . . 43 distribuzioni . . . . . . . . . . . . . . . . . . . . . . . 53
ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 46 doppia precisione . . . . . . . . . . . . . . . . . . 19
archiviazione . . . . . . . . . . . . . . . . . . . . . . . 7 doppio errore . . . . . . . . . . . . . . . . . . . . . . 28
attesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Duplication and comparison . . . . . . . 40
Attiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 duplicazione . . . . . . . . . . . . . . . . . . . . . . 40
duplicazione e confronto . . . . . . . . . . . 34
B
binarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 E
binomiale . . . . . . . . . . . . . . . . . . . . . . . . . 54 EDVAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
bit . . . . . . . . . . . . . . . . . . . . . . . . . . 12, 20, 24 efficienza relativa . . . . . . . . . . . . . . . . . . 27
bit di parità . . . . . . . . . . . . . . . . . . . . . 9, 12 error magnitude . . . . . . . . . . . . . . . . . . . 32
bit-slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Errore mascherato . . . . . . . . . . . . . . . . . 10
blocco trasmesso . . . . . . . . . . . . . . . . . . . 19 errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
business-critical . . . . . . . . . . . . . . . . . . . . . 8 esponenziale . . . . . . . . . . . . . . . . . . . . . . 53
evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
C
extra components . . . . . . . . . . . . . . . . . . . 9
C.mmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 extra information . . . . . . . . . . . . . . . . . . . 9
canale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 extra time . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
check bit . . . . . . . . . . . . . . . . 20, 24, 51, 52
chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 F
cifra binaria . . . . . . . . . . . . . . . . . . . . . . . . . 9 fallimento . . . . . . . . . . . . . . . . . . 41, 51, 53
circuiti logici . . . . . . . . . . . . . . . . . . . . . . 35 fault avoidance . . . . . . . . . . . . . . . . . . . . . 9
coda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Fault confinement . . . . . . . . . . . . . . . . . . 9
codespace . . . . . . . . . . . . . . . . . . . . . . . . . 51 Fault detection . . . . . . . . . . . . . . . . . . . . . . 9
codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Fault masking . . . . . . . . . . . . . . . . . . . . . 10
codici . . . . . . . . . . . . . . . . . . . . . . . . . . 27, 51 fault tolerance . . . . . . . . . . . . . . . . . . . . . . 9
codifica . . . . . . . . . . . . . . . . . . . . . . . . 12, 19 fautl tolerant . . . . . . . . . . . . . . . . . . . . . . 53
combinazioni . . . . . . . . . . . . . . . . . . . . . . 51 flip flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
componente . . . . . . . . . . . . . . . . . . . . 35, 51
comunicazione . . . . . . . . . . . . . . . . . . . . . 8
conteggio . . . . . . . . . . . . . . . . . . . . . . . . . . 54
copie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
costo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
G
guasti . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 34
H
Hamming . . . . . . . . . . . . . . . . . . . . . . . . . 24
hardware . . . . . . . . . . . . . . . . . . . . . . 34, 41
D
decodifica . . . . . . . . . . . . . . . . . . . . . . 12, 27 I
Indice analitico
53
Ibrida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
IC chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
integrità . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
invarianti . . . . . . . . . . . . . . . . . . . . . . . . . . 30
L
lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 8
limitare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Reintegration . . . . . . . . . . . . . . . . . . . . . . 10
reliability . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Repair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
replication check . . . . . . . . . . . . . . . . . . . 40
RESO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
RESO-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
restorin gorgan . . . . . . . . . . . . . . . . . . . . 35
RESWO . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ridondanza . . . . . . . . . . . . . . . . . . . . . . 8, 12
ridondanza d’informazione . . . . . . . . . 9
ridondanza di componenti . . . . . . . . . . 9
ridondanza di tempo . . . . . . . . . . . . . . . 9
ridondanza modulare tripla . . . . . . . . 34
riparazione . . . . . . . . . . . . . . . . . . . . . . . . 51
ripetizioni . . . . . . . . . . . . . . . . . . . . . . . . . 35
rischio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
M
malfunzionamenti . . . . . . . . . . . . . . . . . 34
masking error . . . . . . . . . . . . . . . . . . . . . 18
memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 34
messaggio . . . . . . . . . . . . . . . . . . . . . . . 8, 35
mission-critical . . . . . . . . . . . . . . . . . . . . . 8
moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
modulo-2 . . . . . . . . . . . . . . . . . . . . . . . . . . 24
MTTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
MTTF . . . . . . . . . . . . . . . . . . . . . . . 10, 35, 51
MTTR . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 51 S
safety-critical . . . . . . . . . . . . . . . . . . . . . . . 8
N
scambia e confronta . . . . . . . . . . . . . . . . 40
NMR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
non separabili . . . . . . . . . . . . . . . . . . . . . 30
SEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
separabile . . . . . . . . . . . . . . . . . . . . . . . . . 17
O
off-line detection . . . . . . . . . . . . . . . . . . . . 9 separabili . . . . . . . . . . . . . . . . . . . . . . . . . . 30
on-line detection . . . . . . . . . . . . . . . . . . . 10 shifted operand . . . . . . . . . . . . . . . . . . . . 43
operandi . . . . . . . . . . . . . . . . . . . . . . . . . . 30 sindrome . . . . . . . . . . . . . . . . . . . . . . . . . . 24
output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 sindrome di Hamming . . . . . . . . . . . . . 24
singolo errore . . . . . . . . . . . . . . . . . . 20, 28
sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
P
parallelo . . . . . . . . . . . . . . . . . . . . . . . 27, 40 sistema digitale . . . . . . . . . . . . . . . . . . . . . 9
Passiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 software . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Poissoniana . . . . . . . . . . . . . . . . . . . . . . . . 54 somma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
porte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 sorgente . . . . . . . . . . . . . . . . . . . . . . . . . 8, 12
precisione singola . . . . . . . . . . . . . . . . . 20 spazio di codifica . . . . . . . . . . . . . . . . . . 51
prestazioni . . . . . . . . . . . . . . . . . . . . . . . . 12 stimare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
punto di fallimento . . . . . . . . . . . . . . . . 41 swapped operands . . . . . . . . . . . . . . . . 43
R
Reconfiguration . . . . . . . . . . . . . . . . . . .
Recovery . . . . . . . . . . . . . . . . . . . . . . . . . .
REDWC . . . . . . . . . . . . . . . . . . . . . . . . . . .
registro . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
10
48
34
T
tasso di informazione . . . . . . . . . . . . . . 25
tassonomia . . . . . . . . . . . . . . . . . . . . . . . . . 8
tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
tentativi . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Indice analitico
54
theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
TMR . . . . . . . . . . . . . . . . . . . . . . . . . . . 34, 35
trasmissioni . . . . . . . . . . . . . . . . . . . . . . . 34
trasposta . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Triple-duplex . . . . . . . . . . . . . . . . . . . . . . 34
tuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
U
UNIVAC . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
upper bound . . . . . . . . . . . . . . . . . . . . . . 28
V
versioni . . . . . . . . . . . . . . . . . . . . . . . . . . .
violazione . . . . . . . . . . . . . . . . . . . . . . . . .
VLSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
voto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
voto di maggioranza . . . . . . . . . . . . . . .
47
28
40
34
34
W
word . . . . . . . . . . . . . . . . . . . . . . . . . . . 12, 27
X
XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . 13, 41