4.3 Injection de Fautes
4.3.2 G´en´eration des Param`etres
Nous nous int´eressons ici `a la g´en´eration al´eatoire de l’instant d’injection, du
mot et du bit cible.
Sommet de la pile Base de la pile Etape 1 Adresses décroissantes %g6 %psr %l1 %l2 %g7 Base de la pile Sommet de la pile Adresses décroissantes %g6 %psr %l1 %l2 %g7 Contexte %g7 + mot Fin Etape 3 corrompu
Valeur XOR masque
Base de la pile Sommet de la pile Adresses décroissantes %g6 %psr %l1 %l2 %g7 Etape 2 Contexte Base de la pile Sommet de la pile Adresses décroissantes %g6 %psr %l1 %l2 %g7 Contexte Début Etape 3 %g7 + mot Valeur
4.3. Injection de Fautes 79
Obtention du Mot Cible et du Masque
Pour N mots de mˆeme section efficace, le choix se r´esume `a un tirage unique de
1 parmi N. Il suffit de g´en´erer un nombre al´eatoire dans l’intervalle [0 : 1), de le
multiplier parN−1 et d’en prendre la partie enti`ere. En langage C,my_rand()´etant
la fonction qui retourne un nombre entre 0 et 1, floorf() la fonction qui retourne
la partie enti`ere d’une nombre `a virgule flottante et(unsigned int)l’op´eration qui
permet de transformer le type d’une variable en entier non sign´e (cast), cela s’´ecrit :
mot = (unsigned int)floorf( my_rand() * (N - 1) ) ;
Une fois le mot choisi, il reste `a d´eterminer le bit cible. Les mots du LEON ont
une taille de 32 bits. Afin de d´eterminer le masque, on g´en`ere un nombre al´eatoire
dans l’intervalle [0; 1], puis on le multiplie par 31, ensuite on en prend la partie
enti`ere. Cette partie enti`ere donne le nombre de d´ecalages `a gauche que la valeur
0x1 doit subir pour placer le bit cible en position. En C, l’op´erateurrepr´esentant
le d´ecalage `a gauche, cela s’´ecrit :
masque = 0x1 (unsigned int)floorf( my_rand() * 31 ) ;
Obtention du Temps selon le Mod`ele Binomial
Nous rappelons que le mod`ele binomial permet, pour une fluenceF de particules
p
i,i ∈[1 :F], d’obtenir la liste des particules qui doivent conduire `a une injection de
faute. Pour obtenir cette liste, il faut pour chaque particule d´ecider si elle conduira
ou non `a une injection. Nous rappelons que la probabilit´e qu’une particule d´eclenche
un upset est la section efficace σ.
En r`egle g´en´erale, pour obtenir des nombres al´eatoires distribu´es selon une loi
de probabilit´eP(x) donn´ee, on peut utiliser la technique derejection sampling [57].
On borne alors la fonctionP(x) en abscisse (X_MAX), et on g´en`ere un couple (x
1, y
1)
de nombre al´eatoires uniform´ement distribu´es, l’un entre 0 et X_MAX, l’autre entre
0 et 1. Si y
1< P(x =x
1) alors le point x
1est accept´e comme r´ealisation de P(x),
sinon il est rejet´e. La figure 4.8 illustre cette technique.
Dans le cas qui nous int´eresse la loi P(x) est la loi de probabilit´e d’une variable
de Bernoulli. Puisque x ne peut valoir que 1 (succ`es) ou 0 (´echec), il n’est pas
n´ecessaire de tirer un couple de valeurs al´eatoires, une seule est n´ecessaire. Si le
nombre al´eatoire x
1compris entre 0 et 1 est inf´erieur `a la probabilit´e de succ`es p,
alors l’essai est r´eussi. En C, pour chaque particulep
i, le test s’exprime par :
1
y1
y2
x2 x1
x2 accepté
x1 rejeté
X_MAX
(X_MAX, 1)
0
4.3. Injection de Fautes 81
qui retourne 1 si la particule doit ˆetre associ´ee `a une injection de faute, 0 sinon.
Nous rappelons que le mod`ele binomial ne donne pas d’instant d’injection de
faute, puisque nous ne connaissons pas quand arrivent les particules qui sont
s´elec-tionn´ees pour ˆetre associ´ees `a une injection. Afin d’utiliser ce mod`ele, nous cr´eons
artificiellement des temps d’arriv´ee.
Pour une fluence F, nous associons un temps d’exp´erienceT. Le temps d’arriv´ee
t
ide la particule p
i, i ∈[1 :F] est calcul´e selon :
t
i=i×FT
La g´en´eration d’instants d’injection de faute se fait de la mani`ere suivante. Il
suffit de parcourir la liste de particules, et pour chaque particule, g´en´erer un nombre
al´eatoire xentre 0 et 1. Six < σ, une faute doit ˆetre inject´ee, et on calcule le temps
d’injection comme pr´ecis´e ci dessus. En bout de chaˆıne de traitement du mod`ele,
nous obtenons alors une liste d’instants croissants associ´es `a une injection de faute.
Obtention du Temps selon le Mod`ele Poissonnien
Lorsque la fonction inverse de la distribution de probabilit´e cumul´ee de la loiP(x)
existe et a une forme analytique, il est plus efficace de g´en´erer des nombres al´eatoires
selon la m´ethode de la transform´ee inverse (inverse transform) qu’en utilisant la
technique de rejection sampling.
Pour une variable al´eatoire X , si
X =F
−1(U) (4.1)
U ´etant distribu´e al´eatoirement entre 0 et 1, alors X est une variable al´eatoire de
densit´e cumul´ee F(x).
En effet, si X est tel qu’en 4.1 avec F(x) une fonction de densit´e cumul´ee
quel-conque,
P(X ≤x) = P(F
−1(U)≤x)
= P(U ≤F(x)
= F(x)
qui est la d´efinition de la fonction de densit´e cumul´ee de X.
Pour une variable al´eatoire X distribu´ee selon la loi exponentielle de param`etre
λ, F(X) s’´ecrit
Si l’on pose U =F(X), on obtient
X =−ln(1λ−U) (4.2)
En pratique, pour une section efficace σ et un flux Φ, λ =σ×Φ, on se place `a
l’instantt
0= 0. On g´en`ereX selon l’´equation 4.2, et X donne le tempst
1=X de la
premi`ere injection. On se place ensuite en t
1et on g´en`ere un nouveau X qui donne
t
2=t
1+X, et ainsi de suite.
D´ecoupage du Temps d’Injection en Cycles d’Horloge et Ex´ecutions
Afin d’obtenir des temps d’injections relatifs `a l’ex´ecution en cours, et exprim´es
en cycles d’horloge, plusieurs ´etapes sont n´ecessaires.
Tout d’abord on d´ecoupe la liste des fautes `a injecter (exprim´ee en temps absolu
T) en temps relatifs `a l’ex´ecution t :
t= (T)modulo (dur´ee de l’ex´ecution)
Ensuite, on convertit les temps t en cycles d’horloge :
n
cycle= t
f
f ´etant la fr´equence du processeur.
Enfin, dans le cas o`u plusieurs injections par ex´ecution doivent ˆetre r´ealis´ees, il
faut prendre en compte la dur´ee de la routine CEU et d´ecaler d’autant les prochaines
injections. PourN injections `a r´ealiser dans une mˆeme ex´ecution, avecT
CEUla dur´ee
d’une injection, n
i(l’instant de la i-`eme injection pour i∈[1 :N]) devient
n
i+ (i−1)×T
CEUOn obtient alors une liste d’instants d’injection de fautes par ex´ecution et mesur´ee
en coups d’horloge processeur. Ce traitement est repr´esent´e sur la figure 4.9
Dans le document
INJECTION DE FAUTES SIMULANT LES EFFETS DE BASCULEMENT DE BITS INDUITS PAR RADIATION
(Page 102-107)