Università degli Studi di Padova

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