Tecniche di progettazione Fault Tolerant Per il progetto di circuiti in grado di rilevare/correggere errori causati dai guasti si fa uso della ridondanza. La ridondanza può essere di diversi tipi: Ridondanza Hardware: si aggiungono dei blocchi logici in grado di rilevare e/o correggere gli errori Ridondanza delle informazioni: si aggiungono delle informazioni che non sono necessarie durante il funzionamento del sistema ma che sono utili per recuperare a partire da informazioni errate le informazioni corrette. Ridondanza temporale: nel caso sia stato rilevato un errore le operazioni possono essere ripetute
Ridondanza Hardware: sistemi TMR Un sistema TMR (Triple Modular Redundancy) consente di mascherare l'effetto di un guasto L'overhead di un sistema TMR è > 200% L'affidabilità del sistema dipende dal Voter. Se Rv=1 M V M
Ridondanza Hardware: sistemi TMR V Se non posso trascurare l'affidabilità del voter posso utilizzare un sistema con 3 Voter Possono essere utilizzati in cascata la funzione logica di un voter è: f=ab+ac+bc M1 V M2
Posso utilizzare una struttura detta self- checking On-line testing Per rilevare il corretto funzionamento di un circuito durante il suo funzionamento posso utilizzare 2 moduli identici ed un comparatore oppure Posso utilizzare una struttura detta self- checking output M C Good/Fail M Encoded input Encoded output M Checker Error Indicator
Totally self-checking circuits Un circuito è detto TSC (Totally Self-Checking) se: È Fault secure: per ogni codeword in ingresso ogni guasto produce in uscita una parola non di codice, o non produce errori È Self-testing: per ogni guasto esiste almeno una parola di codice in ingresso che produce in uscita una parola non di codice. (consente di l'ipotesi di guasto singolo) Il checker: Determina se la parola al suo ingresso è una parola di codice Rileva i guasti al suo interno
il checker two-rail è fault-secure ed è self-testing Two-rail checker Un checker two-rail controlla se i sui ingressi X=xn..x0 e Y=yn..y0 sono tali che xi =not(yi) il checker two-rail è fault-secure ed è self-testing f fd 0 0 errore 0 1 OK 1 0 OK 1 1 errore
Ridondanza delle informazioni: codici a rilevazione/correzione di errore Un codice binario C di lunghezza n è un insieme di n bit che soddisfa alcune regole Una Codeword è un elemento dell'insieme (soddisfa le regole del codice) Una word è una n-pla che non fa parte del codice Le codeword sono un sottoinsieme di tutte le 2n possibili combinazioni. IL numero di parole appartenenti al codice C è detto size di C
Codici a rilevazione di errore: il codice di parità Il codice di parità aggiunge un bit di informazione: Per i codici a parità odd: il numero di 1 della codeword è dispari Per i codici a parità even: il numero di 1 della codeword è pari Rileva un bit errato in qualunque posizione della codeword Può essere utilizzato nelle memorie:
Generazione e controllo del codice di parità
Codici a correzione di errore: il codice di Hamming Il codice di Hamming permette di correggere un bit errato nella codeword Puo essere realizzato come la sovrapposizione di diversi codici di parità P2 P1 P0 Errato 0 0 0 OK 0 0 1 P0 0 1 0 P1 1 0 0 P2 0 1 1 D0 1 0 1 D1 1 1 0 D2 1 1 1 D3