Università degli Studi di Padova Dipartimento di Ingegneria dell'Informazione Corso di Laurea Magistrale in Ingegneria Elettronica Microprocessori e circuiti digitali: Eetti dovuti alle radiazioni e Soft Errors Docente: Studente: Daniele Rucatti prof. Andrea Candelori Anno accademico 2011/2012 Indice 1 Richiami sui microprocessori 1 1.1 Architettura ed Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Incremento delle prestazioni: Pipelines e Cache . . . . . . . . . . . . . . . 4 1.3 Elementi sequenziali: Latch e Flip-Flop . . . . . . . . . . . . . . . . . . . . 8 1.3.1 Latch (tipo D) 9 1.3.2 Flip-Flop (tipo D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 Microprocessori Rad Hard 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Eetti delle Radiazioni 15 2.1 Total Ionizing Dose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Raccolta di carica alla giunzione e ITC . . . . . . . . . . . . . . . . . . . . 19 2.3 Single Event Upset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.1 SEL (Single Event Latchup) . . . . . . . . . . . . . . . . . . . . . . 21 2.3.2 SET e SEU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.3 SEFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3 Tecniche Di Hardening: mitigazione e correzione degli errori 3.1 Mitigazione degli eetti dovuti alla Total Ionizing Dose . . . . . . . . . . . 3.2 Tecniche a livello di Transistor e Tecnologia 3.3 Tecniche a livello elettrico e di Layout 3.4 3.5 29 30 . . . . . . . . . . . . . . . . . 32 . . . . . . . . . . . . . . . . . . . . 33 3.3.1 Celle di memoria Rad Hard mediante resistori . . . . . . . . . . . . 33 3.3.2 Disposizione disallineata e distanziata degli elementi di memoria . . 35 3.3.3 Circuito di Sensing per i SET . . . . . . . . . . . . . . . . . . . . . 35 Tecniche a livello logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4.1 Duplicazione e Comparazione 37 3.4.2 Triple Modular Redundancy (TMR) . . . . . . . . . . . . . . . . . 3.4.3 Triple Temporal Redundancy (TTR) . . . . . . . . . . . . . . . . . 3.4.4 Tecniche Miste: Ridondanza hardware e temporale Tecniche a livello di Architettura 3.5.1 . . . . . . . . . . . . . . . . . . . . . 37 40 . . . . . . . . . 42 . . . . . . . . . . . . . . . . . . . . . . . 44 . . . . . . . . . . . . . 45 3.6 Tecniche a livello di Sistema (o Chip) . . . . . . . . . . . . . . . . . . . . . Parity Bit ed Error Correcting Code (ECC) 49 3.7 Tecniche a livello Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4 Conclusioni 51 Capitolo 1 Richiami sui microprocessori Per studiare l'eetto delle radiazioni su componenti elettronici complessi come Microprocessori e microcontrollori è necessario conoscere di quali elementi sono composti e la loro architettura: la sensibilità alle radiazioni infatti non dipende solo dalla resistenza dei transistor e dal layout dei dispositivi fondamentali (SRAM, Flip Flop...) ma anche dalle scelte progettuali a livello di sistema. Gli elementi che compongono un microcontrollore o un microprocessore sono molti: non vi è di solito solo una CPU ma anche altre periferiche. Ad esempio è comune trovare nei moderni microcontrollori unità di conversione analogico-digitale (ADC), Timers, Unità di comunicazione operanti con i più disparati protocolli (I2C, seriale, CAN...), memorie EEPROM non volatili, eccetera. Ogni componente andrebbe studiato singolarmente: le radiazioni possono minare al funzionamento di ogni periferica, si pensi ad esempio alla corruzione dei dati immagazzinati in una EEPROM (potrebbe essere usata come memoria temporanea per i dati da trasmettere a terra di un satellite...). Anche componenti come gli ADC possono essere inuenzati: il loro funzionamento in genere si basa sul campionamento di una tensione in ingresso, tensione che può essere alterata a causa dell'impatto di particelle sul dispositivo. In questo scritto ci si focalizzerà sulla CPU e sugli eetti che la radiazione provoca nell'elettronica combinatoria e sequenziale al suo interno, in particolare l'inuenza che ha la radiazione sul Data Path (operazioni ALU, dati in memoria). 1 CAPITOLO 1. 2 RICHIAMI SUI MICROPROCESSORI 1.1 Architettura ed Instruction Set L'architettura di una generica CPU è rappresentata in gura. I principali elementi che la compongono sono: L'unità aritmetico-logica (ALU), che si occupa di eseguire le operazioni matematiche (somme, sottrazioni...) e logiche (and, or...). La radiazione può incidere sul funzionamento dell'ALU, segnali spuri possono propagarsi nel circuito alterando il risultato prodotto dall'ALU. Tale risultato può essere immagazzinato quindi in un registro e compromettere il funzionamento del processore nelle successive istruzioni. I registri di controllo e di stato, ad esempio il Program Counter (PC) contiene l'indirizzo della locazione di memoria dell'istruzione successiva a quella correntemente in esecuzione, L'Instruction Register (IR) contiene l'istruzione caricata dalla memoria, lo Status Register (SR) contiene informazioni sul corrente stato della CPU e delle operazioni dell'ALU. I dati possono essere letti dalla memoria attraverso i registri Memory Adress Register e memory Data Register. Esistono due tipi di architetture per quanto riguarda la gestione della memoria: Architettura Von Neumann: vi è un'unica memoria contenente sia le istruzioni che i dati, in questo caso l'accesso alla memoria non può essere simultaneo per il fetch dell'istruzione ed il load/store degli operandi. Architettura Harward: vi sono due memorie, una per le istruzioni ed una per i dati. La memoria interna al processore è una memoria SRAM veloce, che può subire dei Bit-Upset a causa della radiazione. Anche i registri, che sono composti da Flip-Flop possono subire degli Upset. La realizzazione di elementi di memoria resistenti alle radiazioni è quindi di primaria importanza per le CPU. Registri interni al processore, contenenti i dati sui quali la ALU deve operare. Sono costituiti da Flip-Flop. 1.1. ARCHITETTURA ED INSTRUCTION SET 3 L'unità di controllo (CU) è costituita da una macchina a stati che governa l'intero Data Path, ovvero il passaggio di dati dalla memoria ai registri, l'esecuzione delle operazioni con l'ALU, eccetera. L'unità di controllo deve operare correttamente, altrimenti l'intero funzionamento del processore viene compromesso. le operazioni che la CU esegue sono essenzialmente: Fetch dell'istruzione: viene caricata dalla memoria l'istruzione da eseguire, l'istruzione è caricata nell'IR. L'istruzione è codicata secondo una particolare codice denito dall'Instruction Set del processore. Le istruzioni dipendono dall'architettura del processore, si possono distinguere due categorie di processori a tal proposito: * Processori CISC (Complex Instruction Set Computer), in questo caso le istruzioni sono complesse e generalmente di lunghezza (numero bytes) variabile a seconda del tipo di istruzione. Istruzione complessa signica che usa singola istruzione può eettuare operazioni multiple (ad esempio caricare dati dalla memoria ed eseguire direttamente operazioni su di essi) oppure operazioni dedicate (ad esempio la FFT hardware). Un esempio sono le istruzioni dell'architettura X86. Per la decodica e l'esecuzione delle istruzioni CISC serve una macchina a stati più complessa o una sottounità di controllo per eseguire le sotto-istruzioni (più semplici) associate all'istruzione CISC (macro-istruzione). Il numero di cicli di clock richiesti da una generica istruzione è quindi variabile e di solito elevato, non è possibile stabilire a priori esattamente il tempo richiesto dall'esecuzione di un programma se non analizzandolo nel dettaglio, architettura del processore alla mano. * Processori RISC (Reduced Instruction Set Computer), in questo caso le istruzioni sono semplici e limitate, di lunghezza ssa con dimensione dei campi variabile (tranne l'opcode che è sempre sso). I processori RISC hanno un'unità di controllo più semplice rispetto ai CISC, quindi vi sono meno probabilità di malfunzionamenti. I microcontrollori PIC ad esempio utilizzano questa architettura. CAPITOLO 1. 4 RICHIAMI SUI MICROPROCESSORI 1.2 Incremento delle prestazioni: Pipelines e Cache I moderni processori possono adottare anche pipelines, memoria cache e core multipli per aumentare la velocità di elaborazione dei dati senza aumentare la frequenza: i modi per aumentare la velocità di un processore sono infatti due, aumentare la frequenza operativa, oppure rendere l'elaborazione dei dati più eciente cambiando l'architettura. La frequenza non può essere alzata arbitrariamente in quanto vi sono dei limiti sici imposti dal dispositivo: tempi di propagazione, consumo di potenza. Inoltre per quanto riguarda dispositivi resistenti alle radiazioni, si vedrà, la frequenza operativa risulta essere molto bassa. Modiche all'architettura per aumentare le prestazioni possono essere: Introduzione di Pipelines (parallelismo interno). Le pipelines sono degli elementi di memoria costituiti da ip-op (dei registri) che vengono inseriti nel data path al ne di creare una sorta di parallelismo nell'elaborazione delle istruzioni. Il concetto è semplice ed è simile a quello di catena di montaggio: quello che si cerca di fare è di sfruttare completamente l'hardware della CPU eseguendo il fetch di un'istruzione nel mentre una seconda viene decodicata ed una terza è eseguita. Per fare questo bisogna rendere sincroni i vari step che descrivono le operazioni fondamentali (fetch, decode, execute, memory, write back), e lo si fa usando le pipelines. Si veda la seguente immagine Nel caso senza pipeline viene eseguito il fetch di un'istruzione, la decodica, l'operazione con l'ALU e quindi lo store del dato o il write back in un registro del processore. Prima che venga eseguito il fetch di una seconda istruzione si deve attendere che l'esecuzione della prima sia terminato, questo lascia parte dell'hardware del processore inutilizzato: mentre viene eseguito il calcolo con l'ALU ad esempio il circuito di decodica non sta facendo niente. Ogni istruzione richiede alcuni cicli di clock. Utilizzando le pipeline invece è possibile ottimizzare l'uso del processore, si cerca di sfruttare ogni ciclo di clock. 1.2. INCREMENTO DELLE PRESTAZIONI: PIPELINES E CACHE 5 Con l'uso delle pipeline possono sorgere dei problemi gestionali quando ad esempio un'istruzione deve eseguire delle operazioni sul risultato di una precedente operazione: in questo caso si deve attendere che l'istruzione nisca, il processore deve essere messo in stallo. Questo rende inecace l'uso della pipeline per l'istruzione corrente (si pensi ad esempio ad un ciclo for). Per risolvere il problema si può pensare di passare i dati direttamente alla pipeline precedente (data fowarding), come illustrato nella seguente gura. Questo rende l'unità di decodica e controllo più complessa. Il periodo di clock deve essere compatibile con la presenza delle pipeline, ovvero deve essere sucientemente lungo anché i segnali possano propagarsi nella logica combinatoria ed essere correttamente campionati dai ip-op delle pipeline. I segnali devono essere stabili per un tempo thold tsetup prima del fronte di clock e per un tempo dopo il fronte di clock anché i dati possano essere correttamente memorizzati nel registro. Il tempo che passa dal fronte di clock all'eettiva comparsa dei dati in tclk2q . + tclk2q . uscita al registro, ovvero il tempo di propagazione del registro, è indicato con Complessivamente si parla di tempo morto considerando la somma Ridurre i tempi morti permette clock più veloci. tsetup CAPITOLO 1. 6 RICHIAMI SUI MICROPROCESSORI Utilizzo di Core multipli, ovvero più unità di elaborazione: le istruzioni vengono suddivise tra le due CPU. Per rendere ecienti sistemi di questo tipo è necessaria anche un'ottimizzazione a livello software, ovvero bisogna pensare in multithread. Gerarchia nella memoria: memoria Cache. Di solito i processori non accedono direttamente alla memoria principale, ma ad una memoria interna veloce (SRAM) chiamata Cache (questo viene fatto per ridurre la latenza nel fetch delle istruzioni e nel load dei dati). Possono esistere più livelli di cache, anche condivisa tra più core. La cache può anche essere divisa tra cache istruzioni e cache dati. Quando il processore deve accedere ad un indirizzo della memoria principale (per caricare un'istruzione o eettuare operazioni sui dati) viene prima vericato se il dato/istruzione corrispondente all'indirizzo cercato è già immagazzinato nella memoria cache, in tal caso il caricamento nei registri interni del processore è rapidissimo (HIT). In caso contrario l'unità di controllo mette in stallo la CPU ed il dato/istruzione viene caricato dalla memoria principale (più lenta) alla memoria cache ed il processore può proseguire nelle operazioni (MISS). Se vi sono più livelli di cache, in caso di MISS viene cercato il dato nel livello di cache sottostante, che a sua volta può dare luogo ad un HIT oppure un MISS, no al livello di memoria più basso. L'accesso ad una memoria che si trova ad un livello gerarchico più basso richiede tempo e quindi diversi cicli di clock. Per rendere la cache ecace ci si basa su due principi, il principio di località spaziale ed il principio di località temporale: Località spaziale signica che verranno caricati nella cache istruzioni o dati corrispondenti ad indirizzi di memoria (principale) contigui. I beneci di questa scelta si vedono ad esempio quando si hanno programmi composti da cicli che eseguono istruzioni adiacenti, oppure quando vengono letti elementi consecutivi di un array. Località temporale signica che verranno caricati in cache istruzioni o dati che si usano frequentemente, i cicli rientrano ancora in questo caso. 1.2. INCREMENTO DELLE PRESTAZIONI: PIPELINES E CACHE 7 Le memorie cache sono costituite da parole suddivise nei seguenti campi: Campo Tag, contiene una parte dell'indirizzo della locazione della memoria principale alla quale si vuole accedere Campo Data, contenente il dato o l'istruzione Dall'indirizzo di memoria al quale si vuole accedere vengono generati l'indirizzo della locazione nella cache, chiamato Set (che corrisponde ai bit meno signicativi dell'indirizzo reale) ed il Tag (corrispondente alla parte rimanente dell'indirizzo reale). Individuata la locazione nella cache viene confronto il Tag in memoria con quello ottenuto dall'indirizzo corrente, se corrispondono si ha un HIT: il campo Data contiene il dato che si sta cercando, ovvero quello che ci sarebbe nella memoria principale all'indirizzo cercato. Tale dato può essere direttamente caricato nei registri del processore. Considerando che vi sono molti indirizzi che hanno lo stesso Set è possibile il vericarsi di MISS, che si hanno appunto quando, identicata la cella cache con il Set, i Tag generato e memorizzato non corrispondono. In questo caso sono necessari diversi cicli di clock per salvare il dato attualmente in cache nel relativo indirizzo della memoria principale e consecutivamente caricare il dato del nuovo indirizzo in cache (entrambi gli indirizzi avevano lo stesso Set). Il funzionamento descritto corrisponde alla cosiddetta cache ad indirizzamento diretto, tuttavia per ridurre il numero di MISS si può utilizzare una cache set-associativa a due o più vie: in questo caso ad ogni Set corrispondono due (o più) parole di cache e quindi si hanno due Tag possibili, ognuno con il relativo Data. I campi Tag vengono confrontati simultaneamente con il Tag generato dall'indirizzo (vengono usati due comparatori) ed in caso di HIT viene prelevato il dato corrispondente (tramite multiplexer). Risulta evidente che in questo caso il numero di MISS che si possono vericare è più basso perché per ogni Set si hanno a disposizione due (o più) possibilità che la cache contenga proprio il dato corrispondente all'indirizzo cercato. Nella successiva gura vengono illustrate le cache ad indirizzamento diretto ed associativa a 2 vie. CAPITOLO 1. 8 RICHIAMI SUI MICROPROCESSORI Il funzionamento di una cache associativa a 2 vie è rappresentata nella seguente gura. Per aumentare il numero di HIT si può anche aumentare la dimensione del blocco dati della cache, ovvero anziché avere un solo campo Data per ogni Tag si possono avere più campi Data corrispondenti a parole adiacenti nella memoria principale (si sfrutta il concetto di località spaziale). In questo caso dall'indirizzo reale vengono generati una valore per identicare il campo Data corretto (Byte Oset) e come nel caso precedente un Set ed un Tag. La cache deve essere resistente agli errori (Single Event Upset), potrebbe vericarsi ad esempio il caso in cui il dato in cache venga corrotto a causa delle radiazioni, ovvero il dato dierisce da quello memorizzato nella memoria secondaria (o in un livello di cache sottostante). Se il dato errato viene utilizzato dal processore po- trebbe vericarsi un crash di sistema, magari non immediatamente ma anche dopo molte istruzioni. Anzi, il dato potrebbe essere trasferito alla memoria principale sovrascrivendo il precedente dato corretto. 1.3 Elementi sequenziali: Latch e Flip-Flop Per comprendere gli errori che la radiazione può provocare in una CPU si devono considerare i circuiti sequenziali (elementi di memoria) in essa presenti. Come si vedrà infatti sono proprio latch e ip-op, elementi costitutivi di registri, pipelines, macchine a stati, che costituiscono gli elementi sensibili in una CPU: essi sono in grado di campionare un segnale in ingresso e memorizzare il relativo valore logico quindi come si vedrà le cause principali di errore sono 2, il campionamento (e quindi la memorizzazione) di un segnale di ingresso alterato dalla radiazione (e quindi errato), oppure l'alterazione diretta del valore memorizzato (upset) analogamente a quanto può avvenire nelle celle SRAM. 1.3. ELEMENTI SEQUENZIALI: LATCH E FLIP-FLOP 1.3.1 9 Latch (tipo D) I latch sono dei dispositivi sincroni con un ingresso ed una uscita, la memorizzazione del dato è controllata da un segnale di clock. I latch sono sensibili ai livelli di clock, ovvero risultano trasparenti (propagazione del segnale in ingresso verso l'uscita) durante la fase alta del clock e risultano in condizione di memoria durante la fase bassa del clock (in uscita vi è il dato in memoria e sono insensibili all'ingresso). La condizione che determina il passaggio tra trasparenza e memoria è il fronte di discesa del clock: il dato deve essere stabile all'ingresso del latch anché venga correttamente memorizzato. Una tipica realizzazione dei Latch D in tecnologia CMOS è la realizzazione cosiddetta a multiplexer. A livello di transistor viene realizzata con pass transistor ed inverter CMOS, come illustrato nella seguente gura. I due inverter CMOS chiusi a feedback tramite il pass transistor si occupano della memorizzazione dell'informazione: quando il feedback è chiuso e l'ingresso è scollegato (pass transistor all'ingresso OFF) il circuito è in condizioni di memoria. Per memorizzare un nuovo valore viene aperto il feedback spegnendo il relativo pass transistor e contemporaneamente viene attivato il pass transistor all'ingresso: il dato passa in uscita e fa commutare le porte NOT del feedback (trasparenza). Per agire contemporaneamente sui pass transistor sono necessari un clock diretto ed uno negato, infatti i due pass transistor non devono mai trovarsi entrambi accesi o entrambi spenti. Quando il feedback viene ripristinato gli inverter sono di nuovo chiusi in loop con il nuovo dato in memoria. 10 CAPITOLO 1. RICHIAMI SUI MICROPROCESSORI Se a causa della radiazione uno dei due inverter in loop commutasse imponendo il valore logico opposto si avrebbe un Bit Upset ed il valore in memoria risulterebbe errato. Il principio non è diverso da quello studiato per le SRAM. 1.3.2 Flip-Flop (tipo D) I Flip-Flop sono dispositivi sincroni simili ai Latch, ma rispetto a questi ultimi eliminano il problema della trasparenza (ad il problema del Race) sul livello alto del clock, ovvero sono sensibili solo alla transizione (fronte, edge) del clock da basso ad alto o da alto a basso a seconda che il FF sia di tipo a logica diretta o logica inversa. Sia quando il clock è a livello alto che quando è a livello basso il FF si trova in condizioni di memorizzazione. Il Flip-Flop D può essere realizzato con due Latch D in congurazione Master-Slave, per questo motivo si parla generalmente di MSFF (Master Slave Flip Flop). I due Latch vengono collegati in cascata, ovvero l'uscita del primo costituisce l'ingresso per il secondo, l'ingresso del primo costituisce l'ingresso del FF, mentre l'uscita del secondo costituisce l'uscita del FF. Internamente viene portato il clock diretto al primo ed il clock negato al secondo: quando il clock è alto il primo latch è trasparente ed il dato in ingresso viene portato al nodo intermedio (X), quando il clock passa al livello basso il secondo latch diventa trasparente mentre il primo va in condizione di memoria. Il valore logico al nodo X è quindi sso e corrisponde al valore memorizzato nel primo Latch. Il valore di X corrisponde anche al valore in uscita perché il secondo Latch è trasparente. Il risultato è un campionamento sincrono ai fronti di clock, infatti per livelli alti di clock in uscita si ha il valore memorizzato nel secondo Latch (insensibilità all'ingresso), mentre per livelli bassi si ha in uscita il valore memorizzato nel primo Latch (ancora insensibilità all'ingresso). Di seguito è riportato uno schema che illustra quanto detto. 1.3. ELEMENTI SEQUENZIALI: LATCH E FLIP-FLOP 11 Una possibile realizzazione in logica CMOS è di seguito riportata: non è altro che l'unione dei due Latch costruiti mediante anello di feedback e pass-transistor. I tempi di setup ed hold per il segnale di ingresso al FF sono corrispondenti a quelli del primo Latch: è esso infatti che esegue il campionamento! Il secondo Latch si occupa del mantenimento del dato in uscita ed è responsabile del tempo di propagazione, ovvero dell'intervallo di tempo che intercorre tra il campionamento e la presenza del livello logico memorizzato sull'uscita del Flip Flop. Entrambi i Latch sono sensibili alle radiazioni, ovvero entrambi possono subire un Bit Upset mentre si trovano in condizioni di memorizzazione oppure possono campionare un segnale alterato (Transient). In quest'ultimo caso è suciente che il segnale alterato arrivi al Flip Flop in prossimità della commutazione (fronte di clock) perché venga campionato: verrebbe memorizzato un valore alterato. Se il segnale non è stabile entro il tempo e thold infatti non è garantita la corretta memorizzazione. tsetup 12 CAPITOLO 1. RICHIAMI SUI MICROPROCESSORI 1.4 SRAM La memoria SRAM non è altro che una matrice di celle di memoria, le quali sono singolarmente costituite da un Latch asincrono di tipo SR. Un decoder (decoder di riga) si occupa di selezionare una riga della matrice (Word Line) a seconda dell'indirizzo di memoria dato, i bit corrispondenti all'intera riga possono essere scritti o letti (Bit Line). Le memorie SRAM possono essere anche più complesse, ad esempio possono prevedere lettura e scrittura attraverso linee separate, come ad esempio i Register Files nei microprocessori, oppure sulla stessa linea (congurazione a bus). Nei due casi ovviamente dieriscono i circuiti che si occupano della lettura e scrittura della memoria, ma il decoder di riga è sempre presente. Di seguito è riportato lo schema di una singola cella di memoria. La cella di memoria è sensibile alle radiazioni: come nel caso dei Latch e dei Flip Flop può essere soggetta a Bit Upset. Quando si considerano intere memorie si parla di MBU (Multiple Bit Upset) in quanto la radiazione può alterare più bit contemporaneamente. Di seguito è riportato il circuito completo di un Register File avente 2 righe da 2 bit ciascuna (in totale 4 bit di memoria): si notino i due decoder di riga, uno che abilita la scrittura ed uno che abilita la lettura della riga. In questo modo Il Register File può essere letto e scritto contemporaneamente ed in modo asincrono. 1.5 Microprocessori Rad Hard I microprocessori ed i microcontrollori per uso commerciale dieriscono dai microprocessori per usi spaziali, resistenti alle radiazioni (cosiddetti componenti Rad Hard): innan- 1.5. MICROPROCESSORI RAD HARD 13 zitutto i processori per uso commerciale sono disponibili in un ampio range di frequenze operative, che spaziano dai 100MHz ai 3GHz, mentre i processori Rad Hard sono notevolmente più indietro con frequenze che non superano i 500MHz. Il motivo di questo è da ricercarsi nelle misure adottate per rendere il processore resistente alle radiazioni: scopo di questo scritto sarà esaminare quali sono le cause degli errori nei microprocessori e le modiche introdotte per rendere il dispositivo resistente. Si vedrà che per aumentare la resistenza alle radiazioni sarà necessario aumentare le dimensioni dei transistor, usare transistor a canale lungo, introdurre capacità e resistenze. Nel complesso si causa un aumento dei tempi di propagazione nel circuito, quindi è necessario un periodo di clock più lungo per garantire una corretta memorizzazione dei dati negli elementi di memoria. Altre tecniche usate per la mitigazione degli errori a livello di porte logiche o di sistema comportano l'introduzione di ulteriori componenti o addirittura repliche di porzioni del circuito (ridondanza): il risultato è un aumento della potenza dissipata, un aumento dell'area occupata dal circuito e quindi del costo. Spesso è troppo costoso produrre componenti con un processo tecnologico adatto, si tende quindi ad usare i processi commerciali utilizzati per la logica CMOS adottando invece tecniche di hardening a livello di layout. In denitiva i processori Rad Hard sono costosi, consumano e sono più lenti rispetto a quelli commerciali: è il prezzo da pagare per avere un sistema adabile e funzionante in un ambiente critico come ad esempio quello spaziale. 14 CAPITOLO 1. RICHIAMI SUI MICROPROCESSORI Capitolo 2 Eetti delle Radiazioni Si è visto che in una CPU sono molti gli elementi sensibili alle radiazioni, in particolare gli elementi di memoria, ovvero Cache, Pipeline, Registri e la stessa macchina a stati che gestisce le operazioni nella control unit: ogni cosa che contenga Latch. In questa sezione verranno analizzate le cause microscopiche (fenomeni sici a livello di transistor) che originano malfunzionamenti ed errori all'interno del microprocessore per poi analizzare gli eetti macroscopici visibili a livello di circuito (porte logiche) e di sistema: i malfunzionamenti e gli errori vengono catalogati ed esaminati, inne nella prossima sezione si cercherà di riportare alcune tecniche utilizzare per aumentare la resistenza alle radiazioni dei circuiti e rilevare/correggere gli errori nell'elettronica digitale, in particolare nelle CPU. I principali eetti provocati dalla radiazione a livello microscopico: Intrappolamento carica negli ossidi e formazione di canali laterali parassiti nei MOSFET, Total Ionizing Dose (TID), causata principalmente da protoni (Van Allen); Raccolta di carica alle giunzioni PN polarizzate inversamente, ad esempio giunzioni di Drain negli NMOS (N con substrato P). La raccolta di carica avviene per deriva e diusione, accentuata dal fenomeno del funneling. Questo eetto è causato principalmente dall'impatto di ioni; La raccolta di carica nei transistor può attivare il canale per un breve periodo, causando commutazioni spurie dei MOS, ovvero ulteriore raccolta di carica: Ion Triggered Channeling (ITC). A livello macroscopico gli eetti dovuti alla dose totale si traducono in un aumento della corrente di perdita dei transistor (inuisce sulle celle di memoria e sui consumi) e nei casi peggiori in un'alterazione della tensione di soglia dei transistor, nella formazione di canali laterali tra drain e source, ovvero complessivamente nell'alterazione del funzionamento del circuito (eetti a lungo termine). gli eetti dovuti all'impatto degli ioni (raccolta carica, ITC) sono la causa degli eetti da evento singolo, in particolare per i microprocessori sono rilevanti: SET (Single Event Transient), ovvero un segnale di tensione spurio che si propaga nel circuito (nella logica combinatoria) alterando temporaneamente il funzionamento del circuito. Quando un SET raggiunge un elemento di memoria può essere campionato causando la memorizzazione di informazioni errate nella CPU; 15 CAPITOLO 2. 16 EFFETTI DELLE RADIAZIONI SEU (Single Event Upset), ovvero la modica (Bit Flip) del dato immagazzinato in un elemento di memoria (esempio SRAM, Latch, FF...); SEL (Single Event Latchup), si verica nella logica CMOS ed è un evento potenzialmente distruttivo. Il danneggiamento del componente può essere evitato utilizzando circuiti limitatori di corrente sull'alimentazione e circuiti di sensing per identicare i picchi di corrente causati dal SEL. Per quanto riguarda i microprocessori si focalizzerà l'attenzione sui SET e sui SEU (i cosiddetti Soft Errors) in quanto sono i più frequenti e problematici. Vi è anche un altro SEE che va considerato: SEFI (Single Event Functional interrupt): è un evento che ha rilevanza in sistemi complessi come FPGA e appunto Microprocessori. Si tratta di un malfunzionamento complessivo del sistema, un crash delle funzioni del microprocessore risolvibile soltanto con un reset. 2.1 Total Ionizing Dose Una particella carica che colpisce l'ossido genera coppie elettrone-lacuna al suo interno. Gli elettroni hanno un'elevata mobilità nell'ossido e riescono a migrare verso il Gate rapidamente, le lacune invece si spostano per hopping verso il substrato. Le lacune possono accumularsi nell'ossido (carica positiva intrappolata) oppure all'interfaccia: questo agisce sulla tensione di soglia del transistor, in particolare la caratteristica ID − VG del transistor si sposta verso sinistra. Nel caso di NMOS in particolare lo spostamento della VT H può portare ad un aumento della corrente li leakage del transistor (sottosoglia) o nel caso peggiore addirittura alla formazione di una canale persistente (transistor always on). Nei PMOS l'eetto potrebbe portare invece all'impossibilità di accendere il transistor. L'intrappolamento di carica avviene grazie alla presenza di difetti del tipo vacanza ossigeno nel SiO2 , sempre presenti nel materiale: SiO4 legati tra loro grazie alla da blocchi si normalmente l'ossido di silicio è composto condivisione di un Ossigeno, a causa del difetto l'Ossigeno che fa da collegamento viene a mancare, lasciando un legame debole formato solo dalla condivisione di due elettroni da parte degli atomi di silicio. Quando una particella colpisce il materiale può provocare la ionizzazione di uno di questi elettroni generando una lacuna intrappolata, come illustrato nella seguente gura. 2.1. TOTAL IONIZING DOSE 17 Gli eetti dovuti alla dose totale sono eetti a lungo termine, ovvero gli eetti non si vedono immediatamente, la carica nell'ossido si accumula con il tempo deteriorando gradualmente le prestazioni del dispositivo. Si pensi all'NMOS: man mano che la tensione di soglia diminuisce, la corrente di perdita aumenta sempre di più no al limite in cui il transistor risulta acceso anche per tensioni di gate prossime allo zero. Le correnti di perdita fanno si che il consumo di potenza del circuito aumenti, questo può essere un problema se la dissipazione di potenza esce dai limiti prestabiliti. Si ricorda la formula della potenza nei circuiti CMOS: 2 P = Dstatic + Pdinamic = VDD · Ileakage + α · C · f · VDD Dove Ileakage è la corrente di perdita, f C la capacità complessiva α è il fattore di attività del circuito. è la frequenza del clock, che viene caricata/scaricata ad ogni commutazione ed Per quanto riguarda le memorie, un'elevata corrente di leakage può interferire con il corretto funzionamento delle stesse, in particolare se si tratta di memorie dinamiche. La seguente gura mostra l'eetto sulla corrente di perdita di una SRAM. 18 CAPITOLO 2. EFFETTI DELLE RADIAZIONI Il problema della carica nell'ossido nei moderni microprocessori non è tanto rilevante per quanto riguarda l'ossido di Gate, che è sottile (la carica scappa per eetto tunnel), piuttosto è di rilievo per quanto riguarda gli ossidi di isolamento, che sono spessi e possono accumulare tanta carica. La carica accumulata negli ossidi di passivazione da origine a transistor laterali parassiti, ovvero può portare alla formazione di canali laterali tra drain e source negli NMOS (sono aetti da questo problema solo gli NMOS in quanto la carica intrappolata è sempre positiva). Il canale può formarsi anche tra source/drain ed una N-well di un transistor adiacente (PMOS). L'incremento della corrente di perdita e l'eventuale fallimento del dispositivo dipende principalmente da questi fenomeni. Per mitigare gli eetti del TID si deve trovare il modo di bloccare la formazione dei canali parassiti. 2.2. RACCOLTA DI CARICA ALLA GIUNZIONE E ITC 19 2.2 Raccolta di carica alla giunzione e ITC L'impatto di uno ione su un componente elettronico (diodo, transistor) causa la generazione di coppie elettrone-lacuna in prossimità delle giunzioni. Se vi sono giunzioni PN polarizzate inversamente, ad esempio Substrato-Drain nei MOS in condizione OFF, la carica generata lungo la traccia dello ione può essere raccolta dal campo elettrico presente. La raccolta di carica avviene in 3 modi: 1. Raccolta di carica per deriva, in prossimità della giunzione, dove è presente un forte campo elettrico. In un NMOS gli elettroni vengono raccolti al Drain, le lacune dal Bulk (che è connesso al Source) e si ha una corrente IDS > 0; 2. Raccolta di carica a causa del Funneling: la distribuzione della carica generata all'interno del semiconduttore segue l'andamento della LET (Linear Energy Transfer) dello ione incidente (il massimo si ha massimo poco prima del punto di arresto dello ione, detto picco di Bragg). Questa distribuzione di carica altera lo stesso campo elettrico alla giunzione, il quale si sposta in profondità ed incrementa la raccolta della carica (per deriva). Grazie al funneling si raccoglie buona parte della carica generata dallo ione; 3. Raccolta di carica per diusione, nelle regioni in prossimità al campo elettrico: i portatori si muovono per diusione e possono entrare nella regione dove vi è il campo elettrico e quindi essere raccolti. La carica generata dallo ione (corrispondente alla massima carica che può essere raccolta) è proporzionale alla LET dello ione ed alla lunghezza della sua traccia (ovvero dipende dal tipo e dall'energia dello ione) Q = Ltrack · Eehp = 3.6eV (per il silicio) è l'energia richiesta per generare una coppia elettrone-lacuna, ρ è la densità del materiale (silicio) e q è la carica dell'elettrone. Approssimativamente la carica generata è pari a 10f C per ogni dove Ltrack ρ · LET ·q Eehp è la lunghezza della traccia, M eV ·cm2 di LET. Non tutta la carica generata mg viene raccolta: la quantità di carica raccolta dipende da quanto la traccia dello ione passa micron di lunghezza della traccia e per ogni vicina ad un nodo sensibile del dispositivo (giunzione PN contro-polarizzata). La raccolta della carica si traduce in impulsi di corrente: la carica raccolta carica la capacità parassita presente al nodo del circuito oppure si scarica a massa attraverso altri transistor. Se la carica non riesce a scaricarsi velocemente a massa ma permane per un certo periodo nelle capacità parassite si hanno delle variazioni di tensione sul nodo di uscita. Sono queste variazioni di tensione che possono alterare il valore logico di una porta e causare gli eetti da evento singolo di tipo SET e SEU. Nella seguente gura vengono schematizzati gli eetti descritti relativi al funneling ed al picco di corrente generato. CAPITOLO 2. 20 EFFETTI DELLE RADIAZIONI I punti sensibili del circuito sono quindi i transistor spenti, nella logica CMOS tutti i nodi di uscita delle porte logiche sono sensibili. Nei transistor a canale corto entra in gioco un altro fenomeno che incrementa ulteriormente la raccolta della carica e causa variazioni sulla tensione del nodo: lo Ion Triggered Channeling. Le alterazioni del campo elettrico nel transistor colpito dallo ione causano una conseguente alterazione della barriera di potenziale nel canale del transistor, se tale barriera viene meno si ha la formazione momentanea di un canale tra drain e source. Il transistor risulta acceso e si ha ulteriore raccolta di carica: il surplus di carica proviene dal source! Il fenomeno può durare decine di picosecondi ed è dipendente dall'inclinazione della traccia dello ione (sensibilità maggiore spingendosi dal Drain al centro del canale). Di seguito viene riportato un esempio su un inverter CMOS con PMOS spento: uno ione che colpisce il PMOS e causa raccolta di carica può essere modellato come un generatore di corrente impulsiva in parallelo al PMOS (lacune verso il Drain ed elettroni verso il Source/Bulk): t − τt Ip (t) = I0 · (e− τα − e dove I0 è circa il massimo dell'impulso di corrente, β τα ) e τβ sono costanti di tempo che modellano la raccolta di carica da parte della giunzione e la formazione della traccia dello ione. Se l'NMOS (che è acceso) non riesce ad asportare la corrente velocemente (resistenza elevata) allora essa caricherà la capacità parassita del nodo di uscita causando un impulso transiente di tensione: l'uscita dell'inverter, che dovrebbe essere a livello logico basso, si porta momentaneamente a livello logico alto. Di seguito si riporta anche il caso in cui è l'NMOS ad essere spento: in questo caso la capacità viene scaricata e si ha una commutazione momentanea 1→0 dell'uscita. 2.3. SINGLE EVENT UPSET 21 Se i transistor sono di piccole dimensioni il fenomeno è rilevante: le capacità parassite sono piccole e si caricano subito, ovvero la carica raccolta dallo ione è molto più grande della carica normalmente immagazzinata nel nodo, di conseguenza le alterazioni della tensione di uscita sono sucientemente lunghe da alterare il funzionamento del circuito (delle porte logiche in cascata a quella colpita). Transistor piccoli hanno anche una resistenza verso massa elevata e quindi il nodo viene scaricato a massa lentamente... Si può prendere come valore della capacità critica: Qcr = Cparass · VCC che rappresenta la carica immagazzinata nel nodo di uscita (di capacità parassita in condizioni di livello in uscita alto (tensione alimentazione possono fare considerazioni sulla LET di soglia LETT H ' Dove d LETT H VCC ). Cparass ) Di conseguenza si che causa l'eetto: Qcr · Eehp ρ·q·d è lo spessore sensibile del dispositivo (pari allo spessore del MOS). 2.3 Single Event Upset 2.3.1 SEL (Single Event Latchup) Questo eetto da evento singolo è causato dall'impatto di ioni nei circuiti CMOS. L'eetto è di tipo distruttivo, il dispositivo viene danneggiato per eetti termici dovuti alle elevate correnti che attraversano i BJT parassiti al suo interno: per l'esattezza i BJT parassiti risultano essere collegati tra loro in modo tale da formare un diodo SCR parassita che è impossibile spegnere una volta attivato, alimentazione e massa vengono cortocircuitate. L'attivazione avviene grazie alla carica generata dall'impatto di uno ione: la carica viene raccolta causando un picco di corrente che può accendere l'elemento parassita. CAPITOLO 2. 22 EFFETTI DELLE RADIAZIONI In realtà il SEL può essere considerato non distruttivo in quanto è suciente un limitatore di corrente a protezione del circuito: limitando la corrente si impediscono gli eetti termici che porterebbero alla distruzione del dispositivo. Aggiungendo un circuito sensore di picchi di corrente sulla linea di alimentazione è possibile rilevare il malfunzionamento ed operare un reset disinserendo e reinserendo l'alimentazione (così da spegnere l'SCR). Per rendere i componenti più resistenti al SEL bisogna ridurre il guadagno β dei BJT parassiti, un modo per farlo è danneggiare il substrato dei MOS con un trattamento a neutroni. Ridurre le resistenze parassite interne al transistor (substrato e well) o lavorare con basse tensioni di alimentazione può far si che l'SCR non riesca ad accendersi. Un'alternativa a livello di processo di fabbricazione è invece quella di realizzare i componenti mediante processo SOI (Silicon On Insulator) che di fatto elimina il problema del SEL eliminando il substrato (e quindi anche i BJT parassiti). La tecnologia SOI ha però controindicazioni per quanto riguarda gli eetti da Total Dose: canali parassiti per via dell'ossido. Non verrà più arontato il discorso del SEL in quanto la discussione sarà focalizzata sui Soft Errors SET e SEU. 2.3.2 SET e SEU Generalmente la raccolta di carica nei nodi sensibili è rapidissima, nell'ordine dei picosecondi, tuttavia nelle tecnologie nanometriche l'asporto della carica è lento (resistenze) ed i transienti di tensione possono durare dalle centinaia di picosocondi ad alcuni nanosecondi. Per Microprocessori che lavorano a frequenze nell'ordine del GHz alcuni transienti potrebbero durare alcuni cicli di clock: c'è tutto il tempo perché i livelli alterati di tensione si propaghino nel circuito combinatorio alterando il risultato della rete combinatoria, in questo caso si parla di SET. 2.3. SINGLE EVENT UPSET 23 Il SET potrebbe dissiparsi senza causare danni, questo può avvenire in due modi: Per mascheramento logico, ovvero il transiente si ferma ad una determinata porta logica se quest'ultima non subisce variazioni della sua uscita per via di una combinazione di ingressi favorevole secondo la tabella di verità. Quanto detto è chiarito meglio con un esempio: si osservi la seconda porta NOR, avendo già un ingresso a 1 sia che l'altro ingresso sia a 1 per via di un transiente o a 0 l'uscita, secondo la tabella di verità, rimane comunque a 0. Questa coincidenza ha soocato il SET. Le circostanze, si capisce, sono abbastanza casuali. Per mascheramento elettrico, ovvero grazie agli elevati margini di rumore delle porte CMOS il transiente potrebbe propagarsi per alcune porte attenuandosi di volta in volta no a scomparire: la natura passa basso dei circuiti digitali permette di assorbire velocemente il SET. Se il SET dovesse raggiungere un elemento di memoria, ad esempio un Flip Flop, e dovesse mantenersi stabile al suo ingresso proprio durante un fronte attivo del clock (compatibilmente con i tempi di setup ed hold del FF), verrebbe campionato un dato errato. Si avrebbe cioè un Bit Upset (SEU) nel Flip Flop causato da un SET. Può anche accadere, CAPITOLO 2. 24 EFFETTI DELLE RADIAZIONI se la porta logica ha un fan-out maggiore di 1, ovvero se alla sua uscita sono connesse altre porte logiche o FF, che un SET si propaghi su più linee separate e venga catturato da più di un Flip Flop. In questo caso si parla di Multiple Bit Upset (MBU) causati da un SET. All'aumentare della frequenza della CPU, in base a quanto detto nora, la probabilità di catturare un segnale alterato aumenta e quindi aumentano i possibili errori: in sostanza la sezione d'urto del SEL aumenta all'aumentare della frequenza operativa. Complessivamente quindi si può dire che la sensibilità al SET (e quindi ai SEU nei FF): Aumenta al diminuire delle dimensioni dei transistor; Aumenta al diminuire dei tempi di propagazione tra le porte logiche; Aumenta all'aumentare della carica raccolta per ionizzazione, ad esempio all'aumentare della LET; Aumenta all'aumentare della frequenza operativa Si possono già intuire quali siano alcuni metodi di hardening applicabili a livello di transistor... 2.3. SINGLE EVENT UPSET 25 Gli ioni potrebbero colpire anche direttamente gli elementi di memoria, FF ed SRAM, causando un SEU, ovvero un ip del bit memorizzato (0 → 1 o 1 → 0): all'interno degli elementi di memoria vi sono degli inverter chiusi in retroazione, è suciente che l'uscita di uno di essi venga alterata a causa di un transiente di tensione perché la cella commuti il suo stato logico. Gli elementi sensibili in questo caso si ricordano essere i transistor spenti, in particolare i Drain degli NMOS spenti ed i Source dei PMOS spenti. Di seguito è riportato un esempio di SEU in una cella SRAM che causa il ip 1→0 della memoria a causa di uno ione che impatta sull'NMOS spento: il Drain dell'NMOS viene forzato a zero (ITC) per un tempo sucientemente lungo a far saltare il loop nella condizione di equilibrio opposta. Un esempio praticamente identico può essere fatto nel caso di Latch e Flip Flop. Nel caso di memorie molto dense, costituite da tante piccole celle aancate, oppure nel caso di registri e pipeline composti da FF aancati, un singolo ione potrebbe causare Upset multipli (MBU). Il caso peggiore è, e sarà più chiaro in seguito, quando i MBU avvengono sullo stesso registro, o sulla stessa riga di memoria, rendendo meno ecaci i sistemi di correzione degli errori del tipo bit di parità. Le seguenti gure mostrano alcuni risultati sperimentali interessanti condotti su una SRAM: la sensibilità ai MBU dipende dal pattern di dati caricato nella memoria (in questo caso, a scacchiera, a righe alternate, tutto zero). Si noti un altro particolare interessante: nel primo caso vi è un'intera riga della memoria che ha subito un upset, questo è dovuto ad un'attivazione (causa ione) del transistor che abilita la scrittura sulla riga (Word Line): i dati dell'intera CAPITOLO 2. 26 EFFETTI DELLE RADIAZIONI riga sono stati sovrascritti con i dati al momento presenti sulle Bit Lines in ingresso alle celle (dati invalidi). Complessivamente, sia per i SET che per i SEU, le cose peggiorano se gli ioni arrivano sul dispositivo con un certo grado di inclinazione: in questo caso la traccia dello ione può colpire più di un componente, ovvero componenti adiacenti. La cosa è rilevante soprattutto per quanto riguarda i MBU su SRAM e Registri. Si possono già intuire quali siano alcuni metodi di hardening applicabili a livello di transistor... Si ricorda anche che per un fascio inclinato la carica raccolta aumenta in quanto aumenta la LET ecacie secondo la formula del coseno: LETef f = dove θ è l'angolo di inclinazione. raccolta tramite ITC. LET cos(θ) Un fascio inclinato può alterare di molto la carica 2.3. SINGLE EVENT UPSET 2.3.3 27 SEFI Abbiamo visto che una particella può colpire sia la logica combinatoria che quella sequenziale, causando SET e SEU. Si pensi all'architettura di una CPU in particolare all'insieme Registro-ALU-Registro oppure Pipeline-ALU-Pipeline: è proprio il caso di elettronica combinatoria racchiusa tra due blocchi sequenziali. Si capisce che sono molte le cose che possono andare storte ad esempio: Viene alterato il Registro contenente l'operando, di conseguenza l'ALU si trova già ad operare su un dato sbagliato; Viene alterato il risultato a causa di un SET nella logica combinatoria ed un risultato sbagliato viene campionato nel registro di destinazione; Viene alterato direttamente il Registro contenente il risultato dell'operazione. Si capisce che in tutti e tre i casi un risultato errato può essere propagato se il processore non ha modo di accorgersene: il risultato potrebbe essere importante per l'algoritmo in esecuzione nel processore! Si pensi a cosa potrebbe accadere in un satellite se tale valore fosse un parametro di controllo di un qualche attuatore oppure costituisse un'importante informazione da salvare in memoria o trasmettere a terra... Nel caso peggiore un sin- golo ione potrebbe innescare una vera e propria reazione a catena che porterebbe al crash completo del microprocessore, inoltre dati senza senso potrebbero essere scritti nella memoria. In questi casi si parla di Single Event Functional Interrupt (SEFI) e l'unico modo per ripristinare il funzionamento del sistema è un riavvio. Si pensi come esempio al caso in cui uno ione alteri il valore del Program Counter (PC) causando l'esecuzione di istruzioni errate e non attese che potrebbero portare alla corruzione dei dati salvati in memoria. Oppure si immagini che il risultato alterato in uscita dall'ALU corrisponda ad un indirizzo di un'istruzione da eseguire o di un dato da caricare nei registri interni... I processori devono poter proteggersi dai SEFI, di solito a tale scopo vengono adottate sia tecniche hardware (modiche all'architettura, Error Correction Code...) che software (tecniche di programmazione ottimizzate). l'uso del Watchdog. Un esempio comune nei Microprocessore è 28 CAPITOLO 2. EFFETTI DELLE RADIAZIONI Capitolo 3 Tecniche Di Hardening: mitigazione e correzione degli errori Nella precedente sezione abbiamo discusso i fenomeni microscopici che causano gli eetti da Total Dose ed i Soft Errors. Per avere un Microprocessore resistente bisogna applicare delle tecniche costruttive e di design tali da rendere il processore meno sensibile agli eetti delle radiazioni ed in grado di rilevare o addirittura correggere eventuali errori logici dovuti a SET e SEU. Per quanto riguarda gli eetti da Dose Totale le tecniche presentate sono a Livello di transistor e tecnologia, mentre per quanto riguarda la raccolta della carica per impatto di uno ione ed i relativi eetti SET e SEU le tecniche possono essere suddivise nelle seguenti categorie, disposte secondo una gerarchia o astrazione crescente: Tecniche a livello di transistor e tecnologia, ovvero dimensioni, forma, tecnologia costruttiva; Tecniche a livello elettrico e di layout, ovvero design degli elementi base (SRAM, FF...), relativo layout e layout dei blocchi all'interno del processore; Tecniche a livello logico, ovvero di porte logiche (elettronica combinatoria e sequenziale) e blocchi base; Tecniche a livello di architettura della CPU (ALU, Registri, Memoria e Istruction Set); Tecniche a livello di Sistema o di Chip; Tecniche a livello Software (tutte le precedenti sono a livello Hardware). Le tecniche possono essere anche catalogate in: Tecniche che migliorano la resistenza alle radiazioni del componente; Tecniche che permettono di rilevare un malfunzionamento (Fault); Tecniche che permettono di rilevare ed anche correggere un eetto dovuto al malfunzionamento (Fault Eect) prima che si trasformi in un errore (Error), ad esempio correggere un valore di memoria prima che possa propagarsi ed innescare un Functional Interrupt; 29 30CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI Tecniche che permettono di ripristinare un sistema a seguito di un Error; Tecniche che permettono di ripristinare il funzionamento dell'intero sistema dopo la rottura di un componente (Failure). Con questa terminologia si è indicato con Fault la sovratensione provocata dagli eetti microscopici (SET), con Fault Eect il SEU sugli elementi di memoria, con Error viene indicato il SEFI ed inne con Failure il fallimento irrecuperabile del componente, che può essere visto ad esempio come l'alterazione completa della memoria a causa di un SEFI che rende impossibile il recupero delle funzionalità del sistema a meno di un reset. Si ha un Failure anche quando il componente si danneggia sicamente per qualche evento distruttivo non considerato o per logoramento subito nel tempo. Si vedrà che i due modi di catalogare le tecniche di hardening e mitigazione degli errori sono collegati quasi con lo stesso ordine, ad esempio le tecniche a livello di transistor e layout permettono di migliorare la resistenza del componente e ridurre i Fault, le tecniche a livello di sistema permettono di ripristinare il funzionamento del sistema a seguito di un Failure, tecniche a livello logico e di architettura permettono di ridurre/correggere i Fault Eects, inne altre tecniche hardware e software permettono di agire contro gli Errors. Per ogni tecnica si possono valutare i pro ed i contro, e pensare ad eventuali miglioramenti: I PRO costituiscono un risultato positivo in termini di resistenza alle radiazioni o identicazione/correzione degli errori; I CONTRO costituiscono la spesa da pagare in termini di area, dissipazione di potenza, prestazioni e costo; I MIGLIORAMENTI sono in genere modiche alle tecniche adottate o tecniche alternative che permettono di ottimizzare il trade-o tra i PRO ed i CONTRO. 3.1 Mitigazione degli eetti dovuti alla Total Ionizing Dose Abbiamo visto che gli eetti della dose totale sono quelli di aumentare la corrente di perdita attraverso la formazione ci canali parassiti laterali negli NMOS: tali canali possono 3.1. MITIGAZIONE DEGLI EFFETTI DOVUTI ALLA TOTAL IONIZING DOSE 31 connettere due regioni drogate N adiacenti, ad esempio Drain e Source oppure Drain e la N-well di un PMOS adiacente, o il Source di un NMOS adiacente. La carica positiva intrappolata negli ossidi di isolamento permette la formazione di tale canale. Per risolvere il problema vi sono due modi: 1. Per bloccare il canale che può formarsi tra dispositivi adiacenti è suciente realizzare + degli impianti P nell'ossido di isolamento tra un transistor e l'altro: in questo modo si viene a creare una struttura a doppia giunzione NP-PN che corrisponde a due diodi in congurazione Back-to-Back. Se la carica nell'ossido causa l'inversione del substrato sottostante (che da P diventa N) non si ha più l'elevata corrente di leakage che si aveva prima proprio grazie all'azione bloccante del diodo inversamente polarizzato. 2. Per bloccare i canali laterali tra Drain e Source dello stesso NMOS si può utilizzare una struttura ad anello, ovvero realizzare una giunzione di Drain interna, il canale che la circonda lungo il perimetro formando un sottile anello ed inne una giunzione di Source esterna ad anello (il tutto in un substrato P). La struttura chiusa, come è evidente, elimina del tutto il problema dei canali laterali Drain/Source (di fatto essi non possono esistere). Questo tipo di transistor occupa una notevole area (è di grandi dimensioni) e presenta alcune dicoltà nella sua realizzazione, in particolare la presenza degli angoli a 45° per dare all'anello una forma più arrotondata ed evitare elevati campi che si potrebbero avere sugli spigoli in una realizzazione rettangolare. Unendo le due tecniche si ottiene la struttura schematizzata nella seguente gura. Abbiamo visto nella precedente sezione che un modo per eliminare i SEL (Single Event Latchup) è quello di utilizzare tecnologie SOI, in questo caso però gli eetti provocati dal TID sono più rilevanti: si può formare il cosiddetto canale parallelo di backside nel transistor per via del fatto che il Bulk risulta essere ottante (non vincolato a 0V). Per 32CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI risolvere anche questo problema ed avere vantaggi sia contro il SEL che contro il TID può essere usata la struttura BUSFET (Bulk Under Source) per gli NMOS: Il Bulk viene fatto passare sotto il contatto di Drain, contattato e connesso con il Source (quindi posto a 0V). 3.2 Tecniche a livello di Transistor e Tecnologia In base a quanto visto sulla carica raccolta su un nodo dopo l'impatto dello ione si possono trarre le seguenti conclusioni: Per aumentare la resistenza alle radiazioni si devono fare i transistor grandi, infatti in questo caso le capacità parassite dei nodi sono molto grandi e questo si traduce in una capacità critica Qcr = C · VDD molto elevata. La carica raccolta a seguito dell'impatto di uno ione non è in grado di innescare transienti di tensione. Se i transistor sono grossi anche la loro resistenza in condizioni di accensione ron sarà bassa, di conseguenza riescono a scaricare a massa più velocemente i transienti di corrente, impedendo ancora la creazione transienti di tensione duraturi. Aumentare le dimensioni dei transistor è un costo che si paga in Area (quindi costo) e Dissipazione di potenza per via del carico capacitivo aumentato. Per mantenere la dissipazione di potenza entro certi limiti è necessario ridurre la frequenza operativa. 2 P = Dstatic + Pdinamic = VDD · Ileakage + α · C · f · VDD I nodi più sensibili (e/o importanti) di un circuito elettronico devono essere quindi opportunamente dimensionati (transistor più grossi). Ad esempio si possono sovradimensionare i nodi terminali di una rete combinatoria prima dei FF. Da qui si capisce come mai i processori Rad Hard siano così indietro rispetto a quelli commerciali. 3.3. TECNICHE A LIVELLO ELETTRICO E DI LAYOUT 33 3.3 Tecniche a livello elettrico e di Layout 3.3.1 Celle di memoria Rad Hard mediante resistori Per impedire ai transienti di tensione di propagarsi, ovvero di alterare gli elementi di memoria (inverter in loop) o propagarsi in una rete combinatoria ed essere campionati da un FF, si può pensare di agire sui tempi di propagazione: quello che si cerca di fare è rallentare la risposta alle commutazioni dei transistor introducendo elementi resistivi lungo la linea di propagazione del segnale per far si che la costante di tempo τ = R · Cparass sia τ e quello che è elevata. Il tempo di propagazione del segnale è infatti proporzionale a stato realizzato è una rete di ritardo RC distribuita. Con questa tecnica la durata del transiente di tensione diventa poco rilevante se confrontata con i tempi di propagazione dei segnali, quindi un SET viene dissipato ed i SEU nelle memorie scoraggiati. Il prezzo da pagare però è quello di avere una elemento di memoria lento (i tempi morti vengono aumentati), collo di bottiglia che implica nuovamente la riduzione della frequenza operativa. La realizzazione degli elementi resistivi (di solito in polisilicio) aumentano il numero di maschere del processo produttivo, in quanto aumentano i layers utilizzati, questo fa aumentare il costo. La tecnica della resistenza può essere applicata sia a celle SRAM che Latch e Flip Flop: Esempio di una cella SRAM resistente alle radiazioni realizzata con la tecnica delle resistenze. La gura a destra mostra una analisi condotta su una cella al variare del valore delle resistenze: nel primo caso si ha una resistenza da 300kΩ e come si può vedere è suciente ad eliminare il SEU. Nel secondo caso la resistenza è più piccola, 50kΩ, e non è suciente. Il terzo graco rappresenta il caso senza resistori (cella non RadHard). Esempio di un Latch D resistente alle radiazioni 34CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI Esempio di un Flip Flop resistente alle radiazioni Una alternativa può essere quella di usare memorie Rad Hard senza resistori, progettate per essere resistenti alle radiazioni: il design di tali celle dierisce da quello noto della SRAM standard, vengono infatti inseriti ulteriori transistor che realizzano opportune reti di feedback in grado di ripristinare il corretto dato in memoria qualora si vericasse un SEU. Il funzionamento e la progettazione di tali celle è abbastanza complesso, gli svantaggi in questo caso sono la maggior area occupata dovuta ai tanti transistor ed il layout complesso. Esempi di tali celle sono riportati di seguito. 3.3. TECNICHE A LIVELLO ELETTRICO E DI LAYOUT 3.3.2 35 Disposizione disallineata e distanziata degli elementi di memoria Quando vi sono più celle di memoria o Flip Flop appartenenti alla stessa parola (es. stesso registro) disposte una adiacente all'altra possono vericarsi con più probabilità Upset Multipli (MBU), in particolare nel caso di ioni incidenti con un certo angolo di inclinazione (direzione di impatto non ortogonale al componente). Un modo per disincentivare il vericarsi di MBU sullo stesso registro è quello di non collocare le celle di memoria aancate, ad esempio è possibile incastrare i FF nel modo rappresentato in gura (lo stesso colore indica l'appartenenza allo stesso registro). Se vi sono uno o al massimo due bit alterati per ogni registro è possibile ripristinare i dati corretti, a patto di utilizzare tecniche di codica con correzione d'errore (ECC, Error Correcting Code), si veda più avanti. La tecnica presentata è in disaccordo con il funzionamento degli strumenti CAD usati per la progettazione dei circuiti integrati: il sistema Place And Route tende a collocare gli elementi appartenenti allo stesso registro vicini tra loro per ottimizzare la velocità, il consumo di potenza, rendere migliore il layout al ne di non complicare le interconnessioni tra gli elementi (ovvero complicare o aggiungere metal layers). In questi casi si devono sistemare le cose manualmente. Si osservi che l'area occupata rimane inalterata in quanto gli elementi di memoria sono stati semplicemente riarrangiati, l'unico lato negativo è appunto nell'introduzione di ulteriori (e più complessi) metal layers. 3.3.3 Circuito di Sensing per i SET Questa tecnica permette di rilevare il vericarsi di un SET (transiente di tensione) grazie ad un opportuno circuito di sensing. La tecnica deriva è stata ispirata dai rilevatori di corrente utilizzati per rilevare i SEL (Latchup): il sensore di corrente non è posto 36CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI sull'alimentazione, ma viene connesso ai substrati dei transistor, infatti è li che si avvertono i picchi di corrente quando uno ione colpisce il dispositivo. La tecnica è chiamata Bulk-BICS, ovvero Bulk Built-in Current Sensor. Vi sono due tipi di BICS, ovvero due realizzazioni dierenti a seconda del tipo di substrato da proteggere, N per i PMOS e P per gli NMOS. I circuiti di sensing vengono quindi costruiti nelle P-well e nelle N-well dei transistor che intendono proteggere: i substrati non sono collegati direttamente a VCC (caso N-well) o a GN D (caso P-well) ma attraverso il relativo circuito di sensing, come illustrato nelle seguenti gure. Il circuito di sensing si comporta come un latch: quando si verica un SET, il latch viene sbilanciato ed il valore in memoria passa da 0 ad 1, durante il successivo ciclo di clock può quindi essere innescato un sistema di controllo che provvede a resettare il Latch e noticare al processore l'accaduto: la CPU può quindi provvedere ad eseguire nuovamente l'operazione in corso evitando possibili errori, ad esempio le linee dei sensori BICS potrebbero costituire una linea di interrupt per il processore. Uno dei vantaggi di questo tipo di sensori è la possibilità di proteggere più di un transistor contemporaneamente, infatti sono collegati ai substrati, che possono ospitare più di un 3.4. TECNICHE A LIVELLO LOGICO 37 transistor (si parla comunque di un numero piccolo, una piccola area coperta, altrimenti la sensibilità del sensore viene meno). Il lato negativo è costituito dall'introduzione di ulteriori transistor e di logiche di controllo. 3.4 Tecniche a livello logico Tutte le tecniche a livello logico adottano una forma di ridondanza: ridondanza hardware signica che parti del circuito vengono replicare e fatte funzionare contemporaneamente, ridondanza temporale vuol dire che il risultato di un unico circuito viene osservato (campionato) in istanti consecutivi prima di prendere una decisione. Esistono tecniche miste che uniscono i due principi. 3.4.1 Duplicazione e Comparazione Questa tecnica permette di identicare un SET nella logica combinatoria ed un SEU nei Flip Flop: si sfrutta la ridondanza hardware ed un elemento comparatore (EXOR, 1 se diversi, 0 se uguali), che costituisce la chiave del circuito e deve essere quindi immune agli errori (transistor grandi e magari anch'esso duplicato). Due blocchi di circuito perfettamente identici vengono fatti funzionare contemporaneamente ed i risultati vengono confrontati per mezzo del comparatore: se sono uguali la probabilità che vi sia stato un errore è molto bassa (dovrebbero essere stati colpiti entrambi i circuiti contemporaneamente), se invece sono diversi allora la probabilità che si sia vericato un errore è alta. Di seguito un esempio di applicazione su logica combinatoria e sequenziale. Il vantaggio di questa tecnica è di poter rilevare gli errori, tuttavia non è possibile sapere quale sia il blocco colpito e quindi quale sia il dato corretto: non è possibile correggere l'errore. Altri svantaggi sono: aumento di area a causa di parti di circuito replicate, quindi aumento di costo ed aumento di potenza dissipata. Un miglioramento di questa tecnica che permette di correggere l'errore è la seguente. 3.4.2 Triple Modular Redundancy (TMR) Questa tecnica sfrutta ancora la ridondanza hardware ed un comparatore di maggioranza. Con questo sistema è possibile correggere sia errori dovuti a SET nella logica combinatoria che a SEU negli elementi di memoria. Per analizzare il meccanismo si procede per gradi: 1. Consideriamo un'unica rete combinatoria collegata a 3 FF (3 repliche dello stesso FF, da qui il nome Triple Modular). Le uscite dei Flip Flop vengono connessi ad un particolare comparatore avente 3 ingressi ed una uscita, il Comparatore di 38CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI Maggioranza (Majority Voter o MAJ). Il compito del comparatore è portare in uscita il livello logico corrispondente alla maggioranza tra i livelli logici in ingresso. Se ad esempio vi è un SEU su un FF sarà uno solo il valore alterato e 2 corretti, quindi il MAJ dovrà propagare proprio quel valore. Qui è spiegato anche perché la modularità deve essere triplice: con un numero pari di FF non si potrebbe avere certezza decisionale se esattamente metà di essi subisce un upset. In generale questa tecnica è quindi applicabile a N moduli con N dispari, tuttavia una ridondanza troppo elevata porta agli svantaggi descritti sopra. La realizzazione mediante porte logiche illustrata nella gura è facile da ricavare, con le mappe di Carnaugh ma anche semplicemente guardando attentamente la tabella di verità del MAJ: A B C OUT 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 1 2. Il sistema descritto presenta evidentemente due problemi: Se avviene un SET nella logica combinatoria esso si propaga e viene catturato da tutti e tre i FF, vanicando l'eetto del MAJ che propagherebbe il risultato sbagliato (sono la maggioranza); I MAJ possono a sua volta subire gli eetti delle radiazioni e generare un SET che si propaga nel circuito a valle. Si potrebbe poi ricadere di nuovo nel primo problema se il circuito a valle è protetto con la stessa tecnica TMR; 3.4. TECNICHE A LIVELLO LOGICO 39 I due problemi descritti trovano soluzione se si esegue una replica anche dei blocchi combinatori e dei MAJ: si hanno 3 blocchi combinatori, con i relativi 3 FF e 3 MAJ. Inne per comparare e scegliere tra le uscite dei tre MAJ è necessario un ulteriore MAJ. 3. Il FULL TMR è rappresentato in gura: come si può osservare non è più possibile alterare contemporaneamente tutti e tre i Flip Flop in quanto vi sono tre repliche separate della logica combinatoria (e separate, ricordando quanto detto a livello di layout può voler dire proprio distanti sul chip). Un SEU nel FF è facilmente corretto come nel caso precedente, inoltre questa struttura permette anche di riscrivere il valore corretto in memoria grazie al feedback ed al multiplexer: nel caso in esempio è suciente comparare il segnale TR1 con il segnale TRV1 e se sono diversi (EXOR) abilitare EN del multiplexer così da riscrivere il dato giusto. Le seguenti gure mostrano che eettivamente il Full TMR è resistente anche ai SET nella logica combinatoria, che alterano un solo FF e quindi la correzione risulta possibile come appena visto, e che è resistente ai SET negli stessi Comparatori di Maggioranza. In questo ultimo caso si vede che 2 MAJ su 3 hanno l'uscita corretta quindi un quarto MAJ riesce a portare in uscita il risultato corretto. Rimane ancora un punto debole: si tratta proprio del 4 MAJ, un SET in quest'ultimo potrebbe vanicare i beneci della TMR. 40CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI 4. Il comparatore di maggioranza potrebbe essere costituito da un comparatore analogico anziché digitale: deve essere realizzato dimensionando opportunamente i transistor e con nodi di ingresso duplicati anché sia il più possibile resistente alle radiazioni. Un comparatore di questo tipo potrebbe sostituire il quarto MAJ, ed ha prestazioni migliori di un comparatore digitale in termini di resistenza alle radiazioni. I vantaggi di questa tecnica sono evidenti, gli unici svantaggi sono l'enorme quantità di area occupata dovuta alla ridondanza ed ai comparatori, quindi aumento di costo e potenza dissipata. Un possibile modo per ridurre la ridondanza hardware è utilizzare la ridondanza temporale. 3.4.3 Triple Temporal Redundancy (TTR) Questa tecnica utilizza il concetto della ridondanza temporale ovvero un dato viene campionato in istanti di tempo consecutivi e memorizzato: si ha una sola rete combinatoria collegata a 3 Flip Flop i cui clock sono leggermente ritardati. In questo modo anche se un SET viene generato nella rete combinatoria è possibile evitare che tutti e tre i FF campionino un dato errato. I tre FF sono poi connessi al classico MAJ per la comparazione di maggioranza, quindi si hanno gli stessi beneci della TMR ma senza dover replicare anche la logica combinatoria. Per rendere il circuito meno sensibile alle radiazioni valgono anche in questo caso le considerazioni sulla separazione dei FF a livello di layout, inoltre essendo sensibile ai SET anche il MAJ è opportuno che quest'ultimo sia resistente (magari analogico). Se avviene un SET nel MAJ esso si propagherà nel circuito a valle: se anche il circuito a valle è protetto da SET allora non vi sono problemi (ad esempio una rete combinatoria protetta da TTR), il problema c'è in caso solo sull'ultimo comparatore. 3.4. TECNICHE A LIVELLO LOGICO 41 Questa tecnica ha due svantaggi: Vi è l'esigenza di avere dei clock sfasati, quindi ogni FF deve avere la propria rete ritardante, essa non è altro che una catena di porte NOT opportunamente lunga, equivalente ad una rete RC distribuita; La tecnica non è indicata con clock di sistema elevati, nell'ordine del GHz. Quest'ultima aermazione è chiara se si considera la durata del SET rispetto alla durata del periodo di clock: se il SET dura più di un periodo di clock (cosa vera normalmente per frequenze da GHz) tutti e tre i FF cattureranno un dato errato, infatti i tre campionamenti devono comunque avvenire entro il periodo di clock lasciando inoltre adeguato margine per i tempi di propagazione della logica combinatoria a valle. In questo caso l'unica cosa che si può fare è ridurre la frequenza del clock in modo che il SET duri meno di un periodo. Quanto appena descritto può essere visto in termini di aumento dei tempi morti: per far fronte ad un SET di lunga durata è necessario distanziare di molto i campionamenti, ovvero prendere un valore di d (vedi diagramma temporale) elevato. Se si considera il blocco composto dai 3 FF, comprensivi di reti ritardanti, ed il MAJ come un unico Hard Hard Flip Flop si vedrà che il tempo di setup di quest'ultimo è pari a circa ovvero all'aumentare di d tsetup ' 2 · d, aumenta il tempo morto del FF. Il risultato si traduce sempre in una diminuzione della frequenza di clock di sistema in quanto bisogna stare ai tempi del Flip Flop. Si noti la somiglianza con i FF Rad Hard dotati di resistenza: i due casi seppur diversi appaiono da fuori simili, ovvero ci si riconduce in entrambi i casi ad un aumento dei tempi morti. Di seguito una gura che mostra il concetto nell'ambito delle Pipeline in un processore. 42CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI 3.4.4 Tecniche Miste: Ridondanza hardware e temporale Le tecniche TMR e TTR proposte possono essere unite per dare luogo ad altre tecniche, come ad esempio la CWSP (Code Word Status Preserving) che brevemente si espone per completezza. Questa tecnica viene proposta in due varianti, duplicazione hardware e duplicazione temporale. Al posto del comparatore di maggioranza descritto precedentemente viene utilizzato un circuito detto C-element (si vedano le gure): tale elemento non è altro che un inverter CMOS con due o più ingressi, se tutti gli ingressi sono uguali esso si comporta esattamente da inverter, se almeno uno è diverso la sua uscita si trova in stato di alta impedenza e non propaga il segnale. Nel caso si vericasse un SEU e vi fosse un ingresso diverso dagli altri l'errore rimarrebbe bloccato a monte del C-element. Una uscita ad alta impedenza tuttavia non può essere utilizzata dal circuito a valle, viene quindi inserito un componente chiamato Weak Keeper il cui scopo è quello di mantenere la linea d'uscita al valore logico precedente quando il C-element è in alta impedenza. 3.4. TECNICHE A LIVELLO LOGICO 43 Questa tecnica presenta dei problemi con SET di lunga durata: nel primo caso proposto si avrebbe il campionamento del SET e quindi un SEU nel Flip Flop, l'uscita rimarrebbe ssata al valore precedente per tutto il periodo di clock. Nel secondo caso invece si hanno gli stessi problemi della ridondanza temporale, ovvero entrambi i Flip Flop subiscono un SEU a causa di un SET nella logica combinatoria e viene propagato un dato errato, mantenuto per tutto il periodo di clock. inferiore al periodo di clock. In ogni caso la durata dei SET deve essere 44CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI 3.5 Tecniche a livello di Architettura A livello di architettura possono essere utilizzate le stesse tecniche descritte per la protezione di elementi combinatori e sequenziali: si può estendere il concetto a blocchi funzionali più grossi come ad esempio l'ALU ed i Registri. Il concetto è sempre quello, ovvero creare repliche di parti del circuito, farle funzionare in parallelo e confrontare i risultati per determinare se vi sono stati errori e se possibile adottare tecniche che ne permettano anche la correzione (es. TMR). Più repliche del circuito si fanno e più esse sono distanti sul chip meno probabile sarà il vericarsi di un errore non gestibile (SEFI). Se si utilizzano tecniche di mitigazione logica degli errori e nel contempo sensori BICS e dimensionamento opportuno dei nodi critici è possibile rilevare gli errori ed eventualmente procedere ad una ricomputazione. Si possono ad esempio, come precedentemente detto, collegare le linee di sensing degli errori al sistema di interrupt del processore. In letteratura si trovano numerosi esempi di modiche dell'architettura del processore per renderlo più resistente alle radiazioni: di solito si tratta sempre di realizzare circuiti di check aancati ad un circuito principale ma meno completi di quest'ultimo. Il compito dei circuiti di check è quello di eseguire determinate operazioni sugli ingressi e poi confrontare il risultato di tali operazioni con il risultato del circuito principale al ne di determinare se si sia vericato un errore oppure no. Data la minor complessità del blocco checker spesso 3.5. TECNICHE A LIVELLO DI ARCHITETTURA 45 queste tecniche possono rilevare la presenza degli errori solo con una certa probabilità (random checker). Un'altra tecnica molto usata per evitare che i SEFI possano compromettere completamente il funzionamento del dispositivo è quella di utilizzare i timer Watchdog, presenti su tutti i moderi processori. Questa può essere considerata una tecnica mista hardware/software: nel processore è presente un timer che conta a ritroso, quando il conteggio è nito (alcune decine di cicli di clock al massimo) viene innescato un interrupt. Durante la normale esecuzione del codice non dovrebbe vericarsi nessun interrupt in quanto ogni N istruzioni viene inserita un'istruzione di reset del Watchdog ed il conteggio riparte dall'inizio. Se però si verica un SEFI ed il programma va in crash non vengono più eseguite istruzioni di reset, il Watchdog termina il conteggio e viene innescato l'interrupt: la subroutine di codice corrispondente all'interrupt dovrà eseguire le operazioni necessarie a ripristinare il sistema e rieseguire eventuali computazioni. Per ultima viene lasciata l'importantissima tecnica dell'Error Correcting Code, basata su un altro concetto di ridondanza, ovvero la ridondanza di informazione. 3.5.1 Parity Bit ed Error Correcting Code (ECC) Le tecniche basate su bit di parità e su codici a correzione d'errore sfruttano il concetto di ridondanza di informazione, ovvero il dato che si vuole memorizzare (ad esempio un byte di informazione) viene salvato in forma codicata aggiungendo uno o più bit necessari solo all'identicazione di un errore ed eventualmente alla localizzazione del bit danneggiato. Nell'ultimo caso, più complesso del primo, è quindi possibile anche correggere l'errore. Come si vede l'informazione che deve essere eettivamente memorizzata è maggiore a causa dei bit aggiunti (ridondanza). Per codicare il dato, ovvero generare i bit necessari all'individuazione/correzione dell'errore è necessario un Encoder (codicatore), che è un componente puramente combinatorio. Il dato codicato deve essere salvato in un registro o in una memoria: dovendo ospitare anche i bit in eccesso, quindi parole più lunghe, anche memorie e registri devono essere progettati più grandi (per parole di lunghezza più lunga). Il componente più importante 46CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI inne è il Decoder (decodicatore), posto in uscita al registro/memoria, il cui compito non è solo quello di decodicare la parola in memoria e restituire l'informazione originaria, ma anche quello di identicare l'errore e segnalarlo al processore ed eventualmente correggere l'errore e restituire direttamente il dato corretto. La progettazione del decoder, realizzato con elettronica puramente combinatoria, è molto più complessa dell'encoder. Entrambi encoder e decoder devono essere più resistenti alle radiazioni in quanto componenti sensibili: se l'alterazione del dato avviene durante la codica o la decodica (SET) viene comunque memorizzato/prelevato un dato errato. I codici ECC possono essere classicati in 3 categorie con complessità crescente, ma anche potenzialità crescente: 1. Codici in grado di rilevare errori, ma non di correggerli. Questo è il caso del controllo con bit di parità (Parity Check), il sistema è semplicissimo e prevede l'aggiunta di un solo bit, indierentemente dalla lunghezza della parola di partenza. Il Parity Check permette di rilevare un solo errore. 2. Codici in grado di correggere un errore e rilevarne al massimo due, come il codice Hamming. 3. Codici in grado di rilevare e correggere errori multipli (2 o anche più), molto complessi e di solito non realizzabili semplicemente in forma hardware. In questo caso vengono implementati nell'algoritmo del programma. Un esempio che può essere implementato sia in software che in hardware è il Reed-Solomon Code. Parity Check Il Parity check (che è un caso particolare del CRC, Cyclic Redundancy Check) ed esiste in due varianti: parità pari (even) e parità dispari (odd). Nel primo caso il bit di parità aggiunto vale 1 se la parola di partenza contiene un numero dispari di 1, se ne contiene un numero pari vale 0. In entrambi i casi la parola codicata contiene un numero pari di 1. Se durante la decodica si rileva un numero dispari di 1 signica che c'è stato un errore. Nel secondo caso la condizione individuata non è quella di parità ma quella di disparità, ovvero viene generato un 1 se la parola di partenza contiene un numero pari di 1, in questo modo la parola codicata ne conterrà un numero dispari. Se la parola di partenza contiene già un numero dispari di 1 allora l'odd-parity bit viene lasciato a 0. Sia l'encoder che il decoder (che in questo caso è un semplice rilevatore) possono essere costruiti con porte AND e OR (somma di prodotti), oppure mediante sole porte EXOR. 3.5. TECNICHE A LIVELLO DI ARCHITETTURA Hamming Code 47 Il Codice di Hamming è un ECC (o meglio un EDAC, Error Detection And Correction Code) in grado di rilevare errori su un bit e sue due bit ed è in grado di correggere l'errore nel caso in sui sia avvenuto su un solo bit. Encoder e Decoder possono essere realizzati in modo abbastanza semplice utilizzando porte EXOR, AND, OR e NOT, in particolare l'encoder sfrutta solo porte EXOR (più semplice del decoder, che deve anche poter correggere l'errore). Il codice hamming soddisfa la seguente relazione tra numero di bit della parola originale k m, ed il numero di bit della parola codicata c = m + k, dove è il numero dei bit di check aggiunti: 2k ≥ m + k + 1 = c + 1 k=4 k = 3 si La relazione deve essere letta così: se ad esempio m ≤ 11 bit. Con ha che deve essere m ≤ 4. Nel m = 8 bit (1 Byte) quindi dovranno essere usati 4 bit di parità e la proteggere una parola lunga caso di una parola con bit di check, essi riusciranno a parola codicata sarà composta da 12 bit. Il codice si basa sull'utilizzo di 4 bit di parità calcolati su 4 sottogruppi di bit selezionati dalla parola di partenza. Non si entrerà in dettaglio su come vengano scelti questi raggruppamenti, che dipendono dalla formulazione matematica del codice di Hamming, si riporta però di seguito una tabella che mostra come avvengono i raggruppamenti per parole no a 20 bit. Si noti che il raggruppamento segue un ben determinato schema che può essere facilmente esteso. Di seguito viene riportato un esempio di codica e decodica nel baso di parola da 8 bit, in particolare si veda la generazione dei 4 bit di parità (P1...P4) e la relativa collocazione nella parola codicata in accordo con la tabella sopra riportata. La decodica avviene generando 4 valori che prendono il nome di Syndrome, da tali valori è possibile determinare se vi è stato un errore ed individuare il bit errato e quindi correggerlo mediante la generazione di un'opportuna maschera (si veda la tabella di verità). La maschera viene poi applicata alla parola codicata, mantenendo il bit inalterato se il relativo bit nella maschera è 0, oppure invertendolo se il bit nella maschera è 1, si ottiene dunque il dato (byte) corretto. Utilizzando un ulteriore bit di parità complessivo è possibile determinare il vericarsi di due errori. 48CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI Applicazione ai Microprocessori Il codice di Hamming viene molto utilizzato nei microprocessori Rad Hard (è la tecnica più usata), può essere utilizzato per proteggere registri e memorie: viene utilizzato un encoder prima del registro/memoria ed un decoder dopo il registro/memoria, in questo modo ogni dato in ingresso viene codicato ed ogni dato in uscita decodicato. Se si verica un SEU in un elemento di memoria il dato viene automaticamente corretto ed il processore viene informato dell'avvenuto errore in modo che il dato nel registro/memoria possa essere riscritto con la versione corretta. A tale scopo viene utilizzato un circuito di refresh che si occupa di riportare in ingresso al registro il dato corretto decodicato. Nelle seguenti gure è illustrata la tecnica dell'ECC applicata ad un registro e ad una memoria. Un vantaggio di questa tecnica consiste nel fatto che è possibile utilizzare un solo encoder ed un solo decoder per diversi registri o memorie utilizzando un opportuno sistema di indirizzamento. Si pensi alla memoria: ogni riga contiene una parola codicata ma viene utilizzato un solo encoder ed un solo decoder per tutta la memoria. Lo stesso concetto si può applicare ai Register Files e ad altri elementi di memoria presenti nel microprocessore. Lo svantaggio invece è che comunque encoder e decoder introducono numerosi transistor in più, quindi area occupata maggiore, potenza dissipata maggiore e costo maggiore. Per questo motivo si cerca proteggere con ECC il datapath di una CPU utilizzando in modo conveniente decoder ed encoder al ne di ridurne il numero. 3.6. TECNICHE A LIVELLO DI SISTEMA (O CHIP) 49 Considerando il codice Hamming precedentemente esposto si ha un altro svantaggio: l'impossibilità di correggere errori multipli sulla stessa parola, causati da MBU. I MBU sono rilevanti nelle tecnologie più moderne dove la densità di memoria è elevata ed il vericarsi di MBU è altamente probabile. L'unica alternativa per correggere errori multipli è quella di utilizzare codici più complessi come il Reed-Solomon: in letteratura si trovano esempi di memorie protette con questo tipo di codica direttamente via hardware, tuttavia essendo la realizzazione hardware molto complessa e dispendiosa di area spesso la codica viene implementata via software (aancata comunque dalla Hamming hardware). Si devono comunque sempre adottare buone tecniche di layout, posizionando sicamente le celle di memoria appartenenti alla stessa parola distanti per limitare i MBU, come già visto. 3.6 Tecniche a livello di Sistema (o Chip) Le tecniche a livello di intero sistema si basano sulla ridondanza hardware, ovvero vengono replicati interi sistemi, interi microprocessori, intere memorie. I processori possono essere fatti lavorare in parallelo sugli stessi dati ed in caso di SEFI su uno di essi l'altro processore continuerà comunque a lavorare. Un circuito di controllo esterno ai due processori può gestire la situazione monitorando le attività di entrambe le CPU e scegliendo quale deve avere la priorità. In caso di malfunzionamenti rilevati su una CPU la seconda può continuare con le operazioni mentre la prima viene reinizializzata. La ridondanza hardware è l'unico sistema che può proteggere anche dalla rottura permanente di un chip. 3.7 Tecniche a livello Software Tra le tecniche a livello software rientrano tutti quegli algoritmi che permettono il controllo errori e la loro eventuale correzione. Tra gli Error Correction Codes uno si presta particolarmente per realizzazioni software piuttosto che hardware (data la complessità): si tratta del Reed-Solomon Code (RS). Nel codice vengono realizzate delle subroutine di codica e di decodica che vengono chiamate ogni volta che un dato deve essere scritto o rispettivamente letto dalla memoria principale. Il codice RS si presta bene anche per la trasmissione di dati su lunga distanza: i dati vengono codicati ed inviati alla destinazione, se durante il viaggio i dati subiscono degli errori e possibile ricostruirli durante l'operazione di decodica. Il codice RS è utilizzato ad esempio sui CD/DVD per ricostruire i dati anche in caso di lievi gra, è usato per 50CAPITOLO 3. TECNICHE DI HARDENING: MITIGAZIONE E CORREZIONE DEGLI ERRORI trasmissioni wireless ed a banda larga, ad esempio per ADSL, WiMAX, comunicazioni satellitari, missioni spaziali... Oltre a quanto detto, il programma in esecuzione sulla CPU deve essere ben programmato, robusto, ed adottare sistemi che permettano di vericare l'attendibilità dei risultati: ad esempio (banale) se viene eettuata un'operazione il cui risultato può essere solo compreso in un intervallo di valori è bene vericare che eettivamente lo sia, magari a causa di un valore errato in memoria il risultato è uscito dal range previsto. Precauzioni come questa e l'utilizzo di interrupt e watchdog possono evitare il propagarsi di errori, possono essere rieseguite computazioni o reinizializzato il microprocessore. Capitolo 4 Conclusioni In questo scritto riassumendo abbiamo visto gli eetti delle radiazioni su componenti complessi quali i microprocessori: ne abbiamo esaminato l'architettura, abbiamo visto quali sono gli eetti microscopici e macroscopici prodotti dalle radiazioni, abbiamo catalogato e descritto i possibili eetti da evento singolo ed esaminato le possibili tecniche di hardening. L'uso delle varie tecniche per la realizzazione di processori Rad Hard è a discrezione del progettista, per ogni tecnica si sono visti infatti i pro ed i contro, quindi si dovranno prendere in considerazioni tutti i compromessi a seconda del progetto da realizzare e relativi limiti imposti, esempio costo, massima dissipazione di potenza eccetera. Gli elementi più sensibili dei processori sono i registri e le memorie SRAM: tra tutte le tecniche certamente quella più usata è l'EDAC, che sfrutta gli Error Correction Codes. La possibilità di errori però esiste lo stesso, vi è sempre un punto debole, costituito proprio dai nuovi elementi introdotti per il controllo degli errori (chi controlla i controllori?). Concludendo tutto si traduce in una diminuzione della probabilità d'errore, tale diminuzione è proporzionale alla quantità di ridondanza che viene usata sul componente, ridondanza che può essere hardware, temporale o di informazione. Molta ricerca c'è ancora da fare, come visto è possibile ottimizzare una CPU agendo su diversi livelli, a basso livello operando sui transistor, ad alto livello operando sul sistema nella sua forma più astratta: l'obiettivo è quello di cercare di stare al passo con i tempi ovvero realizzare processori Rad Hard sempre più veloci, mantenendone limitato il consumo e senza sacricare la resistenza alle radiazioni, rimanendo tuttavia anni luce indietro rispetto ai processori commerciali non Rad-hard. 51 52 CAPITOLO 4. CONCLUSIONI Bibliograa [1] Microprocessors and SRAMs for Space: Basics, Radiation Eects and Design; Lawrence T. Clark; Arizona State University; Tempe, Arizona; 2010 [2] SEE Mitigation Strategies for Digital Circuit Design Applicable to ASICS and FPGAs; Fernanda Lima Kastensmidt; Universitade Federal do Rio Grande do Sul; Porto Alegre (RS), Brazil; 2007 [3] Slides del corso di Applicazioni Industriali delle Sorgenti di Radiazioni Ionizzanti; Andrea Candelori; Padova; 2012 [4] Slides del corso di Circuiti Integrati Digitali; Andrea Cester; Padova; 2008 53