Vous êtes sur la page 1sur 148

UNIVERSIT DE MONTRAL

GNRATION DE NOMBRES PSEUDO-ALATOIRES SUIVANT UNE


DISTRIBUTION NON-UNIFORME PAR CIRCUITS INTGRS
PROGRAMMABLES
TAREK OULD BACHIR
DPARTEMENT DE GNIE LECTRIQUE
COLE POLYTECHNIQUE DE MONTRAL
MMOIRE PRSENT EN VUE DE LOBTENTION
DU DIPLME DE MATRISE S SCIENCES APPLIQUES
(MICROLECTRONIQUE)
AOT 2008
c _Tarek Ould Bachir, 2008.
UNIVERSIT DE MONTRAL
COLE POLYTECHNIQUE DE MONTRAL
Ce mmoire intitul:
GNRATION DE NOMBRES PSEUDO-ALATOIRES SUIVANT UNE
DISTRIBUTION NON-UNIFORME PAR CIRCUITS INTGRS
PROGRAMMABLES
prsent par: OULD BACHIR Tarek
en vue de lobtention du diplme de: Matrise s sciences appliques
a t dment accept par le jury dexamen constitu de:
M. DAVID Jean-Pierre, Ph.D., prsident
M. SAWAN Mohamad, Ph.D., membre et directeur de recherche
M. BRAULT Jean-Jules, Ph.D., membre
iv
Science is the belief in the ignorance of experts.
Richard Feynman
v
REMERCIEMENTS
Les remerciements qui suivent sadressent toutes ces personnes qui, de prs ou de loin,
mont aid faire dune ide griffonne sur une feuille de papier un sujet de recherche
srieux. Aussi, une pense particulire est adresse au professeur Sawan, mon directeur
de recherche, qui ma donn la libert de poursuivre mes chimres avec lassurance de
sa patience, de son appui intellectuel et matriel. Cest grce son ouverture desprit
aux ides nouvelles et grce aux moyens dont dispose son laboratoire Polystim que ce
travail a pu tre men bien et je ne trouverai jamais les mots pour exprimer toute ma
gratitude.
Jaimerais aussi adresser mes remerciements aux professeurs Jean-Pierre David et
Jean-Jules Brault qui, en plus daccepter de payer de leur temps et de siger sur mon
jury, ont eu lamabilit de me gratier de leurs conseils et suggestions durant la pour-
suite de mes travaux. Leurs contributions informelles elles seules sufsent pour me
laisser penser que le monde acadmique a encore pour lui la force du travail collgial
qui manque tant lindustrie. Quils sachent quel point jai pu estimer leur aide pr-
cieuse et apprci que nos discussions franches et honntes naient jamais t prcdes
par la signature de NDA...
Jaimerais aussi remercier les tudiants stagiaires qui ont contribu par leurs efforts
donner chair certaines technicalits de ce travail. Je pense particulirement Laurent
Faniel, Majed Benmahfoudh, Jonathan Boisvert et Laurent Wacker. Leur aide a t sub-
stantielle et les citer ici va de soi.
Jaimerais remercier les tudiants du laboratoire Polystim qui ont su me faire une place
dans le cercle des tudiants du GRM. Ils ont su crer une atmosphre propice rendre
moins gris les couloirs des bibliothques et instaurer un climat de camaraderie chaleu-
reuse de par leur vie sociale active. Je pense particulirement Jonathan Coulomb, dont
lrudition et larticulation scientique mont plus que bnici, je pense Amer-Elias
Ayoub, lui qui garde le sourire en toutes les circonstances (et on sait parfois lesquelles !)
vi
et qui se les dore aujourdhui Antibes, je pense Flix Chnier, lui qui na pas rechi-
gn aller se les geler pour accompagner sous la pluie un fumeur dshrit et nalement
bien sr ! Roula Ghannoum qui battra cette anne le record des citations dans la
section des remerciements.
Je ne pourrais manquer de remercier les amis et les proches qui ont largement fait la
preuve de leur indfectible appui. chacun deux revient une petite phrase qui ponctue
mon parcours : Guillaume Pichenot qui prconisait Fonce ! au moment de faire le
saut vers ce sujet de recherche, Imad Sa qui me raillait en me disant a ta pris
trois ans et demi pour faire un bac et un Pierre Laurent pour faire ta matrise , Kamila
Belhocine et son interjection Vous soutenez la matrise ? et puis, nalement, ma petite
Fanny Lalonde qui ne cachait pas son impatience avec son inoubliable Jai hte que a
nisse . quoi jespre rpondre aujourdhui : Voil, cest ni.
vii
RSUM
Lacclration matrielle au moyen de la technologie FPGA connat un intrt croissant
dans le domaine du calcul haute performance. Cet intrt est motiv par les possibilits
dynamiques de ces dispositifs et par leur capacit parallliser les calculs. Dans le cas
des mthodes de Monte Carlo, il a t dmontr que les FPGA permettent dacclrer
les calculs par plusieurs ordres de grandeurs. Ce fait a stimul lactivit de recherche
portant sur les architectures matrielles des gnrateurs de nombres alatoires issus de
distributions non-uniformes qui, jusqualors, navaient t que marginales.
La gnration de distributions non-uniformes en matriel comporte plusieurs ds, prin-
cipalement dus aux difcults que posent lvaluation de fonctions transcendentales
telles que le logarithme, lexponentielle et les fonctions trigonomtriques. Les tech-
niques qui ont cours aujourdhui tentent de cbler les algorithmes connus et doptimiser
leur implmentation sur FPGA par des artices de calcul tels que linterpolation poly-
nomiale, le recours aux architectures Cordic ou encore lapproximation linaire base
dune segmentation non-linaire.
Le prsent travail propose dexplorer un nouvel algorithme de gnration des distribu-
tions non-uniformes qui part du principe que la gnration dune variable alatoire peut
se faire un bit la fois. Cette mthode prend tout son sens quand on songe que tous les
bits peuvent tre gnrs simultanment dans un circuit numrique. Nous posons alors le
modle mathmatique associ cet algorithme et mesurons ltendue de ses capacits.
De l, nous aboutissons une architecture matrielle gnrale et universelle que nous
dclinons pour les distributions normale et exponentielle. Nous tudions alors le com-
portement empirique sur FPGA de ces gnrateurs, tant du point de vue des proprits
statistiques que des critres qualitatifs telle que la corrlation srielle, le tout avec des
rsultats concluants.
viii
ABSTRACT
Hardware acceleration by means of FPGA technology is of growing interest to the realm
of High Peformance Computing. This interest is justied by the dynamic possibilities of
these devices and their capacity to parallelize computation. Numerous work have been
recently done providing positive insights that Monte Carlo methods can be enhanced by
the resort to FPGAs from a speed performance point of view. This fact has stimulated
the research for hardware non-uniform variate generators which hitherto had only been
marginal.
Hardware non-uniform variates generation comprises several challenges, mainly the eva-
luation of transcendental functions such as the logarithm, sine, cosine and the exponen-
tial functions. The techniques suggested up to now try to wire the known algorithms
and to optimize their implementation on FPGA by digital methods such as polynomial
interpolation, Cordic implementation and non-linear segmentation.
We rather suggest an investigation path towards an algorithm generating the non-uniform
variate one bit at a time. The algorithm is hardware-dedicated since all bits can be gene-
rated in parallel in a digital circuit. We thus introduce the mathematical model associated
with this algorithm and measure the extent of its application. We then suggest a generic
and universal architecture that we optimize for the normal and exponential distributions.
The empirical behavior of our design is implemented on FPGA and considered as well
from the statistical point of view as of qualitative criteria such as the serial correlation,
the whole with conclusive results.
ix
TABLE DES MATIRES
REMERCIEMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
RSUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
TABLE DES MATIRES . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
LISTE DES FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
LISTE DES TABLEAUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
LISTE DES ANNEXES . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
LISTE DES NOTATIONS ET DES SYMBOLES . . . . . . . . . . . . . . . . xvii
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
CHAPITRE 1 NOTIONS DE BASE DES GNRATEURS ALATOIRES . 4
1.1 Prambule au propos . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Gnration de la distribution uniforme . . . . . . . . . . . . . . . . . 6
1.3.1 Formulation gnrale . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Critres de qualit dun gnrateur uniforme . . . . . . . . . . 9
1.3.3 Quelques modles populaires . . . . . . . . . . . . . . . . . 11
1.3.4 Implmentations matrielles des gnrateurs uniformes . . . . 12
1.3.5 Considrations sur la reprsentation machine des nombres rels 14
1.4 Gnration des distributions non-uniformes . . . . . . . . . . . . . . 15
1.4.1 Mthodes universelles . . . . . . . . . . . . . . . . . . . . . 16
x
1.4.2 Mthodes Box-Muller . . . . . . . . . . . . . . . . . . . . . 18
1.4.3 Mthode de Wallace . . . . . . . . . . . . . . . . . . . . . . 20
1.4.4 La Ziggurat . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CHAPITRE 2 REVUE DE LA LITTRATURE PERTINENTE . . . . . . . 24
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Contextes dutilisation . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.1 Hritage scientique de larithmtique stochastique . . . . . . 26
2.2.2 Nouvelles avenues . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.3 Distributions vises . . . . . . . . . . . . . . . . . . . . . . 29
2.3 Architectures matrielles des gnrateurs de nombres alatoires . . . . 30
2.3.1 Architectures universelles . . . . . . . . . . . . . . . . . . . 31
2.3.2 Gnration matrielle de la distribution exponentielle . . . . . 34
2.3.3 Gnration matrielle de la distribution normale . . . . . . . . 37
2.3.4 Note sur lutilisation des bits uniformes . . . . . . . . . . . . 41
2.4 Qualication dun gnrateur non-uniforme . . . . . . . . . . . . . . 43
2.4.1 Technique reconnue . . . . . . . . . . . . . . . . . . . . . . 43
2.4.2 Techniques couramment appliques . . . . . . . . . . . . . . 44
2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
CHAPITRE 3 MODLE MATHMATIQUE . . . . . . . . . . . . . . . 46
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Principe de base du modle . . . . . . . . . . . . . . . . . . . . . . 46
3.2.1 Formulation gnrale . . . . . . . . . . . . . . . . . . . . . 47
3.2.2 Mise en contexte applique aux rseaux Baysiens . . . . . . . 48
3.2.3 Mise en contexte applique aux arbres de dcision binaire . . . 51
3.2.4 Difcults dans la mise en uvre matrielle . . . . . . . . . . 54
3.3 Dveloppement du modle mathmatique . . . . . . . . . . . . . . . 54
xi
3.3.1 Expression compacte de la fonction nodale . . . . . . . . . . 55
3.3.2 Applications aux distributions usuelles . . . . . . . . . . . . . 57
3.3.3 Spcicits des distributions exponentielle et normale . . . . . 58
3.4 Hypothses et mthodologie . . . . . . . . . . . . . . . . . . . . . . 61
3.4.1 Reprsentation des nombres . . . . . . . . . . . . . . . . . . 62
3.4.2 Utilisation des bits uniformes . . . . . . . . . . . . . . . . . 63
3.4.3 Qualication des gnrateurs proposs . . . . . . . . . . . . . 63
3.4.4 Processus de conception et de validation . . . . . . . . . . . . 64
3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
CHAPITRE 4 ARCHITECTURES DES GNRATEURS ALATOIRES . 66
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2 Architecture universelle . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2.1 Gnrateur dune distribution de Bernoulli . . . . . . . . . . . 67
4.2.2 Architecture collaborative des noeuds . . . . . . . . . . . . . 69
4.2.3 Architecture des units nodales . . . . . . . . . . . . . . . . 73
4.2.4 Choix dun gnrateur uniforme . . . . . . . . . . . . . . . . 74
4.3 Application la distribution exponentielle . . . . . . . . . . . . . . . 75
4.3.1 Vue globale de larchitecture . . . . . . . . . . . . . . . . . 75
4.3.2 tage de sortie . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3.3 Architecture alternative . . . . . . . . . . . . . . . . . . . . 77
4.4 Application la distribution normale . . . . . . . . . . . . . . . . . 78
4.4.1 Implmentation de la fonction nodale . . . . . . . . . . . . . 78
4.4.2 Implmentation arithmtique des noeuds linaires . . . . . . . 79
4.4.3 Implmentation stochastique des noeuds linaires . . . . . . . 80
4.4.4 Implmentation alternative des noeuds linaires . . . . . . . . 82
4.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
xii
CHAPITRE 5 IMPLMENTATIONS ET RSULTATS EXPRIMENTAUX 85
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.2 Simulation algorithmique . . . . . . . . . . . . . . . . . . . . . . . 85
5.2.1 Sommaire des sources Matlab . . . . . . . . . . . . . . . . . 86
5.2.2 Corrlation srielle . . . . . . . . . . . . . . . . . . . . . . 87
5.2.3 Implmentation arithmtique des nuds . . . . . . . . . . . . 90
5.3 Implmentation matrielle . . . . . . . . . . . . . . . . . . . . . . . 92
5.3.1 Gnrateur de lexponentielle . . . . . . . . . . . . . . . . . 92
5.3.2 Rsultats obtenus pour la distribution normale . . . . . . . . . 93
5.4 Acclration matrielle . . . . . . . . . . . . . . . . . . . . . . . . 95
5.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
CONCLUSION GNRALE . . . . . . . . . . . . . . . . . . . . . . . . . . 98
RFRENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
ANNEXES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
xiii
LISTE DES FIGURES
FIG. 1.1 Illustration de la mthode de linverse . . . . . . . . . . . . . 5
FIG. 1.2 Nuages de points issus du RANDU . . . . . . . . . . . . . . 10
FIG. 1.3 Structure gnrale dun LFSR. . . . . . . . . . . . . . . . . . 13
FIG. 1.4 Histogramme en virgule ottante . . . . . . . . . . . . . . . 14
FIG. 1.5 Schma de la construction de la Ziggurat . . . . . . . . . . . 22
FIG. 2.1 Gnrateur matriel de la distribution de Bernoulli . . . . . . . 26
FIG. 2.2 Variante du gnrateur matriel de la distribution de Bernoulli . 27
FIG. 2.3 Segmentation non-linaire de linverse de la fonction de rpartition 32
FIG. 3.1 Aperu gnral de lapproche dichotomique . . . . . . . . . . 47
FIG. 3.2 RBB totalement connect . . . . . . . . . . . . . . . . . . . 50
FIG. 3.3 Arbre de dcision binaire . . . . . . . . . . . . . . . . . . . 52
FIG. 3.4 Arbre de dcision binaire de Knuth . . . . . . . . . . . . . . 53
FIG. 3.5 Illustration du calcul de la fonction nodale . . . . . . . . . . . 55
FIG. 3.6 Erreur dapproximation pour lexponentielle . . . . . . . . . . 59
FIG. 3.7 Erreur dapproximation pour la normale . . . . . . . . . . . . 60
FIG. 4.1 Variante propose du gnrateur de la distribution de Bernoulli . 68
FIG. 4.2 Gnration pipeline des tats des nuds . . . . . . . . . . . 69
FIG. 4.3 Structure collaborative des nuds . . . . . . . . . . . . . . . 70
FIG. 4.4 Bits uniformes et structure collaborative . . . . . . . . . . . . 71
FIG. 4.5 Superposition des donnes et des bits uniformes . . . . . . . . 72
FIG. 4.6 Architecture dune unit nodale . . . . . . . . . . . . . . . . 73
FIG. 4.7 Esquisse dun gnrateur dexponentielle . . . . . . . . . . . 75
FIG. 4.8 Architecture dun gnrateur dexponentiel . . . . . . . . . . 76
FIG. 4.9 Architecture dun nud stochastique . . . . . . . . . . . . . . 82
FIG. 4.10 Architecture alternative du gnrateur de la normale . . . . . . 83
FIG. 5.1 Exponentielle par RBB . . . . . . . . . . . . . . . . . . . . 88
xiv
FIG. 5.2 Corrlation srielle : scnario A . . . . . . . . . . . . . . . . 88
FIG. 5.3 Corrlation srielle : scnario B . . . . . . . . . . . . . . . . 89
FIG. 5.4 Corrlation srielle : scnario C . . . . . . . . . . . . . . . . 89
FIG. 5.5 Rsultats du test du
2
pour lexponentielle . . . . . . . . . . 90
FIG. 5.6 Rsultats du test du
2
pour la normale . . . . . . . . . . . . 91
FIG. 5.7 Monte Carlo vs. FPGA . . . . . . . . . . . . . . . . . . . . 96
xv
LISTE DES TABLEAUX
TAB. 2.1 Rcapitulatif des distributions implmentes en matrielles . . 29
TAB. 2.2 Rcapitulatif des gnrateurs de gaussienne . . . . . . . . . . 40
TAB. 3.1 Fonctions nodales pour le problme du d. . . . . . . . . . . . 51
TAB. 3.2 Application de la fonction nodale aux distributions usuelles . . 57
TAB. 4.1 Diffrents scnarios touchant les bits uniformes. . . . . . . . . 72
TAB. 4.2 Paramtres des nuds linaires de la gausienne. . . . . . . . . 79
TAB. 4.3 Paramtres des nuds stochastiques. . . . . . . . . . . . . . . 82
TAB. 5.1 Rcapitulatif des gnrateurs de gaussienne complet . . . . . . 94
xvi
LISTE DES ANNEXES
ANNEXE I SOURCES MATLAB . . . . . . . . . . . . . . . . . . . . 108
I.1 Gnrateur universel . . . . . . . . . . . . . . . . . . . . . . . . . 108
I.2 Test du
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
I.3 Gnrateur de lexponentielle . . . . . . . . . . . . . . . . . . . . . 113
I.4 Gnrateur de la distribution normale . . . . . . . . . . . . . . . . . 115
I.5 Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
ANNEXE II SOURCES VHDL . . . . . . . . . . . . . . . . . . . . . 120
II.1 Sources gnriques . . . . . . . . . . . . . . . . . . . . . . . . . . 120
II.2 Sources du gnrateur de la distribution exponentielle . . . . . . . . . 123
ANNEXE III SOURCES C . . . . . . . . . . . . . . . . . . . . . . . . 131
III.1 Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
xvii
LISTE DES NOTATIONS ET DES SYMBOLES

i
: pente de la fonction nodale du nud i de la normale

i
: ordonne en zro de la fonction nodale du nud i de la normale

i
: fonction nodale
: paramtre de la distribution exponentielle
: esprance de la distribution normale
: priode dun gnrateur alatoire

a
: ratio de bits uniformes sur les bits non-uniformes
: cart-type de la distribution normale
a
i
: tat du nud A
i
dun rseau baysien
a : tat du rseau baysien

i
: tat des parents du nud A
i
dun rseau baysien
A
i
: nud i dun rseau baysien
f(x) : fonction de densit dune loi de probabilit
F(x) : fonction cumulative dune loi de probabilit
g(x) : fonction de densit dune loi de probabilit majorante
h : pas de discrtisation de la variable alatoire non uniforme
H
0
: hypothse zro dun test statistique
i : indice des nuds dun rseau baysien
M
1
: facteur de normalisation dun gnrateur uniforme
^ : distribution normale
N : taille dune population alatoire
u : variable alatoire uniforme
U : distribution uniforme
x : variable alatoire non-uniforme
X
n
: tat dun gnrateur uniforme la squence n
1
INTRODUCTION
Lintrt scientique de disposer de squences de nombres alatoires est contemporain
au dveloppement des calculateurs sophistiqus que sont nos ordinateurs modernes. Les
premires machines (lEDVAC par exemple) taient lentes et peu performantes en com-
paraison des standards daujourdhui. Aussi, effectuer des calculs complexes tait une
tche tellement difcile que loption de recourir des processus stochastiques fut consi-
dre attentivement pour viter les cueils qui en dcoulaient. Aussi saugrenue que lide
puisse sembler, coner les sciences exactes au hasard allait donner des rsultats plus
quimpressionnants.
Le problme de la complexit des calculs stait pos avec acuit aux chercheurs du la-
boratoire national de Los Alamos dans le cadre du projet entourant la bombe atomique
et connu sous son nom de code : Projet Manhattan . Les physiciens tentaient de si-
muler des phnomnes au niveau subatomique pour mettre au point la bombe ; mais ils
ne disposaient que de machines peu performantes et difciles programmer. Les esprits
les plus brillants furent engags et mis contribution parmi lesquels Fermi, Metropo-
lis et von Neumann et ces derniers proposrent une mthode de calcul stochastique
quils baptisrent mthode Monte Carlo en rfrence la principaut europenne et ses
clbres casinos o les jeux de hasard sont lgion.
Au fur des annes, les mthodes Monte Carlo furent tudies en profondeur et se rpan-
dirent rapidement de la physique dautres domaines scientiques. On les retrouve au-
jourdhui dans des branches du savoir aussi diverses que la biologie, lingnierie, lco-
nomie et la nance entre autres. Les mthodes Monte Carlo exploitent le hasard pour
amliorer les performances des algorithmes de calcul tout en rduisant leur complexit.
Mais pour ce faire, les mthodes Monte Carlo ont besoin de gnrateurs de nombres
alatoires rapides, ables et statistiquement robustes.
2
On distingue deux grandes familles de gnrateurs alatoires :
1. Les gnrateurs uniformes ;
2. Les gnrateurs non-uniformes.
Les premiers visent gnrer des nombres de la distribution uniforme U(0, 1). Ils forment
la base fondamentale de toutes les thories stochastiques. Aussi, un corpus scientique
important leur est consacr. Les seconds sont dsigns par une dnition ngative car ils
visent gnrer toutes les distributions autres que luniforme. Ces gnrateurs exploitent
gnralement les gnrateurs uniformes pour parvenir leur n
1
.
Les gnrateurs uniformes tant essentiels nombre dutilisations scientiques et in-
dustrielles, des implmentations matrielles ont t trs tt tudies et mises en uvre
avec succs. linverse, les nombres issus des distributions non-uniformes ont toujours
t gnrs en logiciel. Nanmoins, la rduction de la taille des circuits numriques in-
tgrs et la croissance de leurs capacits ont rcemment stimul la recherche portant
sur les implmentations matrielles des gnrateurs de distributions non-uniformes. Une
des motivations importantes de ces travaux est lacclration matrielle des mthodes
Monte Carlo au moyen de FPGA, particulirement pour des applications en nance, en
physique et en biologie.
Lapproche unanimement admise pour raliser ces gnrateurs non-uniformes consiste
cbler les algorithmes logiciels connus. Mais les FPGA imposent des restrictions
quant la taille de la mmoire et la reprsentation des rels qui contraignent nota-
blement cette approche. Une autre difcult de cette avenue rside dans lvaluation
efciente des fonctions transcendantales, inhrentes au fonctionnement des algorithmes
de gnration des distributions les plus populaires.
1
Certains algorithmes de gnration de nombres alatoires suivant une distribution non-uniforme nont
pas recours des gnrateurs uniformes. Nous considrerons la question plus en dtail au chapitre 1.
3
Le travail qui suit tente douvrir le champ une nouvelle avenue de recherche dans lal-
gorithmie des gnrateurs de distributions non-uniformes, particulirement oriente vers
la mise en uvre matrielle. Partant de la prmisse que les nombres alatoires puissent
tre gnrs un bit la fois, nous examinons le modle mathmatique sous-jacent et pro-
posons une architecture matrielle universelle pour les gnrateurs non-uniformes dont
nous proposons dtudier les capacits et les limites.
Le restant de ce mmoire sarticule comme suit. Au chapitre 1, nous passons en revue les
notions de base de la gnration alatoire de nombres suivant les distributions uniformes
et non-uniformes. Au chapitre 2, nous prsentons une revue de la littrature moderne an
de bien cerner ltat de lart de la gnration alatoire matrielle, noncer les motivations
qui ressortent des travaux tudis et bien comprendre les ds qui se posent aujourdhui.
Au chapitre 3, nous dtaillons notre approche algorithmique et dveloppons le modle
mathmatique qui sy rattache. Le chapitre 4 est consacr larchitecture universelle
tire de notre algorithme et son application aux distributions normale et exponentielle.
Le chapitre 5 dtaille la mise en uvre physique de larchitecture des distributions nor-
male et exponentielle et discute les rsultats exprimentaux obtenus la lumire des
techniques vues au chapitre 2. Nous terminons par une conclusion gnrale o nous
suggrons galement quelques pistes venir.
4
CHAPITRE 1
NOTIONS DE BASE DES GNRATEURS ALATOIRES
1.1 Prambule au propos
Le sujet de la gnration de nombres alatoires en matriel comporte deux aspects dis-
tincts : le premier concerne lalgorithmie, lautre larchitecture. Nous englobons dans
lalgorithmie les notions thoriques et mathmatiques impliques dans la formulation
dun modle de calcul, les critres statistiques mme de qualier ces modles et les
considrations pratiques qui les entourent (lutilisation de la mmoire par exemple).
Laspect architectural est ds lors vu comme la transposition du corpus algorithmique
dans la mise en uvre de circuits numriques, en considrant davantage les aspects ma-
triels tels que les contraintes technologiques, les limitations techniques ou la reprsen-
tation des nombres.
Pour cette raison, nous avons jug opportun de dbuter le mmoire par un survol des
notions de base de la gnration des nombres alatoires. Notre dsir est de faciliter la
lecture des chapitres subsquents et dexplorer la littrature moderne en vitant de sem-
ptrer dans les technicalits des trop nombreux algorithmes exploits par les auteurs.
Le domaine de la gnration des nombres alatoires englobe en effet une pluralit de
dveloppements mathmatiques, riches et complexes, auxquels on pourrait facilement
consacrer des ouvrages complets. Il nous et t difcile de prtendre lexhaustivit si
nous lavions ambitionn, aussi avons-nous jug plus que raisonnable de ne couvrir de
cette matire que les parties qui nous seront utiles dans la mise en application matrielle.
5
1.2 Introduction
La gnration alatoire de nombres issus dune distribution non-uniforme repose sur la
gnration pralable de nombres indpendants et identiquement distribus (i.i.d.) suivant
luniforme U(0, 1). Supposons que nous voulions gnrer des nombres suivant une den-
sit de probabilit f(x). Nous commencerons par observer que la fonction de densit de
probabilit f(x) admet une fonction de rpartition
1
F(x), donne par :
F(x) =

f(t)dt (1.1)
En supposant que nous disposions de nombres i.i.d. u suivant luniforme U(0, 1), il de-
vient ais de gnrer x en prenant x = F
1
(u) [15]. Aussi, la gnration dune distribu-
tion non-uniforme f(x) est une tche simple, en autant que lon dispose dun gnrateur
uniforme able et que lon puisse surtout valuer linverse de la fonction de rpartition
F
1
(u).
FIG. 1.1 Illustration de la mthode de linverse : (a) Fonction de densit f(x), (b) Inverse
de la fonction de rpartition x = F
1
(u).
1
Dans le cas o x est une variable discrte, F(x) est appel une distribution de masse.
6
Cette aisance de calcul nest pas toujours garantie et il faut alors faire preuve ding-
niosit pour rsoudre certains problmes difciles. Il arrive aussi que le calcul de lin-
verse soit possible mais ne puisse se faire en des temps raisonnables. Considrant le
fait quune simulation stochastique puisse impliquer la gnration de milliards dchan-
tillons dune distribution donne, un gain de temps dexcution de quelques fractions de
micro-seconde par chantillon suft justier le recours des mthodes moins univer-
selles mais aux performances meilleures.
Nanmoins, toutes les mthodes dveloppes jusquici, autant les mthodes universelles
(telle que la mthode de linverse) ou des mthodes spciques (telle que la Ziggurate
[41]), toutes, quelques rares exceptions prs, usent de la distribution uniforme U(0, 1)
pour parvenir leur n. Aussi, la connaissance adquate de la gnration de cette der-
nire est importante pour le travail qui nous concerne ici. La section 1.3 couvre cette
matire pour que soient bien saisies les subtilits de la gnration des nombres ala-
toires. La section 1.4 suit et complte cette tude en abordant la thorie de la gnration
des distributions non-uniformes.
1.3 Gnration de la distribution uniforme
Quand on considre la gnration de distributions non-uniformes, le choix dun gnra-
teur uniforme est gnralement laiss la discrtion de lusager. Aussi, la disponibilit
dun gnrateur uniforme idal est souvent considre comme une hypothse de travail
raisonnable. Ce qui importe avant tout au concepteur, cest lalgorithme qui permet de
faire le pont entre des chantillons i.i.d. de luniforme et la distribution vise. Cependant,
les considrations rattaches la gnration de la distribution uniforme dans un environ-
nement numrique (autant logiciel que matriel) se gnralisent aisment la gnration
de distributions non-uniformes. Nous tenterons par consquent de couvrir cette matire
de faon ce quelle claire au mieux les problmatiques que nous relverons par la
7
suite.
La distribution uniforme U(0, 1) est dnie par sa fonction de densit de probabilit :
f(u) =

1 Si 0 < u < 1
0 Autrement
(1.2)
Pour gnrer u, il est dusage de gnrer un entier X entre 1 et M1 (on choisit M trs
grand) et dobtenir u par la fraction u = X/M [24]. La question qui reste pose est :
comment gnrer X de manire quiprobable sur lintervalle des entiers de 1 M 1 ?
Une technique clbre dont lnonc de base date de 1949 [24] consiste utiliser la
squence des entiers X
n
obtenus par la rcurrence :
X
n+1
= (aX
n
+c) mod M, n 0 (1.3)
Llment X
0
qui dbute la squence est appel la graine. Comme on peut le remarquer,
une telle squence na rien dalatoire : ds quun nombre se rpte dans la squence,
un cycle se produit et introduit une priode. Nanmoins, pour certaines conditions sur
a, c, M et X
0
, le gnrateur peut exhiber un comportement quasi-alatoire (lellipse
squence alatoire est dusage courant) qui ne le rende pas suspect un observateur
extrieur. Par exemple, le choix a = 16807, c = 0, M = 2
31
1 et nimporte quelle
graine 0 < X
0
< M produit une squence de priode de M 1 et un comportement
alatoire intressant. Lorsque le gnrateur a une priode de M1, on dit que sa priode
est maximale. La section 1.3.2 discute les critres de qualit mme de qualier de tels
gnrateurs.
8
1.3.1 Formulation gnrale
La grande majorit des gnrateurs pseudo-alatoires repose sur lapproche fractionnaire
u = X
n
/M prsente la section 1.3. Si il est vrai que tous les gnrateurs uniformes
ne fonctionnent pas sur la base dune congruence linaire multiplicative, ils prsentent
tous un comportement priodique et une fonction de transition liant llment X
n+1

son prdcesseur X
n
ou lensemble de ses k prdcesseurs X
n
, X
n1
, X
n2
... X
nk
.
Pierre Lcuyer [26, 28] propose de dnir les gnrateurs pseudo-alatoires comme
suit : un gnrateur (pseudo-)alatoire est une structure (o, , T, |, () o o est un en-
semble ni dtats, une distribution de probabilit sur o permettant de choisir ltat
de dpart o
0
de la squence alatoire produire, T : o o la fonction de transition
utilise pour passer dun tat o
i
ltat suivant o
i+1
, | lensemble image de la fonction
de sortie ( : o |, faisant correspondre chaque tat o
i
un chantillon de |.
Lensemble dtats tant ni et la squence tant gnre par la fonction de transition T,
un gnrateur uniforme possde une priode telle que X
i+
= X
i
pour tout i l et l
0. La constante est appele la priode de la squence et la constante l la transitoire. Les
constantes et l sont des entiers et ne peut excder le cardinal de lensemble dtats [o[.
Les distributions non-uniformes tant gnres partir dchantillons i.i.d. de U(0, 1), la
structure (o, , T, |, () sapplique tout aussi bien eux. De plus, les distributions non-
uniformes ainsi gnres hritent en quelque sorte des proprits du gnrateur uniforme
quelles exploitent (transitoire et priode). Les performances statistiques des gnrateurs
non-uniformes sont quant elles sujettes aux subtilits de leur conception algorithmique.
Par exemple, il nest pas impossible quun gnrateur non-uniforme mme faisant
usage dun gnrateur uniforme idal introduise une corrlation entre les chantillons
quil produit par le fait mme de sa formulation algorithmique. Nous considrons cette
question avec attention plus loin.
9
1.3.2 Critres de qualit dun gnrateur uniforme
Les gnrateurs alatoires tant utiliss pour des ns de simulation, une priode trs
longue (bien suprieure 2
32
) est un critre important qui ne peut tre cart. Ce critre
tend devenir crucial eu gard aux frquences de fonctionnement extrmement leves
des systmes numriques exploits. Ainsi, un gnrateur ayant une priode de lordre
de 2
32
puiserait lensemble de ses tats o
i
en quelques secondes et tournerait ensuite
en boucle sur un processeur cadenc 3 GHz. De plus, les gnrateurs alatoires tant
utiliss comme lments de structures algorithmiques plus importantes, il est dusage
dexiger une implmentation compacte (consommant peu de mmoire) et simple de par
son expression mathmatique quand vient le temps de la traduire en termes deffort de
calcul [26]. Finalement, la rptabilit de la simulation est une caractristique juge im-
portante dans le contexte de la simulation o les expriences alatoires doivent pouvoir
tre vries dans les mmes conditions dexcution. Ce facteur est un des plus im-
portants parmi ceux qui donnent lavantage aux gnrateurs pseudo-alatoires sur de
vritables gnrateurs alatoires exploitant des phnomnes physiques tel que le bruit
thermique [28].
Un autre critre important concerne la corrlation srielle des chantillons conscutifs.
Knuth [24] a t le premier souligner limportance de ce facteur et proposer des
tests de corrlation srielle. Mais cest Marsaglia [39] que lon doit la thorisation
de la problmatique de corrlation srielle des gnrateurs de nombres alatoires. Un
cas clbre que rvla le travail de Marsaglia est celui du gnrateur RANDU, dispo-
nible durant les annes soixante sur les machines IBM. Le RANDU faisait usage dune
congruence multiplicative linaire donne par le triplet (a = 65539, c = 0, M = 2
31
).
La gure 1.2.a laisse croire quil nexiste pas de corrlation entre les chantillons cons-
cutifs gnrs par le RANDU. Cependant, la gure 1.2.b, qui reprsente lespace tridi-
mensionnel rempli par les triplets de trois chantillons successifs, montre quil existe
10
bel et bien une corrlation qui incrimine le RANDU. En vrit, une structure planaire
est implicitement exprime dans la formulation mathmatique du RANDU. Marsaglia
avait en fait dmontr que tous les gnrateurs base dune congruence linaires pos-
sdent une structure dhyperplan de ce type [37], cest--dire que lon retrouve toujours
lintrieur de lhypercube k-dimensionnel une structure dhyperplan produite par les
k-tuplets dchantillons conscutifs.
Lcuyer part de ce rsultat et requiert dans son test quun gnrateur uniforme ait tous
ses k-tuplets uniformment rpartis sur lhypercube k-dimensionnel unitaire, et ce pour
tout k > 0. Nanmoins, la structure algorithmique des gnrateurs tant dterministe,
le critre est appliqu en lassouplissant par une borne suprieure donne k. Cette
borne est dnie par la structure algorithmique du gnrateur. Par exemple, le clbre
algorithme de Mersenne Twister [44] respecte cette condition pour tout 0 < k < 624 : il
comprend en effet 624 mots de 32 bits pour mmoriser son tat et exhibe une priode de
2
19937
1 (19937 = 32 624 1).
FIG. 1.2 Nuages de points issus de 5000 chantillons conscutifs gnrs par le
RANDU : (a) disposition 2D, (b) disposition 3D.
Lensemble de ces critres peuvent tre vris de manire empirique. Il existe pour
11
cela des librairies permettant de qualier un gnrateur alatoire, dont la plus populaire
a t propose par Marsaglia sous le nom DIEHARD [40]. Plus rcemment, Lcuyer
a propos la librairie TestU01 [30] pour combler certaines lacunes et limitations de la
librairie DIEHARD, telle que la reprsentation 32 bits. Nanmoins, bien que les gnra-
teurs alatoires soient de nos jours passs au crible par ces batteries de tests, seule ltude
thorique pralable une vrication empirique est juge acceptable pour qualier tout
nouveau modle [30].
1.3.3 Quelques modles populaires
Limpratif de fournir une preuve thorique pour qualier un gnrateur a tendance
populariser les modles dnonc simple telle quune rcurrence linaire [30]. Le g-
nrateur congruence linaire multiplicative (CLM), exprim par lquation (1.3), est
trs rpandu car il sexprime simplement et prsente dexcellentes proprits statistiques
pour certaines conditions sur le triplet (a, c, M) [40]. Les gnrateurs multiples r-
currences linaires multiplicatives (MRLM) sont galement trs priss, notamment en
raison de la grande priode qui les caractrise. Les MRLM sont caractriss par la fonc-
tion rcursive :
X
n
= (a
1
X
n1
+a
2
X
n2
+. . . +a
k
X
nk
) mod M, n k (1.4)
Pour M premier, il est possible de trouver des coefcients a
i
(1 i k) garantissant
une priode = M
k
1 [24]. Il est de plus possible dobtenir une telle priode en
nutilisant que deux coefcients, ce qui rduit considrablement le nombre doprations
arithmtiques ncessaires lexcution de lalgorithme. Cependant, il est difcile de
concilier la simplicit de lexpression mathmatique avec les performances statistiques
et une solution possible est alors de considrer la combinaison de plusieurs MRLM [28].
12
Dautres modles populaires base de rcurrences linaires se fondent sur la reprsen-
tation binaire des entiers. Nous les appellerons gnrateurs rcurrence linaire binaire
(GRLB). Les GRLB ont lavantage dune implmentation matrielle aise. On les ex-
prime par une formulation matricielle sur le corps de Galois Z/2 not CG(2) o
laddition se rduit un XOR et la multiplication un ET logique. En considrant que
ltat du gnrateur X
n
est contenu sur N bits, la squence dtats est obtenue par la
formule matricielle de lquation (1.5), o A et B sont respectivement des matrices de
tailles N N et M N (N M) peuples de 0 et de 1 [29]. La sortie Y
n
(fonction de
X
n
) est ainsi exprime sur M bits, tout comme lest lchantillon uniforme u = Y
n
/2
M
.
Les matrices Aet B sont choisies de sorte que la squence produite ait une priode maxi-
male = 2
N
1. Marsaglia a dmontr que pour quune telle structure ait une priode
maximale, il faut que son polynme caractristique P(z) = det(zI A) soit primitif
dans CG(2) [42].
X
n
= AX
n1
, Y
n
= BX
n
(1.5)
1.3.4 Implmentations matrielles des gnrateurs uniformes
Les LFSR (registres dcalage rtroaction linaire) forment une famille de GRLB
dont lutilisation comme gnrateur alatoire remonte aux annes soixante grce au tra-
vail que Golombe leur a consacr [20]. La gure 1.3 illustre le schma gnral de la
construction dun LFSR. Les LFSR ont une implmentation matrielle la fois simple
et compacte puisquun simple XOR suft la ralisation du chemin de rtroaction. Le
nombre dentres du XOR est fonction du nombre de bascules utilises et du polynme
caractristique P(z). Les manufacturiers de FPGA comme Xilinx offrent des implmen-
tations optimises du LFSR et des tables des polynmes irrductibles [64, 65].
13
FIG. 1.3 Structure gnrale dun LFSR.
Lalgorithme Tausworthe [54] fait galement partie de la famille des GRLB. Lcuyer a
propos une formulation permettant une utilisation pratique de lalgorithme Tausworthe
(Tausworthe combin) dans le contexte de la simulation stochastique [27] ; la priode de
la squence est = 2
88
et la sortie Y
n
est dnie par trois mots de 32 bits :
Y
n
= (X
1,n
X
2,n
X
3,n
) (1.6)
o, ayant C
1
= 0xFFFFFFFE, C
2
= 0xFFFFFFF8, et C
3
= 0xFFFFFFF2, nous aurons :

X
1,n
= (((X
1,n1
C
1
) 12) (((X
1,n1
13) X
1,n1
) 19))
X
2,n
= (((X
2,n1
C
2
) 4) (((X
2,n1
2) X
2,n1
) 25))
X
3,n
= (((X
3,n1
C
3
) 17) (((X
3,n1
3) X
3,n1
) 11))
(1.7)
Les performances statistiques des gnrateurs alatoires matriels ont rcemment t
testes au moyen de DIEHARD et TestU01 [43, 57]. Il en ressort que lutilisation dun
LFSR donne de pitres rsultats, alors que la solution Tausworth combin donne des
rsultats trs satisfaisants. Une autre approche suggre par [43] est dutiliser un LFSR
dune longueur N M et den utiliser N-bits chaque cycle.
14
1.3.5 Considrations sur la reprsentation machine des nombres rels
Jusquici, nous avons considr les gnrateurs alatoires sous une reprsentation vir-
gule xe implicite d la normalisation X
n
/M. La gure 1.4 montre la modication
de lhistogramme U(0, 1) si on utilise ce modle avec une reprsentation virgule ot-
tante des rels. Ce type deffets secondaires dus limplmentation ont trs tt t in-
diqus par les travaux de Marsaglia [37]. Les implmentations matrielles des gnra-
teurs alatoires vitent cependant ces considrations cause de la courte longueur des
mots binaires et de la parcimonie dont ils font preuve dans lutilisation des ressources
matrielles. Aussi, dans le cadre du dveloppement darchitectures matrielles, une re-
prsentation virgule xe est sufsante pour les besoins des applications. Les effets
secondaires qui pourraient rsulter dune conversion vers une reprsentation virgule
ottante peuvent tre considrs hypothtiquement ngligeables.
FIG. 1.4 Histogramme de luniforme modi par la reprsentation virgule ottante.
15
1.4 Gnration des distributions non-uniformes
Les distributions non-uniformes peuvent tre utilises pour simuler diffrents compor-
tements alatoires. Par exemple, la distribution exponentielle est exploite pour simuler
lintervalle de temps entre deux vnements indpendants, tel que le temps entre deux
appels tlphoniques, le temps entre deux requtes adresses une imprimante, etc.
Il existe diffrentes techniques pour gnrer ces distributions. Elles se subdivisent en
deux catgories principales, nommment [15] :
1. Les mthodes universelles ;
2. Les mthodes spciques.
Les mthodes universelles sont des mthodes qui sappliquent ( tout le moins en tho-
rie) toute distribution de probabilit. On compte quelques rares mthodes universelles
que nous numrons plus bas. Nanmoins, cette universalit de lexpression est contre-
balance par des performances variables suivant les distributions vises, lenvironnement
matriel o elles sont excutes et le contexte dapplication de leur utilisation. Aussi, il
arrive quune mthode universelle applicable une distribution en particulier soit carte
au prot dune mthode spcique aux performances plus attrayantes. Nous verrons des
exemples o un tel choix se pose la section 1.4.4.
Les mthodes spciques sadressent quant elles une distribution en particulier, une
famille de distributions (la famille des distributions monotones strictement dcroissantes
par exemple) ou encore un cas de gure bien spcique dune distribution donne
(cest le cas par exemple des distributions Beta et Gamma dont la forme varie du tout au
tout en variant leurs paramtres). Il existe presque autant de mthodes spciques que de
distributions de probabilit non-uniformes, aussi nous contenterons-nous ici de couvrir
celles qui nous seront les plus utiles au chapitre 2.
16
1.4.1 Mthodes universelles
Nous considrons ici trois techniques universelles importantes. Les deux premires sont
aussi les plus connues et les plus utilises. La troisime est moins rpandue mais nous
sera utile pour articuler le modle que nous proposons.
La premire a t brivement prsente au dbut de la section 1.2 on lappelle m-
thode de linversion. La mthode de linversion consiste calculer linverse de la fonc-
tion de rpartition x = F
1
(u) pour gnrer la distribution f(x), o u est issu de luni-
forme U(0, 1). Certaines distributions se prtent bien limplmentation suivant la m-
thode de linversion. Par exemple, la distribution exponentielle de paramtre rel > 0
dnie par f(x) = e
x
, x 0 sapplique bien cette approche puisque linverse
de sa fonction de rpartition se calcule analytiquement ; elle est donne par :
F
1
(u) =
ln(1 u)

(1.8)
Relevons ici que dans lquation (1.8), il est possible de remplacer le paramtre 1 u
par u puisque les variables alatoires u et v = 1 u suivent toutes deux la distribution
uniforme U(0, 1). Aussi, pour viter une soustraction, la distribution exponentielle est
plutt gnre par lquation (1.9) cest le cas de son implmentation dans la rvision
1.1 de la librairie scientique GSL [19].
F
1
(u) =
ln(u)

(1.9)
17
Dautres distributions sont difciles produire par la mthode de linversion. Par exemple,
la loi gaussienne, desprance et dcart-type > 0 et exprime par
f(x) =
1

2
e

1
2
(
x

)
2
(1.10)
nadmet pas dexpression analytique de sa fonction de rpartition, et encore moins din-
verse analytique de cette dernire. Il est alors possible dapproximer numriquement
linverse de la fonction de rpartition, mais cela ne peut tre fait quau cot dinterpo-
lations difciles ou en recourant des LUT dont la taille crot de manire exponentielle
avec la rsolution recherche [15].
Une seconde technique universelle a t introduite par John von Neumann [62]. Elle est
base sur une tout autre approche, connue sous le nom de mthode de rejet. Comme son
nom lindique, cette mthode gnre des chantillons avec des contraintes assouplies et
en rejette une partie suite lapplication dune contrainte plus slective [15]. Lide de
von Neumann tire son intrt de deux points :
1. Gnrer les chantillons dune distribution simple valuer et produisant un grand
nombre dchantillons valides ;
2. Utiliser une fonction de discrimination tout aussi simple pour rejeter les chan-
tillons coupables.
La mthode de rejet sexprime comme suit : on gnre x suivant une distribution g(x),
telle que la distribution vise f(x) soit majore par g(x) une constante multiplicative
prs (f(x) < Mg(x), avec M > 1 rel). On gnre alors un chantillon u suivant
luniforme U(0, 1).
18
Si u < f(x)/Mg(x), alors x est admis comme chantillon de f(x) ;
Sinon, x est rejet et le processus de gnration est poursuivi.
Knuth a fait la dmonstration [25] que le ratio
a
dchantillons gnrs sur les chan-
tillons accepts ne devrait pas dpasser 2 (
a
< 2). Cette dmonstration de Knuth tait
accompagne dune expression gnrale des modles de gnration dterministes des
distributions non-uniformes, base sur la reprsentation binaire des nombres. Pour ce
faire, Knuth partait du principe que les bits de u ont une probabilit de 0.5 de valoir 1.
En construisant un arbre de dcision binaire pour chaque bit produire de lchantillon
non-uniforme x et en parcourant cet arbre de manire alatoire avec une probabilit de
0.5 de choisir une branche dun noeud donn, il lui tait possible de compter le nombre
de bits de u ncessaires la gnration de x et de chiffrer par consquent la borne sup-
rieure de
a
.
Bien quelle ne soit en vrit quune mthode de mesure de la complexit algorithmique
des gnrateurs alatoires, cette technique de larbre de dcision binaire peut-tre consi-
dre comme une troisime mthode universelle. Elle sera pour nous un prcdent dans
la gnration alatoire base sur le parcours un bit la fois de la variable non-uniforme x.
Nous verrons au chapitre 3 en quoi cette technique diffre de celle que nous proposons.
1.4.2 Mthodes Box-Muller
La distribution normale (ou loi gaussienne) est certainement la plus clbre des distri-
butions non-uniformes, mais elle est galement lune des plus utilises. tant donne
la difcult de trouver pour elle une mise en uvre simple dans le cadre des mthodes
universelles (inversion et rejet), un important effort scientique a t consenti durant les
cinquante dernires annes pour trouver des mthodes spciques la gaussienne qui
soient adquates. La distribution normale de lquation (1.10) a lavantage de ne pas tre
19
entirement soumise ses paramtres puisque toute variable x issue de la normale cen-
tre rduite ^( = 0,
2
= 1) peut tre manipule pour obtenir y ^(,
2
) pour tous
> 0 et . On applique simplement y = x + . Aussi les algorithmes spciques la
distribution normale se concentrent sur la distribution normale centre rduite :
f(x) =
1

2
e

1
2
x
2
(1.11)
La plus clbre des mthodes spciques la gaussienne est due aux chercheurs Box et
Muller et porte de ce fait leur nom. Elle consiste utiliser un certain nombre doprations
arithmtiques sur des chantillons de U(0, 1) pour aboutir produire des chantillons x
de la fonction f(x), donne par lquation (1.11) [7]. Plus exactement, en prenant u
0
et u
1
, deux chantillons indpendants issus de U(0, 1), Box et Muller relvent que les
variables x
0
et x
1
, donnes par :

x
0
=

2 ln u
0
cos 2u
1
x
1
=

2 ln u
0
sin 2u
1
(1.12)
sont indpendantes et suivent la normale ^(0, 1). Cette expression est gnralement
connue comme la forme cartsienne de lalgorithme Box-Muller puisque x
0
et x
1
sont
les coordonnes cartsiennes du vecteur de coordonnes polaires :

R =

2 ln u
0
= 2u
1
(1.13)
Une forme dite polaire de lalgorithme Box-Muler existe aussi et permet quant elle
dviter le recours aux fonctions trigonomtriques qui peuvent tre coteuses en temps
de calcul [15]. Ainsi, en prenant les deux chantillons u
0
et u
1
de U(0, 1) et leur contre-
20
partie respectives X = 2u
0
1 et Y = 2u
1
1, uniformment rparties sur lintervalle
]1, 0[

]0, 1[, alors les variables x


0
et x
1
suivent ^(0, 1) si s < 1.

x
0
= X

2
s
ln s
x
1
= Y

2
s
ln s
s = X
2
+Y
2
(1.14)
Cette forme polaire de lalgorithme Box-Muller appartient la famille des mthodes de
rejet. Dans la pratique, la forme polaire compense le rejet (dont le ratio
a
= 1.2146) par
une acclration du calcul des variables x
0
et x
1
en vitant le calcul dun sinus et dun
cosinus.
1.4.3 Mthode de Wallace
Lintrt de la mthode de Wallace est quelle na pas recours des chantillons uni-
formes. Pour ce faire, cette mthode se fonde sur une formulation de congruence linaire
de type :
x
n+1
=
1
2
(x
na
+x
nb
+x
nc
+x
nd
), d > c > b > a 0 (1.15)
En disposant dun bassin dchantillons de dpart issus de la gaussienne, il devient pos-
sible de gnrer une squence dchantillons de la normale en recourant la rcurrence
de lquation (1.15). En vrit, cette congruence ncessite quelques modications car sa
formulation matricielle offre des valeurs propres suprieures 1, laissant craindre une
divergence de la squence. Dans son article [63], Wallace propose dutiliser un bassin de
4 256 chantillons (tous les chantillons sont reprsents sur 32-bits) tel que chaque
groupe de quatre chantillons dispose dune moyenne du carr unitaire. De plus, le bas-
21
sin dchantillons est renouvel constamment en choisissant parmi les nouveaux chan-
tillons gnrs qui sont par la suite normaliss pour les besoins de la non-divergence.
Du propre aveux de Wallace, malgr une expression mathmatique facilement excu-
table en logiciel, cette mthode est difcile analyser et il est impossible de chiffrer
sa priode ou dassurer thoriquement que les chantillons produits soient exempts de
corrlation. Nous verrons la section 2.3.3 comment la mthode de Wallace fut impl-
mente en matriel et comment ces considrations furent traites. Notons pour nir que
la mthode de Wallace sapplique aussi la distribution exponentielle.
1.4.4 La Ziggurat
Tout comme la mthode de Wallace, la Ziggurat [41] sapplique autant la gaussienne
qu la distribution exponentielle. Bien que la mthode de Wallace soit plus rapide que
la Ziggurat (voir [35] pour les rsultats de test temporel), la Ziggurat est nanmoins
privilgie cause des garanties thoriques qui laccompagnent. Ainsi, la Ziggurat est
largement exploite en simulation et sert de modle au gnrateur de la distribution nor-
male accompagnant la bote outils statistique de Matlab [46]. De plus, la Ziggurat peut
sappliquer lensemble des distributions monotones strictement dcroissantes ou sy-
mtriquement (comme cest le cas pour la normale), tout en prservant des qualits de
performance remarquables.
La Ziggurat repose sur un chantillonnage dans le plan dont lorigine de lnonc est
crdit Knuth [24]. Plusieurs noncs intermdiaires furent tudis (voir [46] pour une
discussion de lhistorique) avant daboutir llgance de lexpression de la Ziggurat
quoffrit Marsaglia en 2000 [41].
Lchantillonnage dans le plan repose sur le dcoupage de la surface sous la courbe
de la distribution vise ( en zones rectangulaires dont lunion couvre une surface Z
22
lgrement suprieure ( (Z (). Lalgorithme consiste ensuite gnrer un point
(x, y) de Z et de ne retourner x que si (x, y) est situ lintrieur de ( (nous avons
donc affaire une mthode de rejet sensiblement identique celle propose par John
von Neumann [62]).
Dans le cas de la Ziggurat, les zones rectangulaires sont empiles les unes sur les autres
de sorte que labscisse de leur coin infrieur droit concide avec la courbe f(x) et que
les surfaces soient identiques. La fonction de densit f(x) tant monotone strictement
dcroissante, les rectangles forment une pyramide qui rappelle la forme des temples
msopotamiens ponymes, comme lillustre la gure 1.5. La Ziggurat possde une ex-
pression simplie du fait que les rectangles aient la mme surface. Pour les courbes
f(x) ayant une queue se prolongeant linni (comme cest le cas de la distribution
exponentielle et de la distribution normale), la zone supposment rectangulaire du bas
concide avec la surface restante sous la courbe f(x), comme lindique la gure 1.5.b.
FIG. 1.5 Schma de la construction de la Ziggurat : (a) Les temples Ziggurat ont une
construction en escalier laquelle le nom de la mthode Ziggurat rfre, (b) Schma de
la construction en escalier de la mthode Ziggurat. Images tires de la documentation
technique de Matlab [46].
23
Une fois le dcoupage en n zones rectangulaires gales tabli, on dispose dun ensemble
de points dabscisse (0 = x
0
< x
1
< . . . < x
n
) des coins infrieurs droits des zones
rectangulaires. La Ziggurat consiste alors choisir de faon quiprobable un rectangle i
(1 i n) et de gnrer un x uniformment distribu sur [x
0
, x
i
]. Il est possible de ne
pas gnrer y et de retourner directement x si x x
i1
. Autrement, il faut gnrer y et
on retiendra x si et seulement si y f(x).
Bien que la mthode Ziggurat soit trs rapide, elle ncessite lvaluation de f(x), ce qui
implique lvaluation dune fonction transcendantale pour les distributions exponentielle
et normale.
1.5 Conclusion
Ce premier chapitre a permis de nous familiariser avec la gnration alatoire des nombres.
Nous avons considr aussi bien les gnrateurs alatoires uniformes et certaines de
leurs variantes matrielles que les gnrateurs non-uniformes dont les implmenta-
tions matrielles seront discutes au chapitre 2. Nous avons pu apprcier les contraintes
de qualit statistique que la pratique de la simulation impose et considrer les difcults
auxquelles les distributions non-uniformes contraignent. Nous sommes prsent prts
pour effectuer une revue de la littrature moderne des architectures matrielles des g-
nrateurs non-uniformes sans que la complexit des discussions algorithmiques ne nous
contraignent.
24
CHAPITRE 2
REVUE DE LA LITTRATURE PERTINENTE
2.1 Introduction
Du chapitre 1, nous retiendrons que la grande majorit des algorithmes de gnration
des distributions les plus populaires recourent des fonctions transcendantales. Ces op-
rations mathmatiques ne sont pas videntes raliser une fois transposes au monde
de la microlectronique numrique. Les rcentes recherches sur les architectures mat-
rielles de gnrateurs non-uniformes ont principalement tent doptimiser cette partie
du calcul sans rellement songer explorer de nouvelles techniques de gnration des
distributions non-uniformes, ventuellement plus appropries lexcution sur puce
o le paralllisme peut apporter une plus-value non ngligeable.
Nous allons commencer par considrer les motivations qui ont stimul la recherche dans
ce domaine. Bien cerner le contexte dutilisation nous permettra de mieux situer le cadre
de nos travaux et darticuler correctement les exigences en termes de distributions cibles,
de vitesse dexcution et despace sur puce par gnrateur. Nous prsenterons par la suite
le dtail des travaux rcemment publis de sorte brosser un portrait global de ltat
de lart. Nous verrons de cette faon quelles ont t les embches rencontres par les
diffrentes quipes de recherche et les solutions que ces dernires ont privilgies. Nous
terminerons par une revue des techniques empiriques de qualication dun gnrateur
alatoire non-uniforme et discuterons les diffrences qui les caractrisent, de faon
mieux nous positionner.
25
2.2 Contextes dutilisation
Le recours aux gnrateurs de distributions non-uniformes en matriel se rencontre de
plus en plus dans des domaines dapplication aussi divers que la physique [21, 52], la
biologie [49, 67], la nance [6, 55, 68], la testabilit sur puce des systmes numriques
[1, 2], lintelligence articielle [8, 23] ou la tlcommunication [16, 17]. Certaines de ces
applications sont plus exigeantes quant aux performances statistiques alors que dautres
considrent avec plus dattention la surface dutilisation, la vitesse dexcution ou les
erreurs de quantication.
Par exemple, la caractrisation des canaux de communication numrique a recours des
gnrateurs de la distribution normale ayant une trs longue priode et pouvant couvrir
un large spectre de valeurs possibles. Lee et al. [33, 34] proposent par exemple que le
gnrateur couvre x de 8 8 et puisse gnrer plusieurs milliards dchantillons
pour couvrir correctement la queue de la distribution dans lintervalle 6 8.
Dans le cas des applications o la vise premire est le test et la caractrisation sur puce
des systmes numriques, cest davantage la surface dutilisation qui est mise de lavant
et le dbit du gnrateur
1
est consquemment rduit au prot de lutilisation ventuelle
de multiples instances concurrentes [1, 2].
loppos, les applications dans le domaine de la simulation stochastique (mthodes
Monte Carlo), employant lacclration matrielle au moyen de FPGA, visent davantage
une conjonction de vitesse dexcution et de prcision statistique de la distribution. On
nhsite pas dans ce cadre de la pratique scientique utiliser des ressources spcialises
des FPGA [6, 55, 68]
2
.
1
Calcul comme le nombre dchantillons par seconde.
2
Les blocs spcialiss font rfrence ici aux blocs tels les multiplieurs, les blocs RAM et les blocs DSP
que lon retrouve gravs en dur dans les FPGA de nouvelles gnration tels ceux de la gamme de Virtex
des FPGA de Xilinx.
26
2.2.1 Hritage scientique de larithmtique stochastique
Les premiers travaux faisant un usage prdominant de la probabilit dans les signaux
digitaux remontent Gaines [18] qui fut le pionnier de larithmtique stochastique. Dans
les annes soixante o Gaines publiait ses premiers travaux, les ressources matrielles
taient prcieuses et la taille immodre des composants tels que les additionneurs et les
multiplieurs tait un rel souci pour les praticiens qui voulaient mettre en uvre nombre
de ceux-l dans des systmes numriques parallles.
FIG. 2.1 Variante moderne du gnrateur de Bernoulli propos par Gaines.
Lide de Gaines partait du constat que si on considrait deux vnements dichotomiques
(0/1) indpendants de probabilits p
1
et p
2
, alors la conjonction des deux vnements
a une probabilit p
c
, donne par le produit p
1
p
2
. Pour Gaines, cela signiait quen
effectuant une transposition des rels de R dans lintervalle [0, 1], la multiplication tait
ralisable au moyen dune simple porte ET.
Pour ce faire, il fallait tre en mesure de convertir une valeur numrique de [0, 1] en
un signal digital stochastique. Gaines propose alors le premier gnrateur matriel de
distribution non-uniforme [18] : la distribution de Bernoulli. La version moderne de ce
gnrateur telle que publie dans [8] est prsente la gure 2.1.
27
La sortie Y (0/1) du gnrateur est caractrise par une probabilit de valoir 1 que
donnent les signaux dentre des multiples multiplexeurs cascads, savoir
P(Y = 1) = 0.b
1
b
2
b
3
. . . b
2
m
1
b
2
m
(2)
. Les signaux de commande (u
1
u
2
u
3
. . . u
2
m
1
u
2
m)
quant eux ont une probabilit de 0.5 de valoir 1 et peuvent par consquent tre tirs
dun LFSR ou de tout autre gnrateur uniforme.
FIG. 2.2 Cellule constitutive de la variante du gnrateur matriel de la distribution de
Bernoulli, due Shawe-Taylor.
Larithmtique stochastique a suscit beaucoup dintrt auprs de la communaut dite
connexionniste de lintelligence articielle [8]. Dans le domaine des rseaux de neu-
rones, limplmentation matrielle est un d important cause du grand nombre de
multiplications ncessaires par neurone. Lquipe de Shawe-Taylor proposait au dbut
des annes 1990 des architectures stochastiques de telles machines neuronales [60, 23,
53]. De ce groupe, van Daalen et al. proposrent une version pipeline du gnrateur de
Gaines an den rduire le long chemin critique qui le handicapait [61]. Chaque multi-
plexeur de la gure 2.1 y tait remplac par la cellule registre de la gure 2.2. En plus
de permettre un fonctionnement haute frquence, ce gnrateur a lavantage de rduire
la corrlation induite par les bits du LFSR en inversant les chemins de propagation des
donnes et des chantillons uniformes.
28
2.2.2 Nouvelles avenues
Comme nous avons pu le voir, la gnration matrielle des distributions non-uniformes
a des applications dans des domaines trs divers. Parmi les plus prometteuses, on ci-
tera lacclration matrielle des algorithmes de simulation stochastiques telles que les
mthodes Monte Carlo. On retrouve ainsi un intrt partag dans des domaines dappli-
cation aussi divers que la physique [21], la biologie [49, 67] et la nance [6, 55, 68].
Lide dune implmentation matrielle des mthodes Monte Carlo nest pas nouvelle
et date de prs de quinze ans [47, 48] mais elle suscite un vritable engouement aujour-
dhui. Lacclration matrielle russie de la gnration des nombres alatoires [4, 45]
fut un premier pas vers lintrt port de telles applications. Les capacits de recon-
guration accrues de ces coprocesseurs que peuvent devenir les FPGA ont abouti crer
un espoir raliste et ralisable [12, 58, 68]. Dailleurs, ce nest plus uniquement une
lubie de chercheurs que de rehausser les capacits calculatoires des ordinateurs puisque
lindustrie a investi le terrain de cette avenue, notamment par la commercialisation dor-
dinateurs de calcul haute performance munis de coprocesseurs base de FPGA, tels
que ceux de Cray, SRC Computers, DRC Computers ou SGI Systems [21].
Dans le domaine des mthodes Monte Carlo o les algorithmes sont aisment parallli-
sables, cest un vritable engouement qui en a rsult, notamment dans les domaine dap-
plication bien subventionns tels que le secteur bancaire et la mdecine. Bien quexploi-
tant souvent une mthodologie ou approche algorithmique louable [49, 67], voire mme
admirable dans la virtuosit architecturale dont elles font preuve [12, 56, 58, 68], ces ap-
plications paient par trop souvent le prix fort dans la consommation des ressources des
FPGA. Des travaux de recherches marginales [1, 2, 16, 17] tentent encore de concilier
les besoins dconomie de ressources qui simposent traditionnellement aux gnrateurs
de nombres alatoires [28], mais sans vritable succs.
29
2.2.3 Distributions vises
Les distributions vises par les implmentations matrielles dpendent grandement des
applications quelles servent ; suivant ces applications, les critres de conception peuvent
diffrer du tout au tout. On retiendra ici que seules quelques rares distributions ont mrit
des tentatives dimplmentation matrielle.
TAB. 2.1 Rcapitulatif des distributions implmentes en matrielles
Distribution Fonction Fonction Inverse Architecture
de densit de rpartition analytique matrielle
[1], [3], [5], [10]
Normale
1

2
e

(x)
2
2
2
N/A N/A [13], [16], [34], [35]
[56], [58], [69]
Exponentielle e
x
1 e
x

ln(1u)

[10], [11], [13]


[56], [58], [59]
Bernoulli P(x = 1) = p N/A N/A [11], [18], [61]
Log-normale
1
x

2
e

ln
2
(x)
2
2
N/A N/A [10], [56], [58]
Rayleigh xe

x
2
2
2
1 e

x
2
2
2

2
2
ln(1 u) [13]
Weibull
k

(
x

)
k1
e
(
x

)
k
1 e
(
x

)
k
(ln(u))
k
[56], [58]
La table 2.1 rcapitule les rcentes implmentations matrielles de distributions non-
uniformes, indiquant au passage celles qui admettent une inverse analytique de la fonc-
tion de rpartition. La distribution normale est certainement celle qui a attir lattention
du plus grand nombre, la raison tant explicable par sa trs grande utilisation dans le
domaine de la simulation. Elle est suivie par lexponentielle en raison notamment de la
simplicit de lexpression de linverse de sa fonction de rpartition. Les implmentations
30
matrielles des autres distributions sont marginales. La distribution de Bernoulli mise
part, ces architectures sinscrivent souvent dans le cadre de travaux ayant pour prtention
limplmentation de gnrateurs universels. Les distributions cites ne servent toute
n utile que de preuve de concept. Cest le cas notamment de la distribution de Weibull
[56, 58], gnre pour des valeurs de paramtres totalement arbitraires
3
, ou encore le cas
de la distribution de Rayleigh traite dans le contexte dun prtendu gnrateur univer-
sel sans justication valable [13]. Nous aurons raison dans ces conditions de privilgier
ltude des deux distributions les plus matures : la normale et lexponentielle.
2.3 Architectures matrielles des gnrateurs de nombres alatoires
Nous allons nous pencher ds prsent sur les diffrentes avenues explores par les cher-
cheurs pour implmenter en matriel des gnrateurs de distributions non-uniformes.
Nous commenons par aborder la section 2.3.1 les architectures que nous appellerons
universelles. Les architectures universelles engloberont pour nous tout la fois les g-
nrateurs dont la conception architecturale sapplique de manire universelle mais qui
nont mrit que des applications des cas typiques, et les gnrateurs dont lalgorithme
de gnration est effectivement universel et qui permettent ventuellement une recon-
guration en temps dexcution (runtime reconguration).
Nous nous concentrerons par la suite aux distributions normale et exponentielle. Dans le
cas de la distribution exponentielle, nous procderons une revue des implmentations
matrielles existantes et des mthodes utilises pour valuer la fonction logarithmique
prsente dans linverse de sa fonction de rpartition. Nous nous attarderons dans le cas
de la distribution normale aux approches explores pour implmenter les algorithmes
3
Ces paramtres sont = 5.4 et k = 12, mais ne sont pas donns dans les articles cits. Contact par
courriel, lauteur disait "Ive no idea why I chose those parameters, I probably just thought that it looked
like a nice curve."
31
vus aux sections 1.4.2, 1.4.3 et 1.4.4. Nous verrons galement comment les questions de
quantication et dconomie de ressources matrielles ont t considres par les diff-
rents auteurs. Finalement, nous terminerons par une revue de lutilisation des gnrateurs
uniformes dans ces architectures.
2.3.1 Architectures universelles
Lutilisation de gnrateurs de distributions non-uniformes devenant de plus en plus po-
pulaire, la mise au point de mthodes universelles devient un enjeux important pour
viter llaboration fastidieuse de larchitecture pour chaque distribution vise. Une ap-
proche simple et universelle est dappliquer la mthode de linversion au moyen de LUT
conservant lensemble des points de linverse de la fonction de rpartition, mais les au-
teurs se refusent une telle solution en raison de la croissance exponentielle de la taille
de telles tables lorsque la prcision arithmtique recherche est leve [34].
Une approche plus raliste consiste approximer numriquement linverse de la cu-
mulative. Cheung et al. proposent dvaluer la fonction inverse par une approximation
polynomiale par parties, o les polynmes sont de degr suprieur ou gal 1, suivant la
prcision recherche [10]. Il savre en effet que la fonction inverse de toutes les distri-
butions prsentes la table 2.1 se prtent facilement une telle approximation, comme
lillustre la gure 2.3 pour les distributions normale et exponentielle. En prcalculant
les intervalles dnissant les segments non-linaires en fonction de la prcision recher-
che, il devient possible de trouver une segmentation non-linaire approprie pour une
distribution donne et den dterminer le systme de dcodage dadresse correspondant.
Lvaluation du polynme seffectue alors en cascadant les oprations daddition et de
multiplication, de sorte offrir une architecture pipeline et un dbit lev.
32
FIG. 2.3 Segmentation non-linaire de linverse de la fonction de rpartition telle quap-
plique par [10] aux distributions normale et exponentielle.
Dans leur article, Cheung et al. afrment avoir russi automatiser le processus de
conception de tels gnrateurs laide dun script MATLAB permettant de gnrer le
code VHDL pour une distribution donne [10]. Le script prend en compte le nombre
de bits pour reprsenter la variable non-uniforme x, la prcision dsire sur la reprsen-
tation virgule-xe, lerreur de quantication accepte et la distribution vise. Nan-
moins, la qualit du bruit gnr se paie au prix dune avidit matrielle regrettable.
Par exemple, pour gnrer une gaussienne couvrant x (16 bits) sur lintervalle allant de
8.2 +8.2, la surface occupe est pas moins de 550 slices en plus de lemploi de 2
blocs DSP et 2 blocs RAM. Cependant, le gnrateur atteint une frquence allant de 360
MHz 480 MHz en utilisant un pipeline allant croissant de 2 20 tages, et une latence
maximale de 65 ns (32 coups dhorloge).
33
David Thomas propose quant lui de gnrer les distributions non-uniformes par une
combinaison linaire de distributions plus simples [56, 58], et ce avec diffrentes perfor-
mances, tant du point de vue de loccupation de surface sur puce, de la vitesse dexcu-
tion que de la prcision statistique. En notant 0 < w
i
< 1 (0 < i n) les n poids utiliss
pour la combinaison linaire des n diffrentes distributions g
i
(x), lauteur propose dap-
proximer la distribution f(x) par :
f(x) =
n

i=1
w
i
g
i
(x),
n

i=1
w
i
= 1 (2.1)
Cela revient chantillonner une des distributions g
i
en la choisissant parmi les n dispo-
nibles suivant une probabilit dnie par les poids w
i
de la combinaison linaire. Dans
[56], lauteur propose dutiliser des distributions quiprobables g
i
(x) sous trois formes
possibles : trapze, triangle et rectangle. Il parvient ainsi gnrer la distribution gaus-
sienne sur 16 bits et datteindre une frquence lgrement infrieure 200 MHz. En
prenant n = 2048, lauteur propose un gnrateur occupant 411 slices, 3 blocs RAM et
de gnrer x jusqu 5. Lauteur indique que chaque sigma supplmentaire demande un
bloc RAM additionnel. La qualit du bruit nest cependant pas exceptionnelle et ne peut
tre amliore quen recourant au thorme central limite. De plus, lauteur indique que,
bien que gnrale, cette technique est trs difcile adapter, demandant un temps de
calcul allant de quelques minutes jusqu plusieurs heures pour dnir les distributions
g
i
(x) ncessaires [58]. An damliorer ces performances, lauteur propose de nutiliser
que la distribution triangulaire avec des poids w
i
non gaux [58]. Cela a lavantage de r-
duire le temps de calcul en vue dune conception et amliore loccupation de surface sur
puce. Pour gnrer la gaussienne sur 16 bits, lauteur utilise alors 80 bits uniformes, pose
n = 1024 et sen tire avec 1 bloc RAM et 137 slices (excluant le gnrateur uniforme)
pour une vitesse dexcution de 249 MHz sur un Virtex-II.
34
Finalement, les auteurs Cui et al. proposent un gnrateur quils qualient duniver-
sel et qui permet de produire en mme temps les distributions uniformes, normale,
exponentielle et Rayleigh [13]. Les auteurs partent du constat que la fonction inverse
F
1
(u) =

2
2
ln(u) de la distribution de Rayleigh partage avec les quations (1.9)
et (1.12) respectivement celles de linverse de lexponentielle et de la mthode Box-
Muller lvaluation du logarithme de u. Pour calculer ce logarithme ainsi que les
fonctions racine carre, sinus et cosinus, les auteurs suggrent dutiliser une architec-
ture CORDIC optimise. Leur solution gnre les chantillons sur 16 bits et parvient
atteindre 133 MHz. Le gnrateur utilise deux multiplieurs et 64 bits uniformes. Bien
entendu, pour des raisons de corrlation videntes, un seul chantillon des diffrentes
distributions est accessible la fois. Notons nanmoins quaucune spcication quant
la surface dutilisation nest donne par les auteurs et que la dmonstration empirique
du bon fonctionnement du gnrateur suivant les tests statistiques fut ralise pour une
population de 1 000 chantillons.
2.3.2 Gnration matrielle de la distribution exponentielle
La distribution exponentielle est trs utile nombre dapplications mais na mrit que
peu dattention pour son implmentation matrielle. Les travaux portant sur les gn-
rateurs universels cits la section 2.3.1 donnent uniquement un estim des ressources
ncessaires et presque aucune indication quant la vitesse dexcution et au dbit du g-
nrateur. Lapproche adopte pour la gaussienne tant trs similaire celle propose pour
lexponentielle dans [10], on peut estimer quune approximation polynomiale par parties
de la distribution exponentielle utiliserait prs de 500 slices pour une vitesse dexcution
de 230 MHz sur un Virtex II et de 370 MHz sur un Virtex IV. Les auteurs indiquent quil
leur faut 32 bits issus de luniforme pour gnrer x dans lintervalle 0.0 22.0 et 48
pour aller de 0.0 32.0. Finalement, une telle implmentation ncessite 2 blocs RAM et
2 DSP (ou blocs multiplieur).
35
Timarchi et al. [59] ont compar diffrentes mthodes pouvant servir implmenter un
gnrateur dexponentielle sur les FPGA Virtex de Xilinx
4
. Les auteurs ont privilgi
trois mthodes de calcul du logarithme de la fonction inverse, nommment 1) une ar-
chitecture CORDIC similaire celle utilise par Cui et al. [13], 2) une approximation
polynomiale par parties utilisant une LUT et nalement 3) un algorithme dinterpolation
linaire.
Larchitecture CORDIC de Timarchi et al. nest pas des plus heureuses si on la com-
pare aux performances obtenues par [13] avec le mme algorithme (dont la rsolution
est cependant de moiti infrieure). Une implmentation 32 bits ne dpasse pas les 24
MHz mais donne une trs bonne approximation. Les performances frquentielles de lap-
proche de linterpolation linaire ne sont gure meilleures (25 MHz), mais cette dernire
prsente lavantage dune bonne prcision pour des rsolutions infrieures 32 bits.
Finalement, lapproximation par parties utilisant une LUT prsente le meilleur rapport
surface vs. prcision pour des implmentations faisant usage de 22 bits pour reprsenter
x et une vitesse de 190 MHz.
Un des rsultats intressants ressortant des travaux de Timarchi et al. est la croissance
exponentielle de loccupation de la surface sur puce suivant le nombre de bits pour re-
prsenter x. Alors que les trois mthodes utilisent 1000 slices et moins pour une repr-
sentation 16 bits, elle atteint, une rsolution de 32 bits, de 2 000 slices pour la mthode
CORDIC 10 000 slices pour lapproximation par parties et 60 000 slices pour linter-
polation
5
.
4
Il nest nulle part spci quel FPGA a t utilis pour cet article ; probablement un Virtex II ou un
Virtex II Pro de forte capacit tel que le XC2V4000 ou le XC2VP100, tant donns lanne de publication
et le nombre de slices utilis sur le FPGA.
5
Il est important de relever que Timarchi et al. ont utilis un gnrateur uniforme base de LFSR,
particulirement gourmand (1 000 slices et plus selon nos propres estims) pour gnrer 32 bits avec
une priode sufsante. Un autre choix et t de sinspirer de ce que Cheung et al. [10] ont russi en
implmentant un gnrateur Tausworthe combin utilisant 141 slices.
36
Au vu de lestimation des ressources ncessaires pour la mthode de linversion propose
par Cheung et al. [10] et en les comparant avec les rsultats obtenus par les travaux de
Timarchi et al. [59], il apparat que :
1. Lutilisation de blocs RAM et DSP accrot considrablement les performances de
vitesse du gnrateur dexponentielle. Pour le mme gnrateur, Cheung et al. [10]
ont montr que la vitesse est rduite de 370 MHz 200 MHz sur Virtex IV si il
nest pas fait usage des blocs RAM et DSP.
2. Lutilisation de blocs RAMet DSP rduit de beaucoup la surface sur puce occupe.
Pour le mme gnrateur, Cheung et al. [10] ont montr que leur design utilise plus
de 1 600 slices sur un Virtex IV si il nest pas fait usage des blocs RAM et DSP.
3. Les rsutats de Timarchi et al. [59] montrent quune implmentation de rsolution
suprieure 16 bits est trs coteuse en surface et rduit considrablement les
performances de vitesse du gnrateur. Lutilisation de blocs DSP est dans ce cas
exclure puisque les FPGA actuels ralisent difcilement la multiplication de
telles rsolutions.
Pour nir, notons que lapproche de combinaison linaire prconise par David Thomas
dans [58] serait certainement beaucoup plus conome et performante dans les mmes
conditions. Pour gnrer une gaussienne, Thomas montrait que le gnrateur nutilisait
que 137 slices et 1 bloc RAM. Gnrer une exponentielle devrait occuper une surface
similaire. De plus, cette technique a lavantage de nutiliser aucune fonction arithmtique
telles que laddition ou la multiplication. Mais cette approche souffre dune limitation
sur la prcision qui carte son utilisation dans le contexte de la simulation et qui laisse
craindre quune prcision de 32 bits soit tout simplement impossible atteindre, comme
nous le verrons la section 2.3.4.
37
2.3.3 Gnration matrielle de la distribution normale
La premire implmentation sur FPGA dun gnrateur de bruit gaussien qui mrite
dtre mentionn est due Boutillon et al. [5]. De ce design est issu le core actuellement
commercialis par Xilinx sous le nom XAWGN (Xilinx Additive White Gaussian Noise)
[66], disponible pour les FPGA Spartan 3, Virtex-II/II Pro et Virtex IV. Le core occupe
480 slices, 5 blocs RAM et 5 blocs multiplieur. Il couvre x sur lintervalle allant de
4.8 +4.8, sa priode est = 2
190
et sa frquence maximale sur un Virtex-II Pro
est de 300 MHz [66], offrant 300 millions dchantillons par seconde.
Dans leur article, Boutillon et al. exploitent la mthode Box-Muller sous sa forme car-
tsienne, telle que donne par lquation (1.12). An dvaluer les fonctions

ln u
0
,
sin(2u
1
) et cos(2u
1
), les auteurs procdent une quantication au moyen de LUT.
Une premire LUT est adresse par 12 bits uniformes pour valuer une racine de loga-
rithmique reprsente sur 10 bits (dont 7 bits pour la partie fractionnaire) et une seconde
LUT adresse par 4 bits uniformes pour gnrer les fonctions trigonomtriques repr-
sentes sur 8 bits (dont 7 bits pour la partie fractionnaire). La quantication est ensuite
corrige par laccumulation de plusieurs chantillons de la normale ainsi gnrs en uti-
lisant le thorme central limite.
Limplmentation du design de Boutillon par Xilinx a certainement mrit un perfec-
tionnement par le manufacturier eu gard aux performances afches par ce dernier
de loin meilleures ne ft-ce que du point de vue de la priode du gnrateur. Nanmoins,
ce design na eu cesse dtre dcri par des auteurs tels que Lee et Zhang en raison de ses
pitres performances statistiques [33, 34, 35, 69]. Il est vrai en effet que Boutillon et al.
ont davantage concentr leurs efforts valuer les erreurs de quantications numriques
qu valider leur gnrateur au moyen de tests statistiques. Cette attitude de dance
retait surtout un changement de paradigme et de mentalit au sein de la communaut
scientique en ce qui a trait la gnration des nombres alatoires sur puce.
38
Lee et al. [33, 34, 36] ont prsent une nouvelle implmentation matrielle de la mthode
Box-Muller sur les FPGA de Xilinx. La vise premire de ces travaux tait lvaluation
des canaux de codage qui ncessitent de couvrir x sur un intervalle plus large que ce
que permet le core XAWGN. Pour ce faire, lapproche de Boutillon et al. aurait eu un
impact signicatif sur la consommation des ressources du FPGA. Aussi, Lee et al. ont-ils
choisi dimplmenter la mthode Box-Muller et de mettre en application les mthodes
dapproximation polynomiale par parties dveloppes par leur quipe dans le cadre de
travaux portant sur lvaluation de fonctions transcendantales sur FPGA [31, 32] que
nous avions dj discutes la section 2.3.1.
En raison du cot prohibitif associ aux multiplieurs, les auteurs avaient dabord opt
pour une approximation linaire des diffrents segments non-linaires [33, 34]. Dans
ces premires versions, o les chantillons de la normale sont reprsents sur 32 bits,
le design consommait 50 bits uniformes issus de LFSR de 60 registres chacun ; 32 bits
servaient valuer la racine carre du logarithme et les 18 bits restants servaient aux
sinus et cosinus. Pour compenser les erreurs de quantication, les auteurs recouraient
au thorme central limite tout comme le faisaient Boutillon et al.. Dans sa version nale
[36], le design recoure 64 bits de luniforme, 48 bits servant au calcul du logarithme
et les 16 bits restants aux fonctions trigonomtriques. La variable x est cependant re-
prsente sur 16 bits seulement. La premire version du design [33] parvenait gnrer
x jusqu 4.8 et utilisait 10% du FPGA Virtex II XC2V4000 (environ 5 000 slices
6
),
2 blocs RAM et 8 multiplieurs, pour une frquence de fonctionnement de 133 MHz
(133 millions dchantillons par seconde). La seconde version [34] quant elle ac-
croissait la prcision des fonctions logarithmiques et trigonomtriques en augmentant
le nombre de segments non-linaires, sans affecter ni la consommation des ressources
sur FPGA ni la frquence de fonctionnement.
6
En soustrayant la place occupe par le gnrateur uniforme, il reste prs de 4 000 slices pour le
gnrateur de gaussienne lui seul.
39
Plus rcemment encore, Lee et al. dclinent leur design sous une forme suprieure cou-
vrant x jusqu 8.2 [36]. Implment sur un Virtex II, cest--dire le mme FPGA que
celui utilis pour [33, 34], le gnrateur fonctionne une cadence de 233 MHz (466 mil-
lions dchantillons par seconde). Pour ce faire, les auteurs recourent deux gnrateurs
Tausworthe combin (2 32 bits) pour les chantillons uniformes et utilisent une ap-
proximation quadratique sur les segments des fonctions transcendantales. De plus, ce
design ne recoure plus au thorme central limite grce lextrme prcision des opra-
tions arithmtiques. Ce faisant, Lee et al. occupent 1 528 slices du FPGA et utilisent 3
blocs RAM et 12 blocs multiplieur.
Fan et al. ont propos une implmentation matrielle de le forme polaire de la mthode
Box-Muller [16, 17]. Par souci dconomie de ressources, les auteurs ont tent de ne
recourir qu 4 bits uniformes pour gnrer les variables uniformment rparties X et
Y de lquation (1.14). Mais cette tentative louable fut malheureusement accompagne
de performances frquentielles mdiocres, puisque pour une cadence de 78 MHz, le
gnrateur ne produit que 24 millions dchantillons par seconde.
Nous ne manquerons pas de citer les travaux de Alimohammad et al. qui tentaient une
implmentation compacte de la forme cartsienne de Box-Muller dans [1, 2]. Ces auteurs
parvenaient gnrer x jusqu 5 en recourant 54 bits uniformes issus de LFSR,
36 pour le logarithme et 18 pour les fonctions trigonomtriques. La nouveaut du tra-
vail de Alimohammad et al. rside dans les algorithmes itratifs utiliss pour valuer les
fonctions transcendantales. Ce faisant, les auteurs parviennent une frquence de fonc-
tionnement de 165 MHz sur un Virtex-II de Xilinx, dont ils utilisent 3% des ressources
logiques (environ 1 500 slices) et 2 blocs RAM. Alimohammad et al. ont rcemment pu-
bli une version amliore de leur gnrateur de gaussienne [3]. Le nouveau design a t
perfectionn notamment en abandonnant le choix dutiliser les LFSR. Le nouveau design
occupe 576 slices, 2 blocs mmoire, 3 multiplieurs et atteint une frquence maximale de
269 MHz sur un Virtex II Pro.
40
Relevons galement limplmentation matrielle par Zhang et al. de lalgorithme Zig-
gurat [69]. Ce design utilise 891 slices sur un Virtex-II, 4 blocs RAM et 2 multiplieurs,
pour une cadence de 170 MHz, la plus haute frquence jamais atteinte au moment de la
publication de larticle. La mthode Ziggurat faisant partie de la famille des mthodes
de rejet, le dbit obtenu tait lgrement infrieur 170 millions dchantillons par se-
conde. La sortie x y est reprsente sur 32 bits et exhibe une forte qualit statistique,
mais son intervalle de couverture demeure inconnu.
Finalement, citons limplmentation matrielle par Lee et al. de lalgorithme de Wal-
lace [35]. Tout comme le suggrait Wallace [63], les auteurs recourent un bassin de
4 256 = 1 024 chantillons conservs dans une RAM double accs (dual port), de
sorte que le bassin puisse tre continuellement renouvel sans en empcher laccs. Les
auteurs vitent la corrlation que laissait craindre Wallace (voir la section 1.4.3 pour un
rappel) en recourant un gnrateur uniforme pour adresser les chantillons extraire
du bassin. Ce design utilise 770 slices, 6 blocs RAM et 4 multiplieurs sur un Virtex-II,
pour une cadence de 155 MHz. La variable x est reprsente sur 24 bits mais lintervalle
de couverture de x et la priode du gnrateur demeurent inconnus.
La table 2.2 rcapitule les caractristiques des principales implmentations de gaus-
sienne discutes jusquici :
TAB. 2.2 Rcapitulatif des principaux gnrateurs de gaussienne matriels.
Rfrence [69] [35] [10] [36] [3]
Rsolution (bits) 32 24 16 16 32
Frquence max (MHz) 170 155 232 233 269
Nb de slices 891 770 548 1528 576
Nb de blocs RAM 4 6 2 3 2
Nb de multiplieurs 18 18 2 4 2 12 3
41
2.3.4 Note sur lutilisation des bits uniformes
Maintenant que les diffrentes architectures matrielles ont t vues, il est intressant
de relever la grande disparit qui caractrise les diffrents travaux dans leur recours aux
chantillons uniformes, plus exactement le nombre de bits ncessaires pour gnrer un
chantillon non-uniforme. Rappelons que Knuth et Yao avaient dmontr que le nombre
dchantillons uniformes ncessaires la gnration dune variable non-uniforme avait
une borne suprieure xe
a
= 2 [25]. Quand on songe que Lee et al. recourent 64
bits uniforme pour gnrer une variable normale sur 16 bits [36], doit-on croire que le
ratio
a
= 4 ainsi obtenu est sous-optimal ?
La rponse se trouve dans une analyse propose indpendamment par Chen et al. [9] et
Chul et al. [11]. Lanalyse diffre de lapproche de Knuth et Yao en ce quelles nob-
servent pas le nombre de bits uniformes ncessaires pour gnrer chaque bit de la va-
riable non-uniforme de x, mais plutt la segmentation de lintervalle [0, 1) en zones
non-linaires.
Par exemple, supposons que x soit une variable alatoire discrte pouvant prendre 4
valeurs diffrentes, tel que lexprime lquation (2.2) :
P
X
(x) =

2
32
si x = 0
2
32
si x = 1
2
31
si x = 2
1 2
30
si x = 3
(2.2)
Il est alors possible de gnrer x en gnrant une variable alatoire uniforme u dans
lintervalle [0, 1) et de comparer sa valeur aux constants c
1
= 2
32
, c
2
= 2
31
et
c
3
= 2
29
.
42
Le gnrateur sera ainsi form par trois comparateurs et respectera lquation (2.3) :
x =

0 si u < c
1
1 si c
1
u < c
2
2 si c
2
u < c
3
3 autrement
(2.3)
Dun point de vue numrique, lquation (2.3) ne peut tre respecte quen gnrant u
avec une rsolution sufsante, cette dernire tant dnie par la plus petite des rsolu-
tions requises par les constantes c
i
utilises. Dans le cas de lexemple que nous consid-
rons, cette rsolution doit tre au moins de 32 bits pour que la comparaison avec c
1
soit
ralisable.
Cette expression nest quune traduction discrte de la mthode de linverse vue la sec-
tion 1.4.1. Mais en considrant que toute distribution continue est quivalente une dis-
tribution discrte une fois transpose au domaine numrique [15], il en ressort que toutes
les manipulations arithmtiques des implmentations matrielles des gnrateurs de dis-
tributions non-uniformes vues sinscrivent dans ce paradigme. Aussi, plus les concep-
teurs tentent datteindre une prcision leve dans la gnration de x, plus le nombre de
bits uniformes requis est lev. Cest notamment ce qui explique que dans toute impl-
mentation matrielle de la distribution normale faisant usage de la mthode Box-Muller,
le nombre de bits uniformes utiliss pour gnrer le logarithme est toujours plus lev
que celui ncessaire pour les fonctions trigonomtriques puisque sa pente est trs forte
dans lintervalle [0, 1].
Ces remarques nous semblent ncessaires pour comprendre la limitation inhrente aux
approches couramment adoptes dans limplmentation matrielle des gnrateurs de
distributions non-uniformes, notamment les approches universelles telles que celles pro-
poses par Cheung et al. [10] ou Thomas et Luk [58].
43
2.4 Qualication dun gnrateur non-uniforme
Dans le domaine de la statistique, il existe diffrentes mthodes permettant de vrier
quune population issue dune exprience alatoire respecte une loi de probabilit don-
ne. Gnralement, on tente de classer les chantillons suivant des intervalles contigus,
et on vrie que lhistogramme empirique ainsi form respecte celui attendu, la distri-
bution de probabilit vise tant connue. Mais il nexiste pas de consensus absolu sur
la faon dont ces mesures quantitatives sont effectues. Les points de dbat touchent
notamment le nombre dchantillons requis, la taille des intervalles, le nombre des inter-
valles et les quanticateurs qui en sont issus. De plus, on ne recommandera pas la mme
approche de mesure pour qualier une distribution continue et une distribution discrte
[14]. Dans cette section, nous verrons dune part quelles sont les techniques reconnues
et celles que lon rencontre dans lapplication. Cette revue nous permettra de dnir le
protocole exprimental que nous nous imposerons pour qualier nos gnrateurs.
2.4.1 Technique reconnue
DAgostino et Stephens ont consacr un ouvrage la qualication des distributions em-
piriques [14] devenu louvrage de rfrence dans le domaine. Nombre de chapitres
de ce livre sont consacrs au test du
2
, mthode universelle sil en est une, de la com-
paraison dune distribution empirique avec lexpression mathmatique de la distribution
de probabilit attendue. Le test du
2
est effectu en valuant le quanticateur :

2
=
k

i=1
(n
i
Np
i
)
2
Np
i
(2.4)
o n
i
est le nombre dlments dans la classe i, p
i
la probabilit dappartenance cette
classe telle que dnie par lexpression mathmatique de la distribution, N est la taille
44
de la population empirique et k le nombre de classes utilises. Il est dusage de choisir
k de sorte quaucune classe ne possde moins de 5 lments. DAgostino et Stephens
prconisent plutt de diviser laxe des x suivant k = 2N
2
5
intervalles quiprobables.
Le quanticateur
2
variant suivant la taille N de la population alatoire, il est sug-
gr de le ramener une mesure de probabilit de conance (p-value) donne par la
distribution du
2
de k 1 degrs de libert. L o il y a divergence, cest dans linter-
prtation de cette valeur. Il est dusage courant de rejeter lhypothse H
0
(voulant que la
population suit la distribution attendue) si la p-value est infrieure 5%. DAgostino et
Stephens soulignent que cette valeur est quelque peu arbitraire et quelle est davantage
issue dune sorte de consensus gnral que dune valuation mathmatique rigoureuse.
Lcuyer quant lui va plus loin en notant que, pour des populations trs larges (quelques
millions), la p-value est uniformment rpartie sur lintervalle (0, 1) et lhypothse H
0
doit tre rejete si la p-value est proche de 0.0 (ou proche de 1.0) 1% prs [30].
2.4.2 Techniques couramment appliques
Les concepteurs de gnrateurs matriels de nombres alatoires sappliquent valider
leur design de diffrentes faons. Il y a dune part ceux qui sastreignent simplement
une validation de la qualit numrique de lhistogramme empirique vs. la courbe math-
matique, parmi lesquels [5], [10] et [36]. Des auteurs qui appliquent un test statistique
(celui du
2
gnralement), il y a ceux qui nobservent que peu dchantillons [13] et
ceux qui considrent un grand nombre dchantillons, mais ne sacquittent pas des re-
commandations de DAgostino et Stephens quils citent pourtant [33, 34]. Ces derniers
rfrent souvent aux fortes valeurs des p-value obtenues, soit-disant garantes de la grande
qualit de leur gnrateur.
45
Une approche tout fait originale et rencontre dans les travaux de D. Thomas [56, 58]
consiste non pas donner la p-value, mais plutt la taille de la population au-del de
laquelle le gnrateur choue le test du
2
. Il est alors considr quun gnrateur est
meilleur quun autre si la taille de cette population est trs grande.
En ce qui a trait la corrlation des gnrateurs, les auteurs se contentent, quand il le
font, de vrier que deux chantillons conscutifs ne sont pas corrls [3, 33, 34]. Il est
tonnant de constater que seul ce test est effectu quand on connat la grande rigueur
avec laquelle les gnrateurs uniformes sont considrs (voir la section 1.3.2). Nous
verrons plus loin que ce critre est souvent insufsant et quune inspection plus pousse
est davantage conseille.
2.5 Conclusion
Ce chapitre a couvert la gnration matrielle de nombres alatoires suivant une distri-
bution non-uniforme. Nous avons pu constater que les architectures dites universelles
sont encore un stade embryonnaire. Lavenue la plus prometteuse est celle de linverse
utilisant lapproximation polynomiale par parties et propose par Cheung et al. [10].
Mais cette mthode noffre malheureusement pas la possibilit dune reconguration en
temps dexcution, ni la garantie dune gnralit dapplication. La mthode de com-
binaison linaire propose par D. Thomas [56, 58] est la seule qui puisse prtendre
luniversalit, mais les limitations qui la caractrise quant la prcision demeurent pr-
occupantes. Finalement, notre revue des gnrateurs dexponentielle et de gaussienne
nous ont permis non pas tant de connatre les approches utilises, mais plutt les critres
qui les entourent, tant du point de vue de la rsolution des chantillons, du nombre de
bits uniformes ncessaires et de la taille relative de leur implmentation. Ces critres
nous permettent de mieux situer nos propres travaux et de dessiner la frontire entre ce
qui est acceptable et ce qui ne lest pas.
46
CHAPITRE 3
MODLE MATHMATIQUE
3.1 Introduction
Le chapitre qui dbute ici couvre la partie thorique de notre travail. Nous prsentons
lalgorithme spcialement conu pour la gnration de nombres alatoires sur puce. Dans
un premier temps, nous nous intressons son expression gnrale et la rattachons la
thorie des rseaux baysiens et des arbres de dcisions. Nous tentons ensuite de couvrir
les considrations propres limplmentation matrielle de lalgorithme et en dgageons
les bnces et les limitations thoriques. Nous verrons par la suite le dveloppement
mathmatique mme douvrir une brche dans les cueils mis en vidence et prsentons
les conclusions tirer en ce qui a trait aux distributions exponentielle et normale. Le
chapitre est achev par lnonciation de notre mthodologie de travail et les hypothses
admissibles qui sy rattachent.
3.2 Principe de base du modle
Notre travail sinscrit dans lhritage scientique des mthodes stochastiques vues la
section 2.2.1. Rappelons brivement quil sagit de techniques matrielles associes aux
signaux probabilistes. Aussi, notre modle de calcul se fonde sur la gnration des bits
dune variable alatoire issue dune distribution non-uniforme. Considrant quune va-
riable alatoire puisse tre gnre un bit la fois, il est vident quil existe un lien intime
qui rattache le modle de calcul la reprsentation binaire des nombres gnrer ; aussi
la connaissance pralable de cette dernire est primordiale.
47
La section 3.2.1 prsente sommairement notre algorithme an den clairer les enjeux.
La section 3.2.2 fait rfrence aux rseaux baysiens auxquels notre modle peut tre
rattach. La section 3.2.3 replace le modle dans le domaine des arbres de dcision
binaires an de mieux en expliciter le fonctionnement et le positionner par rapport au
modle de Knuth et Yao [25]. Finalement, la section 3.2.4 replace le modle dans un
contexte dexcution matrielle.
3.2.1 Formulation gnrale
La gure 3.1 illustre graphiquement lexcution de lalgorithme que nous proposons.
Nous considrons ici une distribution arbitraire qui se trouve tre la distribution normale
de paramtres = 512 et = 128 dnie sur lintervalle 4.
FIG. 3.1 tapes de lapproche dichotomique. (a) Gnration du bit le plus signicatif.
(b) Gnration du second bit. (c) Gnration du troisime bit. (d) tapes subsquentes
jusqu la gnration du sixime bit.
48
La gnration de la variable alatoire x seffectue suivant un processus dichotomique
permettant de gnrer x un bit la fois. chaque tape de lalgorithme, lintervalle des
valeurs possibles est divis en deux parties gales, puis lune des deux parties est choisie
de manire stochastique. Cette procdure permet la gnration de x un bit la fois, en
commenant par le bit le plus signicatif, tel que lillustre la gure 3.1.a. Le processus
se poursuit en divisant en deux parties gales le segment choisi, dont lune des deux
est slectionne de manire similaire aux bits prcdents, tel que lillustrent les gures
3.1.b et 3.1.c. Pour des raisons de lisibilit, le processus est continu jusquau sixime
bit (gure 3.1.d). Il peut nanmoins ltre indniment, suivant la prcision recherche.
Lintrt de cette mthode est dabord quelle peut-tre excute en parallle dans un
contexte matriel. En supposant que lon dispose dunits charges de gnrer un bit de
x, on peut imaginer une structure collaborative o les units se transmettent les mots
partiels de x en gnrant continuellement le bit dont elles sont charges. Le second
intrt est que plus on progresse, plus la probabilit associe un bit tend vers 0.5,
et la prcision requise devient unitaire (un seul bit uniforme suft). Finalement, cette
approche est sufsamment gnrale pour tre considre universelle, comme nous le
dmontrons la section 3.2.2.
3.2.2 Mise en contexte applique aux rseaux Baysiens
Nous allons tenter ici de modliser lalgorithme au moyen des rseaux baysiens (RB)
dont la paternit revient Judea Pearl [50]. Pearl a concentr ses efforts durant les annes
1980 asseoir les rseaux baysiens sur un formalisme on ne peut plus rigoureux qui ne
peut que nous tre protable.
49
Suivant la dnition quen donnent Russel et Norving [51], un RB est dni comme :
1. Un ensemble de N variables alatoires formant les nuds A
i
(1 i N) du
rseau. Ces variables peuvent tout autant tre discrtes que continues ;
2. Un ensemble darcs dirigs joignant des paires de nuds du rseau. Lensemble
des nuds parents du nud A
i
est lensemble des nuds A
j
(j < i) qui pointent
directement vers A
i
;
3. Chaque nud A
i
possde une distribution de probabilit conditionnelle note
P(A
i
[ Parents(A
i
)) qui quantie sa dpendance ltat de ses parents.
Si un RB est constitu de nuds binaires (cest--dire que chaque nud A
i
du rseau
ne peut prendre que deux valeurs possibles 0/1 pour nous , dont la ralisation est
note a
i
), nous lappellons rseau baysien binaire (RBB). Soit o ltat dun RBB
N nuds, alors o peut atteindre au plus 2
N
tats dont le vecteur a = a
1
a
2
a . . . a
N
est
la ralisation. La probabilit jointe
1
P(a) est donne par la probabilit conjonctive sur
ltat des nuds A
i
: P(a) = P(a
1
, a
2
a, . . . , a
N
). Pearl a fait la dmonstration que la
distribution jointe est donne par le produit des probabilits conditionnelles associes
aux nuds [50] :
P(a) =
N

i=1
P(A
i
= a
i
[ Parents(A
i
)) (3.1)
Si nous regardons ltat a comme la reprsentation binaire dun entier 0 a 2
N
, alors
a suit une distribution de probabilit f(a) dnie par lquation (3.1). Pour des raisons
de lisibilit, nous notons
i
la ralisation des parents du nuds A
i
. Nous relevons alors
que P(A
i
= 0 [
i
) = 1 P(A
i
= 1 [
i
). Il en ressort que la distribution de probabilit
f(a) est entirement dcrite par ses paramtres P(A
i
= 1 [
i
).
1
Le vocabulaire et les notations sont emprunts la thorie des RB.
50
Il est dusage de dcrire les paramtres du RB sous la forme dun tableau de probabilits
conditionnelles [51]. Nous les dcrivons plutt comme des fonctions nodales que nous
notons
i
(
i
), o
i
sera pour nous la reprsentation binaire dun entier 0
i
< 2
i1
.
FIG. 3.2 RBB totalement connect de la distribution vue la section 3.2.1 et tables des
distributions conditionnelles (ou fonctions nodales) associes.
Si lensemble des nuds parents de tout nud A
i
est lensemble de tous les nuds
A
j
(j < i) du RBB, alors ce RBB est dit totalement connect. Un RBB totalement
connect peut suivre toute distribution discrte. En dnissant une fonction bijective
x
b
= T(a) associant chaque tat a une reprsentation binaire virgule xe x
b
de
la variable alatoire x, il devient possible de gnrer nimporte quelle distribution de
probabilit f(x) en simulant le RBB totalement connect. Cette simulation nest que la
traduction dans le domaine des RB de notre algorithme dichotomique et il a de fait t
propos par Henrion [22]. Pour ce faire, il suft de calculer les paramtres de ce RBB :
on dnit pour chaque nud A
i
les trois constantes a
A, i
= 2
Ni+1

i
, a
B, i
= a
A, i
+2
Ni
et a
C, i
= a
B, i
+ 2
Ni
et on exprime la fonction nodale par :

i
(
i
) =
F[T(a
C, i
)] F[T(a
B, i
)]
F[T(a
C, i
)] F[T(a
A, i
)]
(3.2)
o F(x) est la fonction de rpartition de la variabe non-uniforme x.
51
3.2.3 Mise en contexte applique aux arbres de dcision binaire
La section 3.2.2 nous a permis darticuler notre algorithme dans le cadre des RB et dex-
primer ainsi les fonctions nodales comme des distributions de probabilit conditionnelle.
Les arbres de dcision binaire sont un outil graphique puissant pour illustrer de manire
compacte les relations conditionnelles. Outre cette caractristique illustrative, cet outil
va nous permettre de comparer notre algorithme au modle de gnration de variables
alatoires propos par Knuth et Yao [25] et de mieux apprcier loriginalit de notre
approche.
Considrons pour ce faire lexemple de gnration dune variable alatoire x dont la
reprsentation binaire tient sur 4 bits
2
. Supposons maintenant que x soit la valeur dune
des six faces dun d jouer. La fonction de rpartition de x est simplement exprime
par P(X = x) = P(a
1
, a
2
, a
3
, a
4
) = 1/6 si x 1, 2, 3, 4, 5, 6 et 0 autrement. Nous
obtenons ainsi les fonctions nodales donnes par la table 3.1, dnies pour larbre de
dcision binaire de la gure 3.3.
TAB. 3.1 Valeurs des fonctions nodales pour le problme du d six faces. Les valeurs
accompagnes dune astrisque sont arbitrairement xes 1.

i

1
(
1
)
2
(
2
)
3
(
3
)
4
(
4
)
0 0 1/2 2/3 1
1 N/A 1

1/3 1/2
2 N/A N/A 1

1/2
3 N/A N/A 1

0
4 N/A N/A N/A 1

5 N/A N/A N/A 1

6 N/A N/A N/A 1

7 N/A N/A N/A 1

2
An de respecter la notation des RB, nous notons x = a
1
a
2
a
3
a
4
, contrairement la nomenclature
habituelle de la reprsentation binaire des entiers.
52
FIG. 3.3 Arbre de dcision binaire de quatre niveaux et les fonctions nodales associes
pour le problme du d six faces.
Considrons maintenant comment le mme problme est trait par Knuth et Yao [25]. Le
bit de signe a
1
valant toujours 0, ce dernier peut tre retir de larbre. Nous aurons donc
gnrer alatoirement les bits a
2
, a
3
et a
4
. La mthode de Knuth consiste jouer pile ou
face jusqu ce que le rsultat recherch arrive. Il y a donc une probabilit de 0.5 daller
droite (respectivement gauche) depuis nimporte quel nud de larbre de dcision
binaire de la gure 3.4. Dans le cas o lexprience alatoire atterrit sur a
2
a
3
a
4
= 000 ou
a
2
a
3
a
4
= 111, lalgorithme se dplace en amont de larbre pour reprendre la procdure.
Knuth et Yao ont montr quil ntait pas ncessaire de remonter jusqu la racine dans
ce cas et quun retour au niveau 1 tait optimal. Il a galement fait la dmonstration quen
moyenne, sur un grand nombre dessais, il faudrait au plus 6 bits uniformes pour obtenir
un rsultat valide. Gnralisant cette conclusion, il parvenait faire la dmonstration que
toute gnration alatoire de variable non-uniforme de ce type pouvait tre ralise pour
un ratio maximal de
a
= 2. Nous avons en effet
a
= 6/3 = 2.
Remarquons pour commencer quil est possible de drouler linni larbre de dci-
sion binaire de la gure 3.4 en sappuyant sur les chemins de rtroaction. Ce droulement
transforme larbre balanc en un arbre binaire totalement dbalanc et possdant une in-
53
FIG. 3.4 Arbre de dcision binaire de trois niveaux d Knuth pour le problme du d
six faces.
nit de niveaux. On dira que le fait de xer la probabilit de choisir la branche de droite
une probabilit de 0.5 dforme larbre pour respecter la distribution de probabilit vi-
se. A contrario, notre approche part dun arbre de dcision binaire totalement balanc
puis contraint les probabilits conditionnelles sur les nuds (fonctions nodales
i
) pour
respecter la distribution de probabilit.
Notons que limplmentation matrielle de lalgorithme de Knuth aurait lavantage de
ne requrir quun seul bit uniforme par unit nodale, alors que la ntre en requiert non
seulement plusieurs, mais ncessite galement la mmorisation dun nombre exponen-
tiellement croissant de probabilits conditionnelles. Cependant, lavantage quoffre notre
approche est que les probabilits conditionnelles au niveau des nuds sont toujours de
loin suprieures la plus petite des probabilits jointes de la fonction de rpartition vi-
se, et ce en raison de la forme de lquation (3.1). Cest cette expression sous forme de
produit des probabilits conditionnelles qui donne lavantage selon nous notre mthode
en comparaison des approches matrielles adoptes jusquici, notamment la mthode de
combinaison linaire propose par Thomas [56, 58].
54
3.2.4 Difcults dans la mise en uvre matrielle
Les sections qui prcdent nous ont permis de mieux situer notre approche et den clai-
rer les avantages sur les mthodes matrielles classiques, qui consistent pour la plupart
cbler les algorithmes connus. Nanmoins, elle nous a galement permis de mesurer
les difcults que pourrait poser son implmentation matrielle. En supposant que nous
voulions gnrer une variable alatoire non-uniforme x dcrite par un nombre raison-
nable de bits, 16 par exemple, il apparat vident quun premier problme rside dans
lutilisation des nombres uniformes. En effet, en admettant que 20 bits uniformes soient
sufsants pour la gnration dune exprience de Bernoulli (section 2.2.1), il ne fau-
drait pas moins de 320 bits uniformes pour gnrer x, soit dix gnrateurs uniformes
tels que le Tausworthe combin. Ceci est bien entendu inacceptable en regard de ce qui
se fait couramment et des critres usuels de disposer dun gnrateur compact. De plus,
pour gnrer 16 bits, il faudrait mmoriser pas moins de 2
16
1 = 65 535 probabilits
conditionnelles, exprimes sur 20 bits chacune.
3.3 Dveloppement du modle mathmatique
Nous allons tenter ici de dvelopper les quations vues la section 3.2.2 pour voir com-
ment la contrainte de mmoire peut tre contourne. Nous nous intresserons ensuite
lapplication de ces quations aux distributions usuelles que nous dcrivions la sec-
tion 2.2.3 et que rsume le tableau 2.1. Finalement, nous nous intresserons plus attenti-
vement aux distributions qui nous concernent dans ce mmoire, savoir lexponentielle
et la normale.
55
3.3.1 Expression compacte de la fonction nodale
La gure 3.5 exprime graphiquement le calcul de la fonction nodale donne par lqua-
tion (3.2). Le calcul est effectu pour la fonction
5
suivant la distribution normale de
paramtres = 512 et = 128 sur lintervalle 4. Laxe des
5
est superpos aux
axes usuels de la courbe pour expliciter le mcanisme de calcul. Laxe des x est ga-
lement discrtis de sorte reter la subdivision de labscisse de la distribution nor-
male ^(512, 128) en 16 zones quidistantes elles-mmes subdivises en deux parties
gales. Les 16 zones de laxe des x correspondent une valeur de
5
, ces valeurs vont de
0 2
i1
1 = 2
4
1 = 15. La probabilit conditionnelle
5
est donne par le ratio de la
surface de la zone sur lensemble de la surface sous la courbe. Joindre les points de ces
ratios permet de tracer la fonction nodale, qui dans le cas de la normale est une droite.
FIG. 3.5 Illustration du calcul de la fonction nodale
5
pour
5
.
56
La fonction nodale
i
prendra diffrentes formes suivant la distribution de probabilit
considre. Dans le cas de la distribution normale, nous aurons toujours une droite pour
certaines conditions sur le rang i associ au nud. An de mieux comprendre le compor-
tement de ces fonctions, nous allons les tudier ici. Dans un premier temps, nous allons
dnir les points x
k
(0 k 2
i
) utiles pour calculer la fonction nodale
i
, telle que
la donne lquation (3.2), et que nous retrouvons la gure 3.5. Nous rcrivons alors
lquation (3.2) comme suit :

i
(
i
) = 1
F(x
k+1
) F(x
k
)
F(x
k+2
) F(x
k
)
, k = 2
i
(3.3)
Nous notons h le pas entre les x
k
(h=x
k+1
x
k
, 0 k < 2
i
). Nous procdons alors un
changement de variables x
k
= kh +x
0
qui nous permet dcrire :

i
(
i
) = 1
F([k + 1]h +x
0
) F(kh +x
0
)
F([k + 2]h +x
0
) F(kh +x
0
)
, k = 2
i
(3.4)
En supposant h sufsamment petit, il est possible de multiplier le nominateur et le d-
nominateur par h
1
et dapproximer
i
(
i
) :

i
(
i
) 1
f(kh +x
0
)
f([k + 1]h +x
0
) +f(kh +x
0
)
, k = 2
i
(3.5)
Le dveloppement de Taylor de f([k +1]h+x
0
) f(kh+x
0
) +hf

(kh+x
0
) de degr
1 nous permet dcrire :

i
(
i
) 1
f(kh +x
0
)
2f(kh +x
0
) +hf

(kh +x
0
)
, k = 2
i
(3.6)
57
Dans le cas de la grande majorit des distributions, f(kh +x
0
) ,= 0. Nous aurons donc :

i
(
i
) 1
1
2 +h
f

(kh+x
0
)
f(kh+x
0
)
, k = 2
i
(3.7)
Tout lintrt de ce dveloppement tient dans le fait que ln

(f(x)) =
f

(x)
f(x)
, comme nous
le verrons la section 3.3.2. Dici l, terminons ce dveloppement mathmatique en
relevant quun dveloppement limit sur lquation (3.7) nous donne :

i
(
i
)
1
2
+
h
4
ln

(f(x)), x = kh +x
0
et k = 2
i
(3.8)
3.3.2 Applications aux distributions usuelles
TAB. 3.2 Application de lquation (3.8) aux distributions usuelles
Distribution Fonction Fonction Approximation de
i
(
i
)
de densit de rpartition x = kh +x
0
et k = 2
i
Normale
1

2
e

(x)
2
2
2
N/A
1
2

h
4
2
(x )
Exponentielle e
x
1 e
x 1
2

h
4
Log-normale
1
x

2
e

ln
2
(x)
2
2
N/A
1
2

h
4x

h
4
2
ln (x)
x
Rayleigh xe

x
2
2
2
1 e

x
2
2
2
1
2
+
h
4x

hx
4
2
Weibull
c

(
x

)
c1
e
(
x

)
c
1 e
(
x

)
c
1
2
+
(c1)h
4x

ch

c
x
c1
La table 3.2 prsente lapplication de lquation (3.8) aux distributions que nous consid-
rions dj au chapitre 2. Lintrt de cette revue est ltude des expressions analytiques
des fonctions nodales. Relevons quil est remarquable que la fonction logarithmique
58
de lquation (3.8) permette dexprimer toute multiplication prsente dans la fonction
de densit f(x) sous la forme dune addition, et toute puissance sous la forme dune
constante multiplicative. Cest un constat dautant plus remarquable que la grande ma-
jorit des distributions exploitent la fonction exponentielle. Il est tout aussi apprciable
de relever que lquation (3.8) sappuie sur la fonction de densit f(x) et non la fonction
de rpartition F(x), dont lexpression analytique nest pas toujours connue.
Alors que les fonctions nodales des distributions normale et exponentielle exhibent un
comportement linaire, les autres distributions semblent contraindre une tude plus
approfondie que nous nous sommes pargn. Nous allons donc concentrer nos efforts
sur les distributions o la mthode semble sappliquer avec aisance.
3.3.3 Spcicits des distributions exponentielle et normale
Les expressions analytiques des fonctions nodales donnes au tableau 3.2 sont des ap-
proximations qui se fondent sur certaines hypothses : un pas h sufsamment petit, ap-
plicabilit de dveloppements de Taylor de degr 1, etc. Lquation (3.8) offre donc un
bon aperu du comportement attendu de la fonction nodale, mais aucune garantie sur
son exactitude numrique. Nous allons considrer dans le dtail ce que vaut la fonction
nodale pour les distributions exponentielle et normale.
Pour la distribution exponentielle, la fonction nodale devrait se ramener une constante
selon les rsultats de la table 3.2. Considrons la gnration de x dans lintervalle [0, 32]
o la distribution est entirement couverte 1, 2657 10
12
% prs. Pour chaque nud i,
nous avons x
0
= 0 et h = 32/2
i
. Nous rcrivons lquation (3.4) comme suit :

i
(
i
) = 1
e
k
32
2
i
e
(k+1)
32
2
i
e
k
32
2
i
e
(k+2)
32
2
i
, k = 2
i
(3.9)
59
En divisant le nominateur et le dominateur par e
k
32
2
2
i
, on trouve :

i
(
i
) = 1
1 e

32
2
2
i
1 e
64
2
2
i
(3.10)
Ce qui indique que la fonction nodale
i
(
i
) ne dpend pas de
i
et quelle se rsume
une constante pour chaque nud i. Autrement dit, le rsultat de la table 3.2 illustre
trs exactement le comportement de la fonction nodale. Cependant, elle nen donne pas
lexpression analytique exacte mais une approximation qui tend ltre quand le pas h
diminue (quand lindice du nud augmente). Cette approximation tend devenir exact
pour les nuds 5 32. An destimer lexactitude de cette approximation, la gure 3.6
trace lerreur relative obtenue pour ces nuds. Lchelle des ordonnes est logarithmique
an de reter la prcision machine requise.
FIG. 3.6 Erreur dapproximation de la fonction nodale pour la distribution exponentielle.
60
La distribution exponentielle prsente un trs bon enseignement de la faon dont il faut
recourir lquation (3.8). Cette dernire doit tre utilise comme estimateur analytique
de lallure de la fonction nodale en vue de llaboration dune stratgie dapproxima-
tion. Si la fonction nodale peut tre exprime analytiquement, il est prfrable de sy
tenir. Autrement, il est suggr de rechercher les paramtres permettant de retrouver une
expression ayant la forme de celle donne par lquation (3.8).
FIG. 3.7 Erreur dapproximation de la fonction nodale pour la distribution normale.
Pour nous en convaincre, considrons la loi normale. Celle-ci ne connat pas dexpres-
sion analytique de sa fonction de rpartition mais lquation (3.8) indique que la fonction
nodale devrait avoir un comportement linaire. Considrons pour ns de vrication la
gnration de la variable x issue de la normale sur la moiti de lintervalle [4, +4]
(lautre moiti tant gnre par symtrie)
3
. Pour chaque nud i, nous posons x
0
= 0
et h = 4/2
i
. Comme on peut sen apercevoir, lapproximation gagne en prcision avec
lordre des nuds. Une approximation linaire faisant de lexpression analytique de
3
Nous nous contentons de 4 car les outils logiciels tels que MATLAB causent des problmes dar-
rondi dans lvaluation de la fonction de rpartition dans lintervalle [4, 8].
61
lapproximation est plus approprie pour les nuds de premier ordre. Pour les nuds
dordre suprieur, lapproximation convient parfaitement comme lillustre la gure 3.7.
La gure 3.7 prsente lerreur relative (moyenne) de lapproximation donne par lqua-
tion (3.8). Nous navons considr ici que les nuds 3 15 cause de la trop grande
quantit de mmoire requise pour lvaluation numrique des fonctions nodales dordre
suprieur. Il est intressant de remarquer la dcroissance exponentielle de lerreur. La
tendance de cette dcroissance est justie par le fait que le pas h diminue de moiti
chaque fois que lordre du nud crot dune unit. Si nous comparons cette courbe avec
celle de la gure 3.6, il est curieux de constater la forme particulirement cahoteuse de
lerreur relative pour les nuds 17 32 dans le cas de lexponentielle. En vrit, la pr-
cision des librairies mathmatiques (MATLAB en loccurrence ici) est particulirement
compromise pour des rsolutions aussi extrmes.
3.4 Hypothses et mthodologie
Maintenant que notre modle mathmatique est sufsamment labor et que notre re-
vue de littrature est sufsamment complte, nous allons noncer les hypothses de
travail que nous admettrons pour le restant du mmoire et la mthodologie que nous
avons suivie pour la ralisation du projet. Nous considrons dune part la reprsentation
des nombres, cest--dire tout ce qui a trait au format et la rsolution des variables
alatoires. Nous voyons galement comment nous qualions les gnrateurs alatoires
produits la lumire des mthodes vues la section 2.4. Nous nonons nalement le
processus de conception que nous avons mis en application pour la bonne conduite du
projet.
62
3.4.1 Reprsentation des nombres
Comme nous avons pu le voir au chapitre 2, tous les gnrateurs matriels de nombres
alatoires suivant une distribution non-uniforme recourent une reprsentation vir-
gule xe. Lorsque la distribution le requiert, les nombres signs sont reprsents en
complment 2. Cette reprsentation peut causer certains effets indsirables lors dune
conversion vers une reprsentation virgule ottante (section 1.3.5), plus rpandue dans
un environnement logiciel. Nous considrons donc comme une hypothse raisonnable le
recours exclusif la reprsentation virgule xe. De ce fait, il sera tout aussi raisonnable
de considrer toute variable alatoire continue telle une variable discrte [15].
Le travail de Timarchi et al. [59], revu la section 2.3.2, nous a permis dvaluer lapptit
grandissant des architectures recourant plus de 16 bits. La limitation de la reprsenta-
tion des nombres 16 bits est galement applique par Cheung et al. [10], Lee et al.
[33, 34, 36] et Thomas [56, 58]. Aussi, nos architectures nales considrent la variable
alatoire x reprsente sur 16 et 32 bits.
Pour ce qui est de la reprsentation des nombres pour nos gnrateurs, nos choix sont dic-
ts par la couverture recherche pour x. Ainsi, la gnration de x dans lintervalle [0, 16)
est sufsante pour la distribution exponentielle de paramtre = 1 ; lintervalle [0, 32)
est considr exhaustif. Nous aurons donc une reprsentation non signe virgule xe
comptant 4 5 bits pour la partie entire et les bits restants pour la partie fractionnaire.
Dans le cas de la distribution normale centre rduite, nous considrons la gnration
de x dans lintervalle [4, +4) comme sufsante ; elle sera pour nous exhaustive dans
lintervalle [8, +8). Nous aurons une reprsentation signe comportant 1 bit de signe,
3 4 bits pour la partie entire et les bits restants pour la partie fractionnaire.
63
3.4.2 Utilisation des bits uniformes
Nous avons pu voir au chapitre 2 que les auteurs xaient le nombre de bits uniformes
ncessaires leur gnrateur en fonction de la prcision recherche. Ainsi, les architec-
tures visant une trs grande prcision utilisent entre 48 et 80 bits uniformes. Nous avons
not la section 2.3.4 que cette approche est caractristique du paradigme de division
non-linaire de lintervalle [0, 1], qui nest pas le ntre. Notre approche consiste plu-
tt rpter plusieurs expriences alatoires de Bernouilli, ce qui nous permet de xer
lintervalle de gnration de x sans connaissance pralable du nombre de bits uniformes
ncessaires. Nous avons considr que 32 bits uniformes taient largement sufsant pour
mener une exprience de Bernoulli avec une bonne prcision (en de du milliardime).
Nous verrons la section 4.2.2 de quelle faon il est galement possible de minimiser
le nombre de gnrateurs uniformes pour lensemble du gnrateur non-uniforme par-
tageant une ressource commune pour lensemble des nuds au moyen dun chemin de
donnes appropri.
3.4.3 Qualication des gnrateurs proposs
Nous avons vu la section 2.4 que le test du
2
est le test de choix pour qualier les
gnrateurs non-uniformes. Contrairement ce que pratiquent diffrents auteurs, nous
avons choisi de suivre les consignes dAgostino et Stephens et de diviser lintervalle de
gnration en k = 2N
2
5
intervalles quiprobables pour une population de N = 20 10
6
chantillons. La p-value nayant pas grande signication dans ces conditions [30], nous
nous contenterons de la mentionner pour conrmer que le gnrateur passe ou non le test
du
2
. Nanmoins, pour que nos designs puissent tre compars ceux de la littrature,
nous procderons comme le rent Lee et al. [33, 34] en divisant lintervalle de gnration
en k = 100 intervalles quidistants pour une population de N = 4 10
6
et comparerons
la p-value ainsi obtenue celle donne dans les articles susmentionns.
64
3.4.4 Processus de conception et de validation
Notre travail de conception a suivi un processus de descente hirarchique dabstraction.
Aussi, chaque implmentation est initialement valide par un quivalent de prototypage
logiciel implment dans MATLAB, permettant den explorer lefcacit. Une fois le
modle valid ce niveau dabstraction par le test du
2
pour une population raisonnable
(N = 150 000), Le gnrateur est implment en matriel au moyen dune description
VHDL ou un modle Simulink quivalent au moyen de loutil System Generator de
Xilinx. Le design ainsi produit est alors valid son tour par le mme test du
2
, pour
des populations de N = 4 10
6
et N = 20 10
6
. Le recours renouvel au test du
2
est
justi par le fait que limplmentation MATLAB ne fait pas usage du mme gnrateur
uniforme que celui implment en matriel (section 4.2.4). Toutes les sources utiles sont
donnes en annexes et clairement identies dans le texte.
Nous considrons dans notre travail la corrlation srielle. Le gnrateur dexponentielle
ayant lexpression mathmatique la plus simple (puisque la gnration de chaque bit est
indpendante de celle des autres), nous y recourrons comme modle dinvestigation em-
pirique. Nous aurons cur de produire des gnrateurs assurant aucune corrlation
entre deux chantillons conscutifs. Nanmoins, au contraire de ce quont pu faire les
auteurs cits dans ce mmoire, nous nous attarderons galement une tude plus appro-
fondie en considrant davantage de k-tuplets et noncerons les moyens de garantir la non
corrlation en ayant soin de viser des implmentations les plus compactes possibles.
Nous comparons nos gnrateurs avec ceux cits dans la littrature, tant du point de vue
de la vitesse dexcution, de la surface dutilisation, de lintervalle de gnration et de la
qualit du bruit produit. Limplmentation matrielle tant ralise sur les FPGA de Xi-
linx, la surface dutilisation est compare en se rfrant simplement au nombre de slices
ncessaires et la frquence maximale dopration. Nous basons nos comparaisons sur
les estimations apportes par le logiciel ISE 10.1 aprs placement et routage.
65
Finalement, nous aurons cur de prsenter un exemple dacclration matrielle dune
application Monte Carlo tire de la pratique des physiciens en optique et qui a le mrite
de faire intervenir les gnrateurs prsents ici. Le code source de cette application est
librement disponible sur le net et sera discut au chapitre 5.
3.5 Conclusion
Ce chapitre nous a permis dexposer notre algorithme dichotomique ainsi que le modle
mathmatique sy rattachant. Le rapprochement avec le domaine des rseaux baysiens
nous a aids mettre en quation la relation des probabilits conditionnelles exprimes
par notre approche dichotomique. La reprsentation sous forme darbre de dcision bi-
naire a rvl son fonctionnement intuitif et loriginalit qui le distingue du modle de
Knuth et Yao.
Notre dveloppement entourant la fonction nodale nous a permis de considrer les avan-
tages et les limites de notre mthode. Ainsi, nous savons que les distributions exponen-
tielle et normale se prtent bien une implmentation matrielle ventuelle puisque leurs
fonctions nodales se rsument respectivement une constante et une droite. Le chapitre
4 nous permettra de mieux apprcier ces conditions favorables.
66
CHAPITRE 4
ARCHITECTURES DES GNRATEURS ALATOIRES
4.1 Introduction
Le chapitre qui dbute ici couvre les diffrentes architectures matrielles que nous propo-
sons et explorons pour gnrer une variable alatoire non-uniforme en exploitant lalgo-
rithme dichotomique prsent au chapitre 3. Cette prsentation comprend larchitecture
universelle qui en est issue et sa dclinaison aux distributions exponentielle et normale.
Larchitecture que nous nommons universelle sera pour nous une sorte de patron
de conception trs gnral sans vritable vise dapplication matrielle. Ce patron nous
permettra dexprimer clairement les difcults que pose la mise en uvre matrielle de
ces gnrateurs non-uniformes, que cela soit en terme dutilisation des bits uniformes,
de rsolution de la fonction nodale etc.... Nous nous concentrons ensuite dtailler les
architectures matrielles possiblement applicables aux distributions exponentielle et nor-
male. Ce recensement permettra de dnir les exprimentations auxquelles nous nous
livrerons au chapitre 5.
4.2 Architecture universelle
Lalgorithme dichotomique du chapitre 3 est bas sur la gnration de la variable ala-
toire non-uniforme x, un bit la fois. Nous considrons dans un premier temps les gn-
rateurs de Bernoulli existants et y proposons une modication qui nous sera utile. Nous
survolons ensuite larchitecture collaborative que nous proposons et les considrations
pratiques entourant les gnrateurs uniformes.
67
4.2.1 Gnrateur dune distribution de Bernoulli
Nous avons vu la section 2.2.1 larchitecture du gnrateur de Bernoulli propose
par Gaines [8, 18] (gure 2.1). Celle-ci souffre malheureusement dun chemin critique
proccupant qui poussa van Daalen et al. [61] den proposer une version modie (gure
2.2). Si on y regarde de plus prs, il devient clair que la partie combinatoire de la cellule
de la gure 2.2 est stochastiquement identique celle de chacun des multiplexeurs de la
gure 2.1. Aussi, loption de pipeliner larchitecture de Gaines est galement suggre
par Brown et Card en registrant la sortie des multiplexeurs [8] . Cependant, dans les deux
cas, le gnrateur de Bernouilli ne pourra changer de paramtre (probabilit que la sortie
vale 1) dun coup dhorloge lautre. Ce critre est fondamental pour notre gnrateur
puisque chaque nud produit un bit stochastique dont la probabilit varie avec ltat des
nuds parents.
Analysons le fonctionnement de larchitecture de Gaines. Nous avons volontairement
choisi de la reprsenter comme une combinaison de 2
m
multiplexeurs cascads. Il nest
aucunement ncessaire de disposer dun nombre de multiplexeurs qui soit une puissance
de 2. Supposons cependant que ce soit le cas ; alors il est intressant de noter quil est
possible de prvoir la valeur de la sortie Y en parcourant les bits de commande u
i
, et
ce du bit u
1
au bit u
2
m : la sortie Y prendra la valeur du bit b
i
dont lindice est celui
du premier bit u
i
non nul ; Y vaudra 0 si tous les bits u
i
sont nuls. Cette simple analyse
nous permet de diviser le gnrateur de Bernoulli de Gaines en deux parties distinctes.
La premire partie trouve lindice du premier bit non nul parmi les 2
m
bits uniformes u
i
.
La seconde partie choisit quant elle le bit correspondant parmi les bits de probabilit
b
i
. La sortie est force 0 dans le cas o tous les bits uniformes sont nuls. La premire
partie est implmente en utilisant un encodeur de priorit ; la seconde partie est ralise
au moyen dun multiplexeur ; la sortie est force 0 au moyen dune porte ET, comme
lillustre la gure 4.1.a.
68
FIG. 4.1 Gnrateur de Bernoulli propos. (a) Gnrateur de Gaines spar en deux
parties. (b) Architecture itrative dun encodeur de priorit pipelin.
Les encodeurs de priorit sont moins populaires dans les systmes numriques que ne le
sont les multiplexeurs par exemple. Xilinx prconise dailleurs de forcer explicitement
linfrence dun encodeur de priorit en ajoutant la contrainte PRIORITY_EXTRACT.
Si lencodeur de priorit est trop gros (si m est de lordre de 5 et plus), nous proposons
dutiliser une version itrative de lencodeur de priorit de notre cru que prsente la
gure 4.1.b. Un tel encodeur de priorit peut tre pipelin au besoin en registrant les
sorties.
Lencodeur de priorit 2
m
m itratif fonctionne comme suit. Lentre est divise en
deux parties cones deux encodeurs de priorits 2
m1
m 1 nots (1) et (2) (ces
derniers peuvent tre registrs au besoin) ; le MSB de lentre est con lencodeur de
priorit (1), le LSB est con lencodeur de priorit (2). La sortie GS (Group Signal)
dun encodeur de priorit vaut 1 moins que lentre ne soit nulle. La sortie GS de
lencodeur de priorit itratif est obtenue par une porte OU sur les signaux GS des deux
encodeurs de priorit (1) et (2). Si le MSB nest pas nul, le multiplexeur conduit la
sortie de lencodeur de priorit (1), autrement, il conduit celle de lencodeur de priorit
(2). La sortie de lencodeur de priorit itratif (reprsente sur m bits) est obtenue en
concatnant la sortie du multiplexeur et le signal GS de lencodeur de priorit (1) (ce
dernier est plac en MSB).
69
4.2.2 Architecture collaborative des noeuds
Quand on cherche concevoir une machine mimiquant le comportement de lalgorithme
dichotomique, on en vient se demander : 1) Comment faire pour que la gnration soit
la plus efcace ? 2) Comment faire pour que les nuds communiquent entrent eux ?
FIG. 4.2 Gnration pipeline des tats des nuds pour un RBB quatre nuds. La
sortie est valide une fois que le dernier tat est gnr.
la premire question, il est possible de rpondre aisment en imaginant un systme pi-
pelin dont le fonctionnement est schmatis la gure 4.2. Chaque nud doit connatre
ltat de ses parents. Les parents sont donc gnrs un la fois en fonction des nuds
prcdents. Le premier nud est indpendant des suivants et ses tats A(1, j) peuvent
tre gnrs continuellement. Le second nud gnre son tat en fonction du nud pr-
cdent avec une priode de retard. La relation de dpendance est indique la gure 4.2
par le second indice j. Le processus est ainsi continu pour lensemble des nuds jus-
qu ce que le dernier nud soit atteint. ce moment, la sortie est mise jour. Il devient
possible dans ces conditions de gnrer un nouvel tat du rseau chaque priode la
condition que le pipe soit rempli.
70
Le schma de la gure 4.3 rpond la seconde des deux questions. Il sagit l de notre
structure collaborative des nuds. Chaque unit nodale possde une sortie registre.
chaque coup dhorloge, elle concatne son entre (tat des parents) au bit quelle a elle-
mme gnr. Ce bit est fonction de lentre et se place en LSB. la n de la structure,
ltat a du RBB est ainsi gnr chaque coup dhorloge.
Pour que chaque cellule puisse gnrer un bit stochastique, une seconde entre doit tre
achemine : le nombre alatoire uniforme ncssaire la gnration du bit alatoire. Plu-
tt que dacheminer un nombre alatoire dans son intgralit, nous proposons de proter
de la structure de la gure 4.1.a pour nacheminer que lindice associ au nombre uni-
forme (la sortie dun encodeur de priorit), de sorte faciliter le routage. Il est galement
possible de se dispenser du routage du signal GS, ce dernier nayant dutilit que trs ex-
ceptionnellement (la probabilit de son utilisation est de 2
2
m
).
FIG. 4.3 Structure collaborative des nuds. Les sorties des cellules sont registres.
Songeons fournir la structure un seul gnrateur alatoire sans compromettre pour
autant la qualit du bruit gnr. Cette ide part de lhypothse quun chemin de don-
nes adquat inhiberait les contrefaits ventuels de ce choix. La gure 4.4 suggre trois
scnarios : le premier scnario (gure 4.4.a) achemine le nombre alatoire
1
en supposant
que le registrement des units nodales permet la gnration de chaque bit de a indpen-
demment des autres ; le second scnario (gure 4.4.b) part du mme principe mais ajoute
1
Nous dirons nombre alatoire plutt que lindice obtenu par lencodeur de priorit pour allger
lcriture.
71
des registres entre chaque nud ; le troisime scnario (gure 4.4.b) procde de la mme
faon (gnrateur unique plus registrement entre les nuds) mais achemine les donnes
contre-courant du chemin de gnration, comme le faisait van Daalen [61] pour son
gnrateur de Bernoulli (section 2.2.1).
An de bien comprendre le fonctionnement de ces architectures, considrons lexemple
de la gnration de quatre bits suivant les trois scnarios de la gure 4.4. Pour ce faire,
la gure 4.5 reprend le chronogramme de la gure 4.2 en y superposant temporellement
la gnration des nombres alatoires uniformes. La table 4.1 part de ce graphique pour
identier les nombres alatoires impliqus dans la gnration des bits des sept chan-
tillons A(1, j) A(7, j).
FIG. 4.4 Scnarios dalimentation en nombre alatoires. (a) Un gnrateur unique pour
tous les nuds. (b) Un gnrateur unique avec registrement entre les nuds. (c) Gnra-
teur unique, registrement entre les nuds et propagation contre-courant.
72
Au scnario #1 (gure 4.4.a), les bits de tous les chantillons considrs sont gnrs
indpendamment les uns des autres. Le scnario #2 (gure 4.4.b) ne garantit pas cette
condition et doit par consquent tre rejet. Le scnario #3 (gure 4.4.c) exhibe un com-
portement bien particulier : le chemin de propagation des nombres alatoires allant
contre-courant de celui de la gnration des bits stochastiques, les premiers chantillons
gnrs sont invalides ; ds aprs, les chantillons sont constamment gnrs et les bits
sont gnrs indpendamment les uns des autres.
FIG. 4.5 Superposition temporelle des donnes et des uniformes.
TAB. 4.1 Trois scnarios touchant les bits uniformes.
chantillon Scnario #1 Scnario #2 Scnario #3
A(1, j) U(1, 2, 3, 4) U(1, 1, 1, 1) Invalide
A(2, j) U(2, 3, 4, 5) U(2, 2, 2, 2) Invalide
A(3, j) U(3, 4, 5, 6) U(3, 3, 3, 3) Invalide
A(4, j) U(4, 5, 6, 7) U(4, 4, 4, 4) U(1, 3, 5, 7)
A(5, j) U(5, 6, 7, 8) U(5, 5, 5, 5) U(2, 4, 6, 8)
A(6, j) U(6, 7, 8, 9) U(6, 6, 6, 6) U(3, 5, 7, 9)
A(7, j) U(7, 8, 9, 10) U(7, 7, 7, 7) U(4, 6, 8, 10)
Il nest pas vident cette tape de mesurer limpact du compromis que nous avons
accept. Ainsi, les chantillons A(1, j) et A(2, j) du scnario #1 partagent un certain
nombre dchantillons uniformes. Ce nest pas le cas du scnario #3 (voir les chantillons
A(4, j) et A(5, j)), mais ce mme patron est rencontr entre deux chantillons gnrs
deux temps dintervalle au scnario #3 (A(4, j) et A(6, j) ; A(5, j) et A(7, j)).
73
4.2.3 Architecture des units nodales
Maintenant que nous avons une ide de la faon dont la structure collaborative des nuds
peut tre ralise, considrons larchitecture des units nodales. Chacune de ces cellules
reoit les bits prcdemment gnrs par les nuds hirarchiquement suprieurs et un
nombre alatoire uniforme (son indice reprsent sur m bits). Lunit nodale comprend
donc le multiplexeur issu de la seconde partie du gnrateur de Bernoulli modi que
nous avons propos. Ce multiplexeur est command par les mbits de lencodeur et reoit
2
m
bits reprsentant la fonction nodale
i
. Lunit nodale possde une sortie registre qui
est simplement la concatnation de lentre et du bit gnr. Le bit gnr va en LSB.
FIG. 4.6 Architecture gnrique dune unit nodale.
La gure 4.6 prsente les deux faons possibles dimplmenter cette unit nodale : la
gure 4.6.a traduit exactement la sparation en deux du gnrateur de Bernoulli modi ;
la gure 4.6.b prsente le cas o le signal GS est ignor, ce qui pargne le routage dun
signal le long de la structure collaborative et vite lutilisation dune porte ET.
Finalement, considrons limplmentation de la fonction nodale
i
. Celle-ci peut soit
tre ralise au moyen dune mmoire de taille 2
i1
2
m
, dune fonction arithmtique
correspondant lquation 3.8 ou encore dune fonction stochastique quivalente. Nous
verrons dans ce qui suit quelle implmentation choisir.
74
4.2.4 Choix dun gnrateur uniforme
Nous avons vu la section 1.3.4 les diffrentes stratgies permettant dimplmenter des
GRLB. Nous y mentionnions que Xilinx mettait la disposition des concepteurs de cir-
cuits numriques des exemples de code et des tables de polynmes irrductibles pour
les LFSR. Malheureusement, nous mentionnions galement quil a t dmontr que les
LFSR possdaient de faibles proprits alatoires en raison de la trs forte corrlation
entre les nombres gnrs. Plusieurs solutions soffrent au concepteur pour utiliser les
LFSR dans un contexte de simulation stochastique. La premire de ces solutions est de
rduire le dbit du LFSR en prenant un chantillon uniforme tous les N coups dhor-
loge, o N est le nombre de registres du LFSR. Cette approche est rejeter en raison
des besoins de rapidit dexcution de la structure collaborative sus-dcrite. Une autre
solution consiste utiliser M LFSR en parallle. Il a t prouv que cette solution ex-
hibait de trs bonnes proprits alatoires [43], mais cette assertion nest vraie que pour
certaines conditions sur les graines (critre de non-corrlation des graines), ce qui en fait
une contrainte dautant plus disgracieuse que les gnrateurs uniformes ainsi obtenus
sont coteux en matriel (environ 1000 slices). Ainsi, la piste traditionnelle des LFSR
est carter dans la conception dun gnrateur alatoire de qualit.
Cheung et al. [10] ont rapport une implmention de gnrateur de type Taussworthe
combin [27] nutilisait que 141 slices tout en afchant une priode de 2
88
. Le gnra-
teur Taussworth combin a le dsavantage dimposer la reprsentation 32 bits du nombre
alatoire uniforme
2
. Nous accepterons avec indulgence certaines sous-optimisations des
conceptions venir dues cette contrainte, comme le rent avant nous les auteurs sus-
nomms [10].
2
Il est en vrit possible de reprendre les quations de Lcuyer et de retrouver des congurations per-
mettant une reprsentation sur n bits quelconques, mais rares sont ceux qui se sont lancs dans laventure,
et nous navons pas chapp la rgle.
75
4.3 Application la distribution exponentielle
La distribution exponentielle a des proprits qui la distingue singulirement des autres
distributions. Notre dveloppement de lquation (3.10) montrait que la fonction nodale
associe la distribution exponentielle se rduisait une constante. Ce rsultat signie,
toute n utile, que les nuds du rseau sont indpendants les uns des autres. Autrement
dit, il nest pas ncessaire de gnrer les nuds parents pralablement la gnration des
nuds hirarchiquement infrieurs. La conclusion tirer de cela est que dans le cas de
la distribution exponentielle, la structure collaborative des nuds nest pas ncessaire.
Dans ce qui suit, nous allons considrer deux faons permettant de tirer parti de cette in-
dpendance pour optimiser larchitecture. Nous pourrons ainsi tablir un protocole pour
ltude du comportement des diffrents scnarios dalimentation en nombres alatoires
de la gure 4.4.
4.3.1 Vue globale de larchitecture
La gure 4.7.a reprend larchitecture collaborative de la gure 4.3 en brisant les liens
de dpendance (rendus inutiles) entre les nuds. La gure 4.7.b inscrit cette version
modie dans le cadre du scnario #1 de la gure 4.4a.
FIG. 4.7 Esquisse de larchitecture dun gnrateur dexponentielle.
76
En se rfrant larchitecture de lunit nodale prsente la gure 4.6, on saperoit
que lexponentielle est implmentable laide dune simple mmoire de N 2
m
, o 2
m
renvoie la longueur du nombre alatoire uniforme et N au nombre de nuds dans le
RBB. Nanmoins, la rupture des liens de dpendance modie quelque peu le comporte-
ment de la structure collaborative. Ainsi, au lieu de se comporter comme le prvoyait le
scnario #1 dcrit la table 4.1, la structure exhibe le comportement propre au scnario
#2. Nous allons considrer la section 4.3.2 qui suit comment il est possible de modier
la structure pour quelle afche diffrents comportements des scnarios prcdemment
prsents.
4.3.2 tage de sortie
En sen tenant lesquisse de la gure 4.7.b, il apparat que la sortie a ne peut prendre
quune des 2
m
valeurs prsentes dans la ROM du gnrateur dexponentielle. Or le
gnrateur dexponentielle est suppos pouvoir gnrer jusqu 2
N
valeurs diffrentes
(2
N
2
m
) de a suivant la distribution vise. On peut alors corriger ce comportement
en ajoutant un tage de sortie constitus de chemins de dlais pour chaque bit, comme
lillustre la gure 4.8, o lvaluation prliminaire de a est note .
FIG. 4.8 Architecture dun gnrateur dexponentielle modie.
77
Si tous les registres dcalage sont de longueur diffrente et que cette diffrence est
exactement de di = 1, alors le gnrateur dexponentielle se comporte suivant le sc-
nario #1. Si cette diffrence est exactement de 2, le gnrateur se comporte suivant le sc-
nario #3. En variant la diffrence de la longueur des registres dcalage, il est possible
daboutir dautres scnarios. Ainsi, outre le fait davoir entre nos mains une nouvelle
architecture de gnrateur dexponentielle, nous voil en possession dun outil matriel
permettant lexploration de la corrlation srielle de larchitecture collaborative alimen-
te par un seul PRNG que nous voquions la section 4.2.2.
4.3.3 Architecture alternative
Repartons maintenant du principe que les bits dun gnrateur dexponentielle sont in-
dpendants les uns des autres suivant le rsultat de lquation (3.10). la section 4.2.1,
nous rejetions le gnrateur de Bernoulli de van Daalen et al. [61] sous prtexte quil ne
permettait pas le changement rapide du paramtre de la distribution de Bernoulli.
Cet argument na plus lieu dtre dans le cas de la distribution exponentielle puisque
ce paramtre (fonction nodale) ne varie plus. Aussi devient-il possible dimplmenter
un gnrateur dexponentielle en utilisant en parallle N gnrateurs de Bernoulli de
van Daalen. Cette approche permet dviter les registres dcalage de ltage de sor-
tie prsent la gure 4.8. Ainsi aurons-nous au moins trois diffrentes architectures
dexponentielle valuer, nommment :
1. Gnrateur dexponentielle N Bernoulli de van Daalen ;
2. Gnrateur dexponentielle ROM compacte avec tage de sortie di = 1 ;
3. Gnrateur dexponentielle ROM compacte avec tage de sortie di = 2 ;
4. Gnrateur dexponentielle ROM compacte avec toute autre conguration de
ltage de sortie.
78
4.4 Application la distribution normale
Au contraire de ce que nous avons pu constater avec la distribution exponentielle, la fonc-
tion nodale de la distribution normale nexhibe pas toujours un comportement linaire.
Aussi, limplmentation matrielle de lunit nodale du gnrateur de la distribution nor-
male aura diffrentes formes selon la hirarchie laquelle elle appartient. La section qui
suit permet de donner une vue densemble de ces architectures avant que leur mise en
uvre matrielle ne soit prsente au chapitre 5.
4.4.1 Implmentation de la fonction nodale
Nous avons vu la section 4.2.3 que le bloc associ la fonction nodale pouvait tre
implment de trois faons possibles. La premire et la plus simple de ces approches
consiste utiliser une mmoire de type RAM ou ROM dans laquelle les valeurs de
la fonction nodale
i
(
i
) sont enregistres. Cette solution est viable en autant que la
taille de la mmoire requise soit raisonnable, ce qui nest vrai que pour les nuds de
premier ordre. Pour les nuds dordre suprieur, nous devons recourir des solutions
alternatives.
La premire de ces approches alternatives se fonde sur lexpression analytique de la
fonction nodale donne par lquation (3.8). Cela peut tre fait en recourant aux circuits
arithmtiques usuels tels que les additionneurs, les multiplieurs, etc ; mais il est gale-
ment possible davoir recours des blocs spcialiss tels que les architectures CORDIC.
Nanmoins, vu le nombre de nuds impliqus, cette solution nest pas raliste eu gard
nos critres de tailles sur puce. La seconde mthode se base sur lexploitation de larith-
mtique stochastique pour raliser la mme tche. Larithmtique stochastique dispose
lheure actuelle dun nombre restreint doprateurs [8] ; mais ces derniers sufsent dans
le cas de la distribution normale.
79
4.4.2 Implmentation arithmtique des noeuds linaires
Reprenons ici lexpression analytique de la fonction nodale que nous donnait lqua-
tion (3.8) pour la loi gaussienne de paramtres et :

i
(
i
) =
1
2

h
4
2
(x ), x = kh +x
0
, k = 2
i
(4.1)
Cette expression nest pas exacte pour les nuds de premier ordre. La gure 3.7 nous
donnait le comportement de son erreur relative, laissant prsumer son applicabilit aux
nuds dindice 5 et plus et pour une couverture symtrique de 4. La fonction nodale
peut nanmoins exhiber un comportement linaire sans que ce ne soit exactement celui
de lquation (4.1). Il est alors possible dapproximer la fonction nodale en effectuant
une rgression linaire sur ses points. En notant
i
et
i
les paramtres de la fonction
nodale
i
(
i
) =
i

i
+
i
, on retrouve la table 4.2 lensemble des paramtres obtenus
par rgression linaire pour une couverture de 8.
TAB. 4.2 Paramtres des nuds linaires de la gaussienne.
i
i

i
i
i

i
4 0.37409 -0.057993 10 0.49998 -0.000030
5 0.46425 -0.024042 11 0.5 -7.629210
6
6 0.49397 -0.007401 12 0.5 -1.907310
6
7 0.49896 -0.001943 13 0.5 -4.768410
7
8 0.49975 -0.000487 14 0.5 -1.192110
7
9 0.49994 -0.000122 15 0.5 -2.980210
8
Plutt que de considrer la probabilit conditionnelle que le nud gnre un 1, il est
plus avantageux de considrer la probabilit quil gnre un 0 (le 0 est alors obtenu en
inversant la sortie) puisque P(A
i
= 0 [
i
) = 1
i
(
i
). Or 1
i
(
i
) =
i

i
+(1
i
),
ce qui permet daboutir une quation ne faisant intervenir que des oprandes positifs.
80
Pour des raisons purement technologiques concernant la multiplication et tel que discut
la section 4.4.1, limplmentation arithmtique des nuds nest pas ralise matriel-
lement. Cependant, elle est considre pour une valuation logicielle pour valider les
paramtres de la table 4.2.
4.4.3 Implmentation stochastique des noeuds linaires
Limplmentation stochastique des nuds linaires sera pour nous un sujet dinvesti-
gation ayant pour nalit loptimisation de la consommation des ressources logiques.
Rappelons que larithmtique stochastique constitue un paradigme o les nombres sont
reprsents par des pulses alatoires dont la probabilit de valoir 1 exprime une valeur
relle situe entre 0.0 et 1.0. En considrant deux signaux stochastiques indpendants
de probabilit p
1
et p
2
, oprer un ET logique sur les deux signaux permet dobtenir un
troisime signal stochastique de probabilit p
c
= p1 p2. Ainsi, une multiplication est
ralise stochastiquement au moyen dune simple porte ET. Laddition dans le domaine
de larithmtique stochastique est cependant moins simple exprimer puisque le rsultat
peut dpasser lintervalle des valeurs permises si il est suprieur 1.0. Il est nanmoins
possible de disposer dune addition pondre en recourant un multiplexeur dont les
signaux de commande sont alatoires [8, 18]. Prenons pour exemple le cas dun mul-
tiplexeur 2 1 recevant deux signaux stochastiques indpendants de probabilit p
1
et
p
2
et dont le signal de commande a une probabilit de 0.5 de valoir 1. Alors le signal
de sortie du multiplexeur sera un signal stochastique dont la probabilit de valoir 1 est
p
a
= 0.5p
1
+0.5p
2
. En xant la probabilit sur le signal de commande w, nous aurons
p
a
= (1 w)p
1
+ wp
2
. Aussi, si nous voulons effectuer une addition sur les nombres
x
1
et x
2
, il suft deffectuer une addition pondre sur deux signaux stochastiques dont
la probabilit est respectivement x
1
/(1 w) et x
2
/w en utilisant un multiplexeur 2
1 command par un signal stochastique de probabilit w, en autant que ces valeurs ne
dpassent pas la valeur limite 1.0.
81
Si nous nous rfrons aux paramtres
i
de la table 4.2, on saperoit que :
0.5 1
i
< 0.75 (4.2)
Ainsi, lopration arithmtique effectuer pour obtenir le complment de la fonction
nodale 1
i
(
i
) =
i

i
+ (1
i
) est ralisable dans le cadre de larithmtique
stochastique en considrant un multiplexeur 2 1, deux signaux stochastiques de proba-
bilit p
1
et p
2
et un signal de commande stochastique de probabilit w tels que :

p
1
=
i
(

i
w
)
p
2
=
1
i
1w
w 0.25
(4.3)
Pour des considrations pratiques, on xe w 0.25 puisquun signal gnr avec une
telle probabilit sobtient facilement en ralisant un ET logique sur deux bits alatoires
de probabilit 0.5.
Pour chaque nud i, la valeur p
2
est constante alors que celle de p
1
varie dans le temps
avec la variation de la valeur
i
. Aussi, une question demeure en suspens : Comment
gnrer le signal p
1
sachant que
i
est un entier (0
i
< 2
i1
) ? La rponse est fort
simple : p
1
peut tre vu comme un signal alatoire obtenu par la multiplication stochas-
tiques de deux signaux alatoires de probabilit p
1.1
=
i
2
1i
et p
1.2
= 2
i1

i
/w
respectivement. La table 4.3 conrme la faisabilit de la chose pour les nuds A
6
A
15
(pour les nuds 4 et 5, la valeur p
1.2
est suprieure 1.0).
82
TAB. 4.3 Paramtres des nuds stochastiques de la gaussienne.
i p
2
= (1
i
)/(1 w) p
1.2
= 2
i1

i
/w i p
2
p
1.2
4 0.76099 1.8558 10 0.66668 0.062500
5 0.69095 1.5387 11 0.66667 0.031250
6 0.67244 0.9473 12 0.66666 0.015625
7 0.66804 0.4975 13 0.66666 0.007812
8 0.66700 0.2497 14 0.66666 0.003906
9 0.66674 0.1249 15 0.66666 0.001953
La gure 4.9 rsume sous forme schmatise la construction dune telle cellule nodale :
FIG. 4.9 Architecture dun nud stochastique pour le gnrateur de la normale avec en
lgende le symbole employ pour la reprsentation dun gnrateur de Bernoulli.
4.4.4 Implmentation alternative des noeuds linaires
Considrons une autre implmentation des nuds linaires du gnrateur de gaussienne.
Le complment de la fonction nodale exprim par lquation (4.1) est donn par :
1
i
(
i
) =
1
2
+
h
4
2
(x ), x = kh +x
0
, k = 2
i
(4.4)
83
En remplaant les paramtres de la gaussienne par ceux de la normale centre rduite,
on obtient les paramtres pour une gnration symtrique (x
0
= 0) :
1
i
(
i
) =
1
2
+
h
2
2

i
(4.5)
Dans le cas dune gnration symtrique de la normale centre rduite sur lintervalle
8, nous pourrons exprimer h comme une puissance de 2 : h = 2
3i
, sachant que
0
i
< 2
i1
, Ainsi, pour i 5, la fonction nodale sexprime en virgule xe par
la simple concatnation de 0.1
(2)
et des bits de
i
suivant un dcalage appropri. Plus
exactement, elle est donne par :
1
i
(
i
) = 2
1
+ 2
52i

i
, i 5 (4.6)
La gure 4.10 rsume schmatiquement cette deuxime possible implmentation de la
cellule nodale du gnrateur de la normale. Au chapitre 5, nous tudierons les perfor-
mances des deux implmentations bases respectivement sur 1) larchitecture dun nud
stochastique et 2) larchitecture dun nud concatnation de lentre.
FIG. 4.10 Architecture alternative dun nud pour le gnrateur de la normale.
84
4.5 Conclusion
Ce chapitre a couvert les architectures matrielles des gnrateurs ralisant lalgorithme
dichotomique couvert au chapitre 3 pour lexponentielle de paramtre = 1 et la nor-
male centre rduite. Partant dune architecture universelle btie sur une structure colla-
borative des nuds, nous avons illustr comment il tait possible de rduire le nombre
de gnrateurs uniformes ncessaires au gnrateur non-uniforme et avons par l-mme
exprim un modle matriel dexploration de la corrlation srielle au travers du modle
de gnrateur dexponentielle. Pour ce dernier, nous avons propos non pas une architec-
ture mais plusieurs dont le chapitre 5 explore ltude empirique. Nous avons galement
procd la dnition de trois modles de gnrateurs de gaussienne dont deux ne re-
quierent aucune fonction arithmtique matrielle explicite.
85
CHAPITRE 5
IMPLMENTATIONS ET RSULTATS EXPRIMENTAUX
5.1 Introduction
Maintenant que notre modle mathmatique est pos et que nous avons dni un nombre
darchitectures matrielles tudier, nous allons procder la prsentation des rsultats
exprimentaux obtenus lors de la mise en pratique du bagage thorique couvert. Dans un
premier temps, nous allons procder au survol des environnements de dveloppements
que nous avons adopts, tant logiciels que matriels. Tel que lexposait la section 3.4.4,
nos modles darchitecture sont dans un premier temps valids dans lenvironnement lo-
giciel de prototypage rapide Matlab. Nous procdons ensuite ltude du comportement
des architectures dans leur contexte matriel avant de conclure par la discussion des r-
sultats obtenus la lumire dune application de type Monte Carlo que nous aurons soin
de prsenter.
5.2 Simulation algorithmique
Il est une bonne pratique de concepteur FPGA que de valider toute architecture mat-
rielle dans un environnement de simulation logiciel. On prfrera dans le cadre du tra-
vail de prototypage des langages de programmation scripts, prcompils, disposant de
librairies la fois riches et prouves. Ce sont ces critres qui favorisent et popularisent
lutilisation des scripts Matlab dont nous ferons usage ici.
86
Il est en effet possible de dcrire en quelques lignes de code Matlab des comportement
algorithmiques trs complexes. De plus, MATLAB peut aisment tre coupl au logiciel
Simulink et la bote outils (toolbox) System Generator de Xilinx, avec pour rsultat
une proximit encore plus tangible de la simulation davec le comportement rel du
circuit puisque la bote outils de Xilinx permet une simulation exacte au coup dhorloge
prs.
Le travail que nous avons entrepris consiste valider au moyen des tests statistiques
les algorithmes de gnration bass sur les RBB que nous avons discuts au chapitre 3.
Nous avons galement considr limpact quavait notre choix de nutiliser quun seul
gnrateur uniforme sur la corrlation srielle. Ce faisant, nous avons explor les diff-
rents scnarios de conguration prsents la section 4.2.2. Pour cette partie du travail,
larchitecture extrmement pure du gnrateur dexponentielle fut exploite, comme
nous le mentionnions la section 4.3.1.
5.2.1 Sommaire des sources Matlab
Lannexe I liste intgralement les sources Matlab utilises pour le prsent travail. Nous
les avons rpertories en quatre catgories principales que nous numrons ici :
Architecture universelle : Nous avons dans un premier temps dcrit en Matlab un RBB
16 nuds gnrique permettant de simuler toute les distributions de probabilit
reprsente sur 16 bits. La section I.1 donne lannexe I liste lensemble des
chiers dcrivant ce gnrateur. Il sagit davantage dun prototype gnrique que
dune architecture autonome. Ce patron sert lcriture des codes simulant les
gnrateurs dexponentielle et de normale.
Test du
2
: Le test du
2
est une mesure permettant de qualier la similarit dune
courbe mathmatique dune loi de probabilit et un histogramme empirique. La
87
thorie entourant le test du
2
fut discute la section 2.4. Le protocole que nous
avons suivi pour la mesure de la p-value est dcrit la section 3.4.4 et lensemble
des sources utilises pour y parvenir sont lists en annexe la section I.2.
Le gnrateur de lexponentielle : Les sources du gnrateur dexponentielle, listes
en annexes la section I.3, sont une modication des sources de la section I.1
avec un changement apport la fonction mtx() qui rete lemploi dune ROM
compacte de 32 32. On y retrouve galement une paramtrisation de ltage de
sortie permettant ltude de leffet de lemploi dun seul gnrateur uniforme.
Le gnrateur de la normale : Les sources du gnrateur de la normale, listes en an-
nexes la section I.4 sont une modication des sources de la section I.1 avec un
changement apport la fonction mtx() qui rete ltude de limplmentation
arithmtique des nuds, discute la section 4.4.2.
5.2.2 Corrlation srielle
Nous considrons trois scnarios pour ltage de sortie de gnrateur de lexponentielle :
Scnario A : Les longueurs des registres dcalage sont diffrentes et diffrent de 1.
Scnario B : Les longueurs des registres dcalage sont diffrentes et diffrent de 2.
Scnario C : Les longueurs des registres dcalage sont diffrentes et diffrent dune
quantit qui crot de 1 (suite algbrique : 1, 2, 3, 4, etc).
Du point de vue du strict respect de la loi de probabilit, les trois scnarios semblent
au-dessus de tout soupon comme le suggre trompeusement la gure 5.1. Cette gure
illustre comme nous alors le voir la coexistence dune part du strict respect de la loi de
probabilit et de la corrlation srielle. Nous avions dj observ la chose au chapitre 1
lorsque nous discutions du RANDU et des LFSR. De la mme faon, la sortie dun
88
FIG. 5.1 Exponentielle obtenue par RBB suivant les scnarios A, B et C.
compteur binaire tournant en boucle est uniformment rpartie et respecte donc la loi de
probabilit uniforme, mais la squence de ces nombres peut difcilement tre qualie
dalatoire. Cest l un paradoxe inhrent au domaine des nombres pseudo-alatoires
que nous nexhumerons pas davantage.
Considrons la gure 5.2 o sont tracs les nuages de points correspondant aux s-
quences (i, i + 1), (i, i + 2) et (i, i + 3) du Scnario A quivalent du scnario #1
dcrit la section 4.2.2. On y constate un patron dans le cas des squences (i, i + 1) et
(i, i + 2). Ce scnario de conguration de ltage de sortie ne peut clairement pas tre
adopt, tout comme ne peut ltre le chemin de donne non registr de la gure 4.4.a.
FIG. 5.2 Corrlation srielle : Scnario A.
89
Nous appliquons le test de corrlation srielle au Scnario B quivalent au scnario #3
de la section 4.2.2 dont les rsultats sont donns la gure 5.3. La squence (i, i +1)
est correcte, de mme que la squence (i, i + 3), tandis que la squence (i, i + 2) est
fautive comme nous le laissait souponner les rsultats de la table 4.1.
FIG. 5.3 Corrlation srielle : Scnario B.
Selon les rsultats de la table 4.1, la corrlation srielle est induite par le partage des
nombres alatoires entre les bits des chantillons successifs. Pour attnuer cet effet, nous
recourant une diffrenciation en srie algbrique des registres de sortie, de sorte que le
chemin du bit k ait une longueur de k(k 1)/2. La gure 5.4 illustre le succs de cette
telle approche.
FIG. 5.4 Corrlation srielle : Scnario C.
90
An de qualier le gnrateur, nous avons excut une quarantaine de tours de gn-
ration de N = 150 000 chantillons et valu la p-value en segmentant labscisse de
manire quidistribue tel que prconis par DAgostino et Stephens [14]. La gure 5.5
prsente les p-value obtenues tries par ordre de grandeur et montre clairement que le
gnrateur RBB passe correctement le test. De plus, on voit bien que la p-value couvre
le spectre des valeurs allant de 0.0 1.0 (1% aux extrmits) comme le soulignait trs
justement Lcuyer [30].
FIG. 5.5 Rsultats du test du
2
pour le gnrateur dexponentielle.
5.2.3 Implmentation arithmtique des nuds
Nous le mentionnions la section 4.4.2, la fonction nodale du gnrateur de la normale
de type RBB est linaire sauf pour les nuds de premier ordre. La table 4.2 nous donnait
les paramtres
i
et
i
obtenus par rgression linaire pour une couverture symtrique de
8. Nous avons employ les scripts de la section I.4 pour valuer la qualit statistique
91
des gnrateurs de gaussienne de type RBB de 16 nuds et couvrant x symtriquement
sur 4.
La gure 5.6 prsente les rsultats du test du
2
effectu pour lensemble de ces impl-
mentations. Lindice donn en abscisse renvoie celui du premier nud linaris. Le
test du chi
2
a t effectu en utilisant N = 150 000 chantillons par tour et en excu-
tant une quarantaine de tours par implmentation. La courbe de la gure 5.6 parcoure la
moyenne des p-value obtenues sur les tours tandis que la zone ombrage trace le spectre
des valeurs obtenues (retranch du tiers aux extrmits).
FIG. 5.6 Rsultats du test du
2
pour limplmentation arithmtique de la normale.
On voit clairement que limplmentation arithmtique passe le test du
2
sauf dans le cas
de lindice 3. Mentionnons pour les besoins de la prcision que ces indices sont dcals
dune unit par rapport ceux de la table 4.2. Ainsi lindice 3 de la gure 5.6 est donn
comme 4 la table 4.2.
92
5.3 Implmentation matrielle
Les implmentations matrielles prsentes ont t testes sur le FPGA Virtex II Pro
de Xilinx. Les temps de frquences maximales sont ceux donns par le logiciel ISE
10.1 de Xilinx aprs placement et routage. Lorsque la source VHDL est disponible, elle
est donne en annexe et le listing correctement rfre dans le texte. Les gnrateurs
exploitent le gnrteur uniforme Tausworthe (annexe II.1) combin dont la priode est
de 2
88
et qui occupe 141 slices.
5.3.1 Gnrateur de lexponentielle
Nous avons implment le gnrateur dexponentielle de deux manires diffrentes. Les
descriptions matrielles sont donnes en VHDL la section II.2 :
Implmentation ROM compact : O nous avons utilis une diffrenciation en srie
algbrique des registres de sortie an de reter le rsultat de la gure 5.4. Le code
de description matrielle crit en VHDL de lentit est donn au listing II.5.
Implmentation multiple Bernoulli : O nous avons mis en parallle 32 gnrateurs
de Bernoulli ayant une implmentation de van Daalen. Le code de description
matrielle crit en VHDL de lentit est donn au listing II.11.
La ROM du premier gnrateur est infre par le synthtiseur de ISE et convertie en
Block ROM, laissant une occupation de 336 slices pour lensemble du design (ce qui
inclut le gnrateur Tausworthe) et une frquence maximale annonce de 225 MHz. Le
second gnrateur a une occupation de 906 slices pour une frquence de fonctionnement
maximale de 271 MHz. La diffrence de taille entre les deux gnrateurs peut sexpliquer
par le fait que dans le second cas, nous avons affaire une implmentation prcise au bit
prs, de type ne grained [12], beaucoup plus gourmande en ressources recongurables.
93
Nanmoins, nous avons galement synthtis un gnrateur dexponentielle de ce type
avec une rsolution de 16 bits. La frquence de fonctionnement maximale est demeure
identique tandis que la consommation de ressources recongurables a baiss 281.
En ce qui a trait aux performances statistiques. Nous avons recueilli 20 10
6
dchan-
tillons et effectu le test du
2
sur cette population en segmentant laxe des abscisses
en 1 665 rgions quidistribues. Le gnrateur (implmentation ROM compacte, et
32 bits de rsolution) a pass le test avec une p-value de 0.6548. Nous avons galement
extrait 4 10
6
dchantillons et effectu le test du
2
sur cette nouvelle population en
segmentant laxe des abscisses en 100 rgions quidistantes. Le gnrateur a pass le
test avec une p-value de 0.9323.
5.3.2 Rsultats obtenus pour la distribution normale
Nous avons implment le gnrateur de la normale de deux manires diffrentes. Les
descriptions matrielles sont ralises en schma Simulink au moyen de la librairie Sys-
tem Generator de Xilinx.
Implmentation stochastique : O nous avons utilis des oprateurs stochastiques pour
la multiplication et laddition comme nous le discutions la section 5.4.
Implmentation dcalage des parents : O nous avons utilis lapproximation obte-
nue par le dcalage de ltat des parents.
Les multiples gnrateurs de Bernoulli utiliss dans limplmentation stochastique sont
raliss laide dune ROM, comme nous le faisions pour le gnrateur dexponentielle.
La linarisation est ralise compter du nud 7 pour minimiser les erreurs dapproxi-
mation. Le gnrateur occupe la mme surface pour une rsolution de 16 ou de 32 bits,
les 16 bits supplmentaires ncessaires pour passer du premier au second sont extraits
94
du gnrateur uniforme. Le synthtiseur de ISE ralise limplmentation en utilisant 540
slices et un bloc RAM pour lensemble du design (incluant les deux gnrateurs Taus-
worthe). La frquence maximale annonce de 225 MHz.
Le second gnrateur a une occupation de 347 slices pour une frquence de fonctionne-
ment maximale de 225 MHz. Ici encore, le passage dune implmentation 16 bits 32
bits ne ncessite aucune occupation de surface supplmentaire.
En ce qui a trait aux performances statistiques. Nous avons recueilli 20 10
6
dchan-
tillons et effectu le test du
2
sur cette population en segmentant laxe des abscisses en
1 665 rgions quidistribues. Les deux gnrateurs chouent le test, visiblement cause
de linexactitude de lapproximation stochastique des fonctions nodales. Cependant, il
est intressant de relever que les deux gnrateurs ont pass le test du chi
2
pour une
population de 4 10
6
dchantillons et en segmentant laxe des abscisses en 100 rgions
quidistantes (comme le faisaient les auteurs Lee et al. [36]) avec un p-value de 0,3517
et 0,8029 respectivement. Aussi peut-on considrer que ces gnrateurs sont qualis
mme si ils ne russissent pas aussi bien que nos architectures de lexponentielle.
Nous reprenons ici la table 2.2 en incluant nos propres rsultats (limplmentation sto-
chastique des nuds est rfre comme (1), la seconde par (2)) :
TAB. 5.1 Rcapitulatif des principaux gnrateurs de gaussienne matriels.
Rfrence [69] [35] [10] [36] [3] (1) (2)
Rsolution (bits) 32 24 16 16 32 16/32 16/32
Frquence max (MHz) 170 155 232 233 269 225 225
Nb de slices 891 770 548 1528 576 540 347
Nb de bloc RAM 4 6 2 3 2 1 0
Nb de multiplieur 18 18 2 4 2 12 3 0 0
95
5.4 Acclration matrielle
An dillustrer lintrt dacclrer matriellement les mthodes Monte Carlo et de
mesurer la qualit des gnrateurs autrement que par les tests statistiques, nous nous
sommes intress un algorithme Monte Carlo simple dont la source est librement dis-
tribue sur lInternet par le centre mdical de lOregon (c.f. annexe III).
Lalgorithme simule la propagation de photons dans un milieu isotropique. On dispose
dun ensemble de photons (ligne 31 du listing III.1) et on associe chaque photon un
poids unitaire (ligne 35). Les photons se dplacent dans lespace partir de lorigine
(ligne 33). Chaque dplacement est dict par une loi exponentielle (ligne 40) suivant une
orientation alatoire en choisissant un point au hasard sur la sphre unitaire (lignes 61-
75, voir Marsaglia pour une description du problme [38]). chaque fois que le photon
se dplace, sa masse est rduite et convertie en chaleur quabsorbe le milieu isotropique
(lignes 53 et 56). Le programme observe le rchauffement radial du milieu (ligne 53).
Lalgorithme prend 1 050 ms pour sexcuter sur un Core 2 Duo cadenc 2.0 GHz.
Lacclration matrielle est atteinte en recherchant une rentabilisation de chaque coup
de lhorloge. Nous visons la carte Amirix AP1100 munie dun Virtex II Pro VP 100 de
Xilinx et cadence 100 MHz. La premire amlioration ralise consistait amliorer
la gnration uniforme dun point sur la sphre unitaire (lignes 61-75). Lalgorithme uti-
lis l est une mthode de rejet gnrant /4 78.5% points valides. An daugmenter
ce ratio, nous utilisons trois gnrateurs en parallles ce qui donne un taux de rejet de
(1 /4)
3
0.99%.
Le calcul du poids et celui de la position du photon se font indpendamment et des
fos sont utilises pour synchroniser les processus. La table heat[] est implmente
laide dune RAM double accs pour permettre lincrmentation itrative (ligne 53).
Cependant, pour viter des conits dadressage, on utilise tour de rle trois de ces
96
RAM, et les rsultats des trois RAM sont runis la n de lalgorithme. La gure 5.7
compare le rsultat obtenu par le FPGA celui donn par lalgorithme du listing I.14.
Comme on peut sen rendre compte, il existe de lgres variations dues notamment au
calcul des racines carres que nous avons implmentes au moyen de cellules CORDIC.
FIG. 5.7 Rsultats de lalgorithme Monte Carlo compar celui obtenu grce au FPGA.
Lalgorithme prend environ 82 ms pour sexcuter, ce qui correspond un facteur dac-
clration de lordre de 12.9. Le systme occupe 5 427 slices (sur les 44 096 disponibles),
10 blocs RAM et 56 multiplieurs (sur les 444 disponibles). Il est donc envisageable de
mettre de multiples instances du systme sur la mme puce et daugmenter dautant le
facteur dacclration.
5.5 Conclusion
Les rsultats prsents dans ce chapitre sont plutt concluants. Dune part, la simu-
lation algorithmique montre que lalgorithme dichotomique que nous avons prsent
fonctionne correctement pour lexponentielle et la gaussienne. Les implmentations ma-
97
trielles qui en sont issues sont plus compactes que toutes celles rapportes par la littra-
ture, et cela sans compromettre les qualits statistiques ou frquentielles du gnrateur.
Plus remarquable encore, le modle mathmatique de lalgorithme dichotomique que
nous avons prsent a permis des implmentations ne recourant aucune fonction arith-
mtique. Ainsi, les gnrateurs raliss ne recourent aucun bloc spcialis (le bloc
RAM compact mis part).
Les rsultats frquentiels prsents (limite 225 Mhz) sont lgrement plus bas que
ceux des architectures les plus avances de la littrature. Cette diffrence est mineure et
sexplique par deux facteurs : 1) les auteurs cits recourent Synplify pour obtenir les
estimations annonces ; 2) lencodeur de priorit limite la frquence de fonctionnement
de nos gnrateurs et une optimisation est observer ce niveau.
Des deux gnrateurs tudis, le gnrateur dexponentielle est celui qui offre le meilleur
comportement sur puce, puisque sa fonction nodale ne requiert aucune opration arith-
mtique. Nanmoins, le gnrateur de gaussienne propos est tout fait valable, eu gard
aux qualits des gnrateurs publis dans la littrature, puisque notre architecture passe
le teste du
2
lorsquon leffectue de la mme faon que le rent les auteurs cits.
Finalement, nous avons illustr lintrt de disposer dun gnrateur matriel puisque
nous avons russi acclrer dun facteur de 13 lalgorithme Monte Carlo du centre
mdical de lOregon.
98
CONCLUSION GNRALE
Le travail prsent ici a runi nombre dinnovations dans le domaine de la gnration
de distributions non-uniformes sur puce. On citera dabord lalgorithme dichotomique
et les modlisations dans le domaine des rseaux baysiens et des arbres de dcision bi-
naires. Ces modlisations permirent dexprimer de manire compacte les fonctions no-
dales dcrivant les probabilits conditionnelles aux nuds et doffrir un outil analytique
important.
Le modle et lalgorithme furent appliqus aux distributions normale et exponentielle
avec succs. Les simulations empiriques ont par ailleurs montr la grande qualit du
comportement des gnrateurs. Cette qualit peut tre crdite au compte du change-
ment de paradigme entrepris par rapport ce qui se fait gnralement dans la littrature.
De plus, notre mthode permit une conomie importante sur le plan du nombre de gn-
rateurs uniformes ncessaires.
Les implmentations matrielles des gnrateurs de lexponentielle et de la normale que
nous avons proposes mritent une analyse approfondie. Dune part, ils offrent des im-
plmentations compactes pour des ralisations 16 bits et 32 bits. De plus, les impl-
mentations ne recourent aucun oprateur arithmtique grce lanalyse adquate des
fonctions nodales qui leur sont associes.
Ainsi, le gnrateur dexponentielle offre un comportement admirable tout point de
vue : consommation des ressources, frquence dopration, rsolution de la variable
alatoire, qualit statistique et corrlation. Mentionnons ce sujet limportance du g-
nrateur de Bernoulli que nous avons propos et qui a permis une importante conomie
de surface sur puce qui devint nos yeux criarde lorsque la cellule de van Daalen fut
utilise pour le gnrateur dexponentielle.
99
Le gnrateur de la normale quant lui connat une faiblesse du point de vue de la qualit
statistique mme si toutefois il nest pas moins bon quaucun des gnrateurs prsents
dans la littrature.
Finalement, une application de type Monte Carlo fut acclre avec succs au moyen
dun FPGA en utilisant notre gnrateur dexponentielle, cela avec pour rsultat un fac-
teur dacclration de lordre de 13 par rapport une excution logicielle sur un proces-
seur Intel usage gnral cadenc 2.0 GHz.
100
RFRENCES
[1] ALIMOHAMMAD, A., COCKBURN, B., AND SCHLEGEL, C. An iterative
hardware gaussian noise generator. In IEEE Pacic Rim Conference on Communi-
cations, Computers and signal Processing (August 2005), pp. 649652.
[2] ALIMOHAMMAD, A., COCKBURN, B., AND SCHLEGEL, C. Area-
efcient parallel white gaussian noise generator. In IEEE Canadian Conference
on Electrical and Computer Engineering (May 2005), pp. 18721875.
[3] ALIMOHAMMAD, A., FARD, S., COCKBURN, B., AND SCHLEGEL, C.
A compact and accurate gaussian variate generator. IEEE Transactions on Very
Large Scale Integration (VLSI) Systems 16, 5 (May 2008), 517527.
[4] BI, Y., PETERSON, G. D., WARREN, G. L., AND HARRISON, R. J. Hard-
ware acceleration of parallel lagged-bonacci pseudo random number generation.
In Proceedings of the International Conference on Engineering of Recongurable
Systems and Algorithms (2006).
[5] BOUTILLON, E., DANGER, J., AND GAZEL, A. Design of high speed awgn
communication channel emulator. Analog Integrated Circuits and Signal Proces-
sing 34, 2 (2003), 133142.
[6] BOWER, J. A., THOMAS, D. B., LUK, W., AND MENCER, O. A recon-
gurable simulation framework for nancial computation. In IEEE International
Conference on Recongurable Computing and FPGAs (September 2006), pp. 19.
[7] BOX, G., AND MULLER, M. A note on the generation of random normal de-
viates. The Annals of Mathematical Statistics 29 (1958), 610611.
[8] BROWN, B., AND CARD, H. Stochastic neural computation I : Computational
elements. IEEE Transactions on Computers 50, 9 (Sep 2001), 891905.
101
[9] CHEN, J., MOON, J., AND BAZARGAN, K. Recongurable readback-signal
generator based on a eld-programmable gate array. IEEE Transactions on Ma-
gnetics 40, 3 (March 2004), 17441750.
[10] CHEUNG, R. C. C., LEE, D.-U., LUK, W., AND VILLASENOR, J. Hard-
ware generation of arbitrary random number distributions from uniform distribu-
tions via the inversion method. IEEE Transactions on Very Large Scale Integration
Systems 15, 8 (August 2007), 952962.
[11] CHUL, P., AND FRANTZ, B. A reprogrammable fpga-based atm trafc gene-
rator. In Proceedings of the Sixth Great Lakes Symposium on VLSI (March 1996),
pp. 3538.
[12] COWEN, C., AND MONAGHAN, S. A recongurable Monte-Carlo clustering
processor (MCCP). In IEEE Workshop on FPGAs for CustomComputing Machines
(1994), pp. 5965.
[13] CUI, W., LI, C., AND SUN, X. FPGA implementation of universal random num-
ber generator. In Proceedings of the 7th International Conference on Signal Pro-
cessing (2004), vol. 1, pp. 495498.
[14] DAGOSTINO, R. B., AND STEPHENS, M. A. Goodness-of-Fit Techniques.
Marcel Dekker, 1986.
[15] DEVROYE, L. Non-Uniform Random Variate Generation. Springer-Verlag, New
York, 1986.
[16] FAN, Y., AND ZILIC, Z. A novel scheme of implementing high speed awgn com-
munication channel emulators in fpgas. In Proceedings of the IEEE International
Symposium on Circuits and Systems (May 2004), vol. 2.
[17] FAN, Y., ZILIC, Z., AND CHIANG, M. A versatile high speed bit error rate
testing scheme. In Proceedings of the IEEE International Symposium on Quality
Electronic Design (2004), pp. 395400.
102
[18] GAINES, B. Stochastic computing systems. In Advances in Information Systems
Science (1969), vol. 2, pp. 37172.
[19] GALASSI, M., DAVIES, J., THEILER, J., GOUGH, B., JUNGMAN, G.,
BOOTH, M., AND ROSSI, F. GNU Scientic Library Reference Manual. Pub-
Network-Theory, 2006.
[20] GOLOMB, S. Shift Register Sequences, Revised Edition. Ae-gean Park Press,
1982.
[21] GOTHANDARAMAN, A., WARREN, G., PETERSON, G., AND HARRI-
SON, R. Hardware acceleration of a quantum Monte Carlo application. In Pro-
ceedings of the Third Annual Recongurable Systems Summer Institute (July 2007).
[22] HENRION, M. Propagating uncertainty in bayesian networks by probabilistic
logic sampling. In Uncertainty in Articial Intelligence, second edition (New York,
1988), J. Lemmer and L. Kanal, Eds., Elsevier Science, pp. 149163.
[23] JEAVONS, P., AND SHAWE-TAYLOR, D. C. J. Generating binary sequences
for stochastic computing. IEEE Transactions on Information Theory 40, 3 (1994),
716720.
[24] KNUTH, D. E. Art of Computer Programming, Volume 2 : Seminumerical Algo-
rithms (3rd Edition). Addison-Wesley Professional, 1997.
[25] KNUTH, D. E., AND YAO, A. C. The complexity of non-uniform random num-
ber generation. In Algorithms and Complexity (New York, 1976), Academic Press,
pp. 357428.
[26] LECUYER, P. Uniform random number generation. Annals of Operations Re-
search 53 (1994), 77120.
[27] LECUYER, P. Maximally equidistributed combined tausworthe generators. Ma-
thematics and Computation 65, 213 (1996), 203213.
103
[28] LECUYER, P. Random number generation. In Elsevier Handbooks in Opera-
tions Research and Management Science : Simulation (Amsterdam, 2006), Elsevier
Science, pp. 5581.
[29] LECUYER, P., AND PANNETON, F. Fast random number generators based
on linear recurrences modulo 2 : Overview and comparison. In Proceedings of the
2005 Winter Simulation Conference (2005), pp. 110119.
[30] LECUYER, P., AND SIMARD, R. TestU01 : A C library for empirical testing
of random number generators. ACM Transactions on Mathematical Software 33, 4
(August 2007).
[31] LEE, D.-U., LUK, W., VILLASENOR, J., AND CHEUNG, P. Hierarchical
segmentation schemes for function evaluation. In Proceedings of the IEEE Inter-
national conference on Field-Programmable Technology (2003), pp. 9299.
[32] LEE, D.-U., LUK, W., VILLASENOR, J., AND CHEUNG, P. Y. K. Hardware
function evaluation using non-linear segments. In Proceedings of International
conference on Field Programmable Logic and Applications (2003), pp. 796807.
[33] LEE, D.-U., LUK, W., VILLASENOR, J. D., AND CHEUNG, P. A hardware
gaussian noise generator for channel code evaluation. In Proceedings of the 11th
Annual IEEE Symposium on Field-Programmable Custom Computing Machines
(2003), pp. 6978.
[34] LEE, D.-U., LUK, W., VILLASENOR, J. D., AND CHEUNG, P. A gaussian
noise generator for hardware-based simulations. IEEE Transactions on Computers
53, 12 (December 2004), 15231534.
[35] LEE, D.-U., LUK, W., VILLASENOR, J. D., ZHANG, G., AND LEONG, P.
A hardware gaussian noise generator using the wallace method. IEEE Transactions
on Very Large Scale Integration (VLSI) Systems 13, 8 (Aug. 2005), 911920.
104
[36] LEE, D.-U., VILLASENOR, J., LUK, W., AND LEONG, P. A hardware gaus-
sian noise generator using the box-muller method and its error analysis. IEEE
Transactions on Computers 55, 6 (June 2006), 659671.
[37] MARSAGLIA, G. Random numbers fall mainly in the planes. In Proceedings of
the national academy of science (1968), vol. 61, pp. 2528.
[38] MARSAGLIA, G. Choosing a point from the surface of a sphere. Annals of
Mathematical Statistics 43, 2 (1972), 645646.
[39] MARSAGLIA, G. The structure of linear concruential sequences. In Applications
of number theory to numerical analysis (London, 1972), S. K. Zaremba, Ed., Ed.
Academic Press, pp. 249285.
[40] MARSAGLIA, G. DIEHARD : a battery of tests of randomness. Tech. rep., State
University of Florida, 1996.
[41] MARSAGLIA, G., AND TSANG, W. W. The ziggurat method for generating
random variables. Journal of Statistical Software 5, 8 (2000).
[42] MARSAGLIA, G., AND TSAY, L. Matrices and the structure of random number
sequences. Linear Algebra and its Applications 67 (1985), 147156.
[43] MARTIN, P. An analysis of random number generators for a hardware imple-
mentation of genetic programming using FPGAs and Handel-C. In Proceedings of
the Genetic and Evolutionary Computation Conference (San Francisco, CA, USA,
2002), Morgan Kaufmann Publishers Inc., pp. 837844.
[44] MATSUMOTO, M., AND NISHIMURA, T. Mersenne twister : A 623-
dimensionally equidistributed uniform pseudorandom number generator. ACM
Transactions on Modeling and Computer Simulation 8, 1 (January 1998), 330.
[45] MCCOLLUM, J., LANCASTER, J., BOULDIN, D., AND PETERSON, G.
Hardware acceleration of pseudo-random number generation for simulation appli-
cations. In Proceedings of the 35th Southeastern Symposium on System Theory
(March 2003), pp. 299303.
105
[46] MOLER, C. Numerical Computing with MATLAB. SIAM, 2004.
[47] MONAGHAN, S. A gate-level recongurable Monte Carlo processor. J. VLSI
Signal Process. Syst. 6, 2 (1993), 139153.
[48] NEGOI, A., AND ZIMMERMANN, J. Monte Carlo hardware simulator for
electron dynamics in semiconductors. In Proceedings of the International Annual
Semiconductor Conference (1996), pp. 557560.
[49] OSANA, Y., FUKUSHIMA, T., YOSHIMI, M., IWAOKA, Y., FUNAHA-
SHI, A., HIROI, N., SHIBATA, Y., KITANO, H., AND AMANO, H. An
FPGA-based, multi-model simulation method for biochemical systems. In Procee-
dings of the IEEE Transactions on International Parallel and Distributed Proces-
sing Symposium (April 2005).
[50] PEARL, J. Probabilistic Reasoning in Intelligence Systems, , Second edition.
Morgan Kaufmann, 1988.
[51] RUSSEL, S. J., AND NORVING, P. Articial Intelligence : A Modern Approach,
Second edition. Prentice Hall, 2003.
[52] SADASIVAM, M. M., WAGHOLIKAR, J., AND HONG, S. A look-up based
low-complexity parallel noise generator for particle lter processing. International
Symposium on Signals, Circuits and Systems 2 (Juy 2003), 621624.
[53] SHAWE-TAYLOR, J., JEAVONS, P., AND DAALEN, M. Probabilistic bit
stream neural chip : Theory. Connection Science 3, 3 (1991), 317328.
[54] TAUSWORTHE, R. C. Random numbers generated by linear recurrence modulo
two. Mathematics and Computation 19, 90 (1965), 201209.
[55] THOMAS, D. B., BOWER, J. A., AND LUK, W. Hardware architectures for
Monte Carlo based nancial simulations. In IEEE International Conference on
Field Programmable Technology (December 2006), pp. 377380.
106
[56] THOMAS, D. B., AND LUK, W. Efcient hardware generation of random va-
riates with arbitrary distributions. In Proceedings of the 14th Annual IEEE Sympo-
sium on Field-Programmable Custom Computing Machines (2006), pp. 5766.
[57] THOMAS, D. B., AND LUK, W. High quality uniform random number gene-
ration using LUT optimised state-transition matrices. The Journal of VLSI Signal
Processing 47, 1 (April, 2007), 7792.
[58] THOMAS, D. B., AND LUK, W. Non-uniform random number generation
through piecewise linear approximations. In International Conference on Field
Programmable Logic and Applications (August 2006), pp. 16.
[59] TIMARCHI, S., MIREMADI, S., AND EJLALI, A. Evaluation of some ex-
ponential random number generators implemented by FPGA. In Proceedings of
the International Multi-Conference on Parrallel and Distributed Computing and
networks (Innsbruck, Austria, February 2005), pp. 578583.
[60] VAN DAALEN, M., JEAVONS, P., AND SHAWE-TAYLOR, J. Probabilistic
bit stream neural chip : Implementation. Oxford Workshop on VLSI for Articial
Intelligence and Neural Networks (September 1990), 285294.
[61] VAN DAALEN, M., JEAVONS, P., SHAWE-TAYLOR, J., AND COHEN,
D. Device for generating binary sequences for stochastic computing. Electronics
Letters 29, 1 (1993), 8081.
[62] VON NEUMANN, J. Various techniques used in connection with random digits.
Applied Mathematics Serires 12 (1951), 3638.
[63] WALLACE, C. Fast pseudorandom generators for normal and exponential va-
riates. ACM Transactions on Mathematical Software 22, 1 (1999), 119127.
[64] XILINX. XAPP052 : Efcient Shift Registers, LFSR Counters, and Long Pseudo-
Random Sequence Generators, 1996. Xilinx Application Note.
[65] XILINX. XAPP210 : LFSRs in Virtex Devices, 1999. Xilinx Application Note.
107
[66] XILINX. DS210 : Additive White Gaussian Noise (AWGN) Core v1.0, 2002. Xilinx
Data Sheet.
[67] YOSHIMI, M., OSANA, Y., FUKUSHIMA, T., AND AMANO, H. Stochastic
simulation for biochemical reactions on FPGA. In International Conference on
Field Programmable Logic and Applications (2004), pp. 105114.
[68] ZHANG, G., LEONG, P., HO, C., TSOI, K., CHEUNG, C., LEE, D.-U.,
CHEUNG, R., AND LUK, W. Recongurable acceleration for Monte Carlo based
nancial simulation. In IEEE International Conference on Field-Programmable
Technology (December 2005), pp. 215222.
[69] ZHANG, G., LEONG, P., LEE, D.-U., VILLASENOR, J., CHEUNG, R.,
AND LUK, W. Ziggurat-based hardware gaussian random number generator. In
International Conference on Field Programmable Logic and Applications (Auguste
2005), pp. 275280.
108
ANNEXE I
SOURCES MATLAB
Lannexe I comporte lensemble des scripts MATLAB utiliss dans ce travail et discuts
au chapitre 5. Un descriptif rapide prcde script et le code a t comment au mieux.
I.1 Gnrateur universel
Suivent ici les listing des scripts et fonctions MATLAB dun gnrateur universel de
type RBB 16 nuds. Ce code est ensuite remani pour les besoins des distributions
exponentielle et normale.
Le prototype dun appel un gnrateur de type RBB 16 nuds :
Listing I.1 Appel gnrique dun gnrateur de type RBB 16 noeuds
1 %
% FUNCTION : VALUES = UNIV_GEN( NB_ECHANTILLONS)
% Fonct i on g n r i que qui s i mul e un RBB 16 noeuds
% e t gnr e NB_ECHANTILLONS c h a n t i l l o n s qui en
% s ont i s s u s
6 %
% NOM DE FICHIER: UNIV_GEN.M
%
% INPUT:
% NB_ECHANTILLONS: Nombre d c h a n t i l l o n s g n r e r
11 %
% OUTPUT:
% VALUES : Ve c t e ur compor t ant l e s NB_ECHANTILLONS
% c h a n t i l l o n s a l a t o i r e s g n r s .
%
16 % NOTE:
% La f o n c t i o n params d o i t t r e c o n f i g u r c or r e c t e me nt
% pour chaque n o u v e l l e d i s t r i b u t i o n .
%
21 f unc t i on va l ue s = uni v_gen ( n b _ e c h a n t i l l o n s )
% Va r i a b l e s g l o b a l e s ;
gl obal m;
gl obal nombres ;
26
% l i r e l e s CPT e t c o n v e r t i r l a v al e ur de p r o b a b i l i t
% de [ 0 . 0 1 . 0 ] en un e n t i e r 32 b i t s
m = ui nt 32 (2^32mtx ( ) ) ;
31 %nombres de noeuds
ni veaux = 16;
% pi pe des v a l e u r s ( s o r t i e de chaque noeuds )
nombres = ui nt 16 ( zeros ( ni veaux +1 , 1 ) ) ;
109
36
% pi pe des ( i n d i c e s ) nomrbres a l a t o i r e s
i dx = zeros ( ni veaux , 1 ) ;
% r e mpl i r l e pi pe des ( i n d i c e s ) nombres a l a t o i r e s
41 f or i =1: l e ngt h ( i dx )
i dx ( i ) = i ndex ( ui nt 32 (2^32rand ( ) ) ) ;
end
% Nombre d i t r a t i o n s
46 % ( on a j o u t e l e nb de noeuds pour r e mpl i r l e pi pe )
nb_l oop = n b _ e c h a n t i l l o n s + ni veaux + 1;
% c r e e l a v a r i a b l e
va l ue s = 0;
51
% bouc l e s ur l e s e c h a n t i l l o n s
f or i = 1: nb_l oop
% Rcupr er l a v al e ur l a s o r t i e
56 % du pi pe s i i l e s t p l e i n
i f ( i > ni veaux +1)
u = nombres ( ni veaux ) ;
va l ue s ( ini veaux 1) = u ;
end
61
% chaque noeud gnr e un b i t
% en f o n c t i o n des nombres a l a t o i r e s g n r s
% e t on c onc at ne l e t o u t avec e l v a l e u r s
% e x i s t a n t e s
66 nombres = gennombre ( nombres , m, ni veaux , i dx ) ;
% de c al e r l e s c h i f f r e s ( s h i f t r e g i s t e r )
nombres ( 2 : ni veaux ) = nombres ( 1 : ni veaux 1);
nombres ( 1 ) = ui nt 16 ( 0 ) ;
71
% Decal er l e s ( i n d i c e s ) nombres a l a t o i r e s
% mai s a c ont r e c our ant ( s h i f t r e g i s t e r )
i dx ( 1 : ni veaux 1) = i dx ( 2 : ni veaux ) ;
i dx ( ni veaux ) = i ndex ( ui nt 32 (2^32rand ( ) ) ) ;
76
end ;
La fonction qui retourne la matrice des fonctions nodales du RBB :
Listing I.2 Fonction retournant la matrice des phi functions
%
2 % FUNCTION : M = MTX( )
% Fonct i on g n r i que qui c r e e t r e t o u r n e l ens embl e des
% f o n c t i o n s nodal e s ( phi f u n c t i o n ) d un RBB 16 noeuds
%
% NOM DE FICHIER: MTX.M
7 %
% OUTPUT:
% M : Mat r i ce des phi f u n c t i o n s ( CPT) d un RBB de 16
% noeuds .
%
12 % NOTE:
% La f o n c t i o n params d o i t t r e c o n f i g u r c or r e c t e me nt
% pour chaque n o u v e l l e d i s t r i b u t i o n .
%
17 f unc t i on m = mtx ( )
% Al l o c a t i o n de memoi re pour un RBB de 1 noeuds
m = zeros ( 2^( 16 1) , 16) ;
22 % Par cour s des 16 noeuds
f or i = 1: 16
% La f o n c t i o n params donne l a phi f u n c t i o n ( CPT)
% c or r e s pondant au noeud i e t d o i t t r e adapt
27 p = par ams ( i ) ;
% Chaque noeud di s pos e d une CPT de t a i l l e 2^ ( i 1)
j =l e ngt h ( p ) ;
m( 1: j , i ) = p ( 1: j , i ) ;
32
end
110
La fonction qui imite le comportement dun encodeur de priorit :
Listing I.3 Fonction encodeur de priorit
%
2 % FUNCTION : INDEX = INDEX( UI )
% Fonct i on ge ne r i que qui s i mul e l e comprot ement d un encodeur
% de p r i o r i t e
%
% NOM DE FICHIER: INDEX .M
7 %
% INPUT:
% UI : Nombre r e p r e s e n t e en UINT32
%
% OUTPUT:
12 % INDEX : Une v al e ur e n t r e 0 e t 32 c or r e s pondant a
% a l i n d i c e du b i t non nul de UI . 0 pour UI=0
%
f unc t i on i ndex = i ndex ( ui )
17
%i n i t i a l i s a t i o n
i ndex =32;
% bouc l e t a n t que l e b i t v aut 0
22 whi l e ( ~ b i t g e t ( ui , i ndex ) )
% decr ement e l i n d i c e
i ndex=i ndex 1;
%s o r t s i t ous l e b i t s s ont a 0
27 i f ( i ndex ==0)
break ;
end ;
end ;
La fonction qui soccupe de gnrer les bits de tous les noeuds tant donns les parents
et qui place les bits aux bons endroits :
Listing I.4 Fonction gnrant les bits de chaque noeud et decalages
%
% FUNCTION : NOMBRES = GENNOMBRE(NOMBRES, M, NIVEAUX, IDX)
% Fonct i on g n r i que qui gnr e l e s b i t s des 16 noeuds
% d un RBB 16 noeuds
5 %
% NOM DE FICHIER: GENNOMBRE.M
%
% INPUT:
% NOMBRES: Pi pe des nombres d c h a n t i l l o n s g n r e r
10 % M : Mat r i ce des phi f u n c t i o n s
% NIVEAUX: 16 en l occur ence
% IDX : Pi pe des nombres a l a t o i r e s ( i n d i c e s des )
%
% OUTPUT:
15 % NOMBRES : Pi pe modi f i .
%
% NOTE:
% La f o n c t i o n params d o i t t r e c o n f i g u r c or r e c t e me nt
% pour chaque n o u v e l l e d i s t r i b u t i o n .
20 %
f unc t i on nombres = gennombre ( nombres , m, ni veaux , i dx ) ;
f or i =1: ni veaux
25 % cas p a r t i c u l i e r 0
i f ( i dx == 0) % ( t r s r ar ement )
% de c al e r a gauche chaque nombre e t a j o u t e r un 0
nombres ( 1 : ni veaux 1) = b i t s h i f t ( nombres ( 1 : ni veaux 1) , 1 ) ;
30 % a u t r e s cas
e l s e
% r e t r o u v e r l a p r o b a b i l i t e pour chaque b i t
% ( t ous l e s nombres , s auf r e s u l t a t )
p = ui nt 32 (2^32 p a r a me t r e _ p a r b i t ( nombres , m, ni veaux ) ) ;
35
111
% de c al e r a gauche de 1 b i t chaque nombre ( s auf r e s u l t a t )
nombres ( 1 : ni veaux ) = b i t s h i f t ( nombres ( 1 : ni veaux ) , 1 ) ;
% changer l e b i t l e cas chant , s e l on p e t i dx
40 nombres ( 1 : ni veaux ) = b i t s e t ( nombres ( 1 : ni veaux ) , 1 , b i t g e n ( p , i dx ) ) ;
end
end
Et nalement la lecture des probabilites conditionnelles suivant les nuds parents :
Listing I.5 Fonction gnrant les probabiites de chaque noeud
1 %
% FUNCTION : NOMBRES = PARAMETRE_PARBIT( NIVEAUX)
% Fonct i on ge ne r i que qui gener e l e s b i t s des 16 noeuds
% d un RBB a 16 noeuds
%
6 % NOM DE FICHIER: PARAMETRE_PARBIT .M
%
% INPUT:
% NOMBRES: Pi pe des nombres d e c h a n t i l l o n s a ge ne r e r
% M : Mat r i ce des phi f u n c t i o n s
11 % NIVEAUX: 16 en l occur ence
%
% OUTPUT:
% NOMBRES : Les v a l e u r s de p r o b a b i l i t e r e c he r c he e s
%
16 %
f unc t i on p = p a r a me t r e _ p a r b i t (NOMBRES, M, NIVEAUX)
% Li r e l e s prob c o n d i t i o n n e l l e f o n c t i o n de l e t a t des p a r e n t s
21 p = m( nombres ( 1 : l e v e l ) +1 , 1: l e v e l ) ;
% Ne gar der que l e s v a l e u r s r e c he r c he s ( t wi k )
p = di ag ( p , 0 ) ;
I.2 Test du
2
La p-value est calcule de diffrentes manires (types de distribution, mthode de seg-
mentation, etc.), ce qui impose le recours une fonction paramtrisable :
Listing I.6 Appel paramtrisable au calcul de la p-value
%
% FUNCTION : PVAL = EVALCHISQ( V, BINS , SEG, DIST )
% Fonct i on qui e v al ue a pv al ue obt enue par l a met hode du c hi 2
% d un RBB a 16 noeuds
5 %
% NOM DE FICHIER: EVALQUISQ.M
%
% INPUT:
% V : Ve c t e ur d e c h a n t i l o n s a l e a t o i r e s
10 % BINS : Nombres de s egment s s ur l axe des X
% SEG : Met hode de s e gme nt at i on
% 0 : e q u i d i s t r i b u e
% Aut r e : e q u i d i s t a n t
% DIST : Type de d i s t r i b u t i o n
15 % 0 : normal e
% Aut r e : e x p o n e n t i e l e
% OUTPUT:
% PVAL : Pv al ue obt enue par l a met hode du Chi 2
%
20 %
112
f unc t i on pva l = e v a l c h i s q ( v , bi ns , seg , d i s t )
[ x , f c ] = segm( l e ngt h ( v ) , bi ns , seg , d i s t ) ;
25
% c a l c u l e r l hi st ogramme
f = h i s t c ( v , x ) ;
% r e ar r ange r ( t wi k a n t i h i s t c )
30 f = f ;
f = f ( 1 : bi ns ) ;
% c a l c u l e r l a v al e ur de c hi 2
c hi 2 = sum( ( f f c ) . ^ 2 . / f c ) ;
35
% c a l c u l e r l a pv al ue en r e c our ant
% a l a c umul at i v e de l a d i s t r i b u t i o n c hi 2
pva l = 1c hi 2 c df ( chi 2 , bi ns 1);
La segmentation de labcisse est effectue par a fonction segm :
Listing I.7 Appel paramtrisable aux segments pour le calcul de la p-value
%
2 % FUNCTION : [X, FC] = SEGM( NB, K, SEG, DIST )
% Fonct i on qui d e f i n i t l a s e gme nt at i on de l axe des X
% e t l e nombre d e c h a n t i l o n s par s egment s a t t e n d u
%
% NOM DE FICHIER: SEGM.M
7 %
% INPUT:
% NB : T a i l l e du v e c t e u r d e c h a n t i l o n s a l e a t o i r e s
% K : Nombres de s egment s s ur l axe des X
% SEG : Met hode de s e gme nt at i on
12 % 0 : e q u i d i s t r i b u e
% Aut r e : e q u i d i s t a n t
% DIST : Type de d i s t r i b u t i o n
% 0 : normal e
% Aut r e : e x p o n e n t i e l e
17 %
% OUTPUT:
% X : Pv al ue obt enue par l a met hode du Chi 2
% FC : Ve c t e ur du nombre d e c h a n t i l l o n s a t t e n d u
%
22 %
f unc t i on [ x , f c ] = segm( nb , k , seg , d i s t )
% l a d i s t r i b u t i o n e s t l a d i s t r i b u t i o n normal e
27 i f ( d i s t == 0 )
% l a s e gme nt at i on e s t e q u i d i s t r i b u e e
i f ( s eg == 0)
t o t a l = nor mcdf ( 8 , 0 , 1 ) nor mcdf ( 8 , 0 , 1) ;
32 x=nor mi nv ( nor mcdf ( 8 , 0 , 1) : t o t a l / k : nor mcdf ( 8 , 0 , 1 ) , 0 , 1 ) ;
% l a s e gme nt at i on e s t e q u i d i s t a n t e
e l s e
x=8:16/ k : 8 ;
37 end
% s u r f a c e s ous l a cour be dans l e s s egment s
p = nor mcdf ( x ( 2 : k +1) , 0 , 1) nor mcdf ( x ( 1 : k ) , 0 , 1 ) ;
42 % l a d i s t r i b u t i o n e s t l e x p o n e n t i e l l e
e l s e
% l a s e gme nt at i on e s t e q u i d i s t r i b u e e
i f ( s eg == 0)
t o t a l = expcdf ( 1 6 , 1 ) ;
47 x=expi nv ( 0 : t o t a l / k : expcdf ( 1 6 ) , expcdf ( 1 6 ) ) ;
% l a s e gme nt at i on e s t e q u i d i s t a n t e
e l s e
x =0: 16/ k : 1 6 ;
52 end
% s u r f a c e s ous l a cour be dans l e s s egment s
p = expcdf ( x ( 2 : k +1) , 1) expcdf ( x ( 1 : k ) , 1 ) ;
57 end
113
f c = pnb ;
I.3 Gnrateur de lexponentielle
Le gnrateur de lexponentielle est modi pour supporter les diffrents scnarios de
ltage de sortie ainsi que lutilisation dune ROM compacte.
Listing I.8 Gnrateur dexponentielle type RBB
1 %
% FUNCTION : VALUES = EXP_GEN( ECHANTILLON, SCENARIO)
% Fonct i on qui gener e une e x p o n e n t i e l l e s u i v a n t
% l a met hode RBB
%
6 % NOM DE FICHIER: EXP_GEN.M
%
% INPUT:
% ECHANTILLON : T a i l l e du v e c t e u r d e c h a n t i l o n s a l e a t o i r e s
% SCENARIO : Longueur de l e t age de s o r t i e
11 % 1 : d i f f e r e n c e de 1
% 2 : d i f f e r e n c e de 2
% Aut r e : d i f f e r e n c e de c r o i s s a n t e
% OUTPUT:
% VALUES : Ve c t e ur s des e c h a n t i l l o n s ge ne r e s
16 %
%
f unc t i on va l ue s = exp_gen ( e c h a n t i l l o n , s c e n a r i o )
% appel a l a f o n c t i o n mt x ( ) de l e x p o n e n t i e l l e (ROM)
21 m = mtx ( ) ;
% t a i l l e f o n c t i o n du s c e n a r i o
i f ( s c e n a r i o == 1)
l g t h = 32;
26 e l s e i f ( s c e n a r i o == 2)
l g t h = 322 1;
e l s e
l g t h = 3231/ 2 + 1;
end
31
% pi pe ( e t age de s o r t i e )
nombres = ui nt 32 ( zeros ( l gt h , 1 ) ) ;
% on r e mp l i t l e pi pe
36 f or i =1: l g t h
nombres ( i , 1 ) = m( i ndex ( ui nt 32 (2^32rand ( ) ) ) ) ;
end
% i n i t i a l i s a t i o n
41 va l ue s = ui nt 32 ( zeros ( e c h a n t i l l o n , 1 ) ) ;
% g e n e r a t i o n
f or i = 1: e c h a n t i l l o n
46 % l e c t u r e des b i t s pour l a s o r t i e
va l ue s ( i , 1 ) = gennombre ( nombres , s c e n a r i o ) ;
% de c al e r l e s c h i f f r e s ( s h i f t r e g i s t e r )
f or j = l g t h : 1:2
51 nombres ( j , 1 ) = nombres ( j 1 , 1);
end ;
nombres ( 1 , 1 ) = m( i ndex ( ui nt 32 (2^32rand ( ) ) ) ) ;
end
56
% de u i n t v e r s doubl e ( v i r g u l e a l a p o s i t i o n 27)
va l ue s = doubl e ( va l ue s ) / 2 ^ 2 7 ;
114
Le gnrateur dexponentielle fait appel sa propre fonction mtx() :
Listing I.9 ROM du gnrateur dexponentielle
%
2 % FUNCTION : M = MTX( )
% Fonct i on qui c r e e e t r e t o u r n e l a ROM 32 x 32 du
% ge ne r at e ur d e x p o n e n t i e l l e
%
% NOM DE FICHIER: MTX.M
7 %
% OUTPUT:
% M : ROM de l e x p o n e n t i e l l e
%
%
12 f unc t i on m = mtx ( )
% CPT
m1 = ui nt 32 ( zeros ( 3 2 , 1 ) ) ;
% t r a n s p o s e e de l a CPT b i t a b i t
17 m = ui nt 32 ( zeros ( 3 2 , 1 ) ) ;
% on gener e l a CPT
f or i n d i c e = 1: 32
% l i r e l e s prob
22 p =1(( exp(2.^(5i n d i c e ) ) 1) . / ( exp(2.^(6i n d i c e ) ) 1) ) ;
% memori se l e s par amet r es
m1(32i n d i c e +1 , 1) = ui nt 32 (2^32p ) ;
end
27
f or i =1: 32 % Chaque nouveau nombre de m
f or j =1: 32% e s t c o n s t i t u e des b i t m1
% memori se l e s par amet r es
m( i , 1 ) = b i t s e t ( m( i , 1 ) , j , b i t g e t ( m1( j , 1 ) , i ) ) ;
32 end
end
Le gnrateur dexponentielle fait appel sa propre fonction gennombre() qui mule le
comportement de ltage de sortie :
Listing I.10 tage de sortie du gnrateur dexponentielle
%
2 % FUNCTION : NOMBRES = GENNOMBRE(NOMBRES, SCENARIO)
% Fonct i on emul ant l e t age de s o r t i e
%
% NOM DE FICHIER: GENNOMBRE.M
%
7 % INPUT:
% NOMBRES: Pi pe des nombres d e c h a n t i l l o n s a ge ne r e r
% SCENARIO : Longueur de l e t age de s o r t i e
% 1 : d i f f e r e n c e de 1
% 2 : d i f f e r e n c e de 2
12 % Aut r e : d i f f e r e n c e de c r o i s s a n t e
%
% OUTPUT:
% NOMBRES : Pi pe modi f i e .
%
17 %
f unc t i on uval ue = gennombre ( nombres , s c e n a r i o ) ;
% i n i t i a l i s e
22 uval ue = ui nt 32 ( 0 ) ;
i =1; j =1; %j par c our t l e s b i t s de uval ue , i dans l e pi pe
whi l e ( j <=32)
27
% l i t l e s bons b i t s dans l e pi pe
uval ue = b i t s e t ( uval ue , 32j +1 , b i t g e t ( nombres ( i , 1) , 32 j +1 ) ) ;
% p o s i t i o n des b i t s f o n c t i o n du s c e n a r i o
32 i f ( s c e n a r i o == 1)
115
i = i +1;
e l s e i f ( s c e n a r i o == 2)
i = i +2;
e l s e
37 i = i +(32j ) ;
end
j = j +1;
end
I.4 Gnrateur de la distribution normale
Le gnrateur de la normale est modi pour supporter les diffrents scnarios de lina-
risation.
Listing I.11 Gnrateur de normale type RBB
%
% FUNCTION : VALUES = NORM_GEN( INDICE , NB_ECHANTILLONS)
% Fonct i on qui s i mul e un RBB a 16 noeuds de l a normal e
4 % e t gener e NB_ECHANTILLONS e c h a n t i l l o n s qui en
% s ont i s s u s
%
% NOM DE FICHIER: NORM_GEN.M
%
9 % INPUT:
% INDICE : Premi er noeud l i n e a r i s e
% NB_ECHANTILLONS: Nombre d e c h a n t i l l o n s a ge ne r e r
%
% OUTPUT:
14 % VALUES : Ve c t e ur compor t ant l e s NB_ECHANTILLONS
% e c h a n t i l l o n s a l e a t o i r e s gEneres .
%
%
19 f unc t i on va l ue s = norm_gen ( i ndi c e , e c h a n t i l l o n )
m = mtx ( i n d i c e ) ;
ni veaux = 15; %16e noeud s y me t r i que
nombres = ui nt 16 ( zeros ( ni veaux +1 , 1 ) ) ;
24 i dx = zeros ( ni veaux +1 , 1) ;
f or i =1: l e ngt h ( i dx )
i dx ( i ) = i ndex ( ui nt 32 (2^32rand ( ) ) ) ;
end
29
e c h a n t i l l o n s = e c h a n t i l l o n + ni veaux + 1;
va l ue s = zeros ( e c h a n t i l l o n , 1 ) ;
f or i = 1: e c h a n t i l l o n s
34 % ge ne r e r t ous l e s ni v e aux
nombres = gennombre (m, nombres , ni veaux , i dx ) ;
%memori ser s i pi pe p l e i n
i f ( i > ni veaux +1)
39
u = doubl e ( nombres ( ni veaux +1 ) ) ;
% r p e r t o r i e r l e s nombres ( pos / neg )
i f ( i dx ( ni veaux +1) == 32 )
44 u = u 1;
end
u = u / 2 ^ ( ni veaux 2);
49 %e t hop
va l ue s ( ini veaux 1) = u ;
end
%de c l ae r l e s c h i f f r e s
116
54 f or j = ni veaux +1: 1:2
nombres ( j ) = nombres ( j 1);
end ;
nombres ( 1 ) = ui nt 16 ( 0 ) ;
nombres ;
59
%de c l ae r l e s c h i f f r e s
f or j = 1: ni veaux
i dx ( j ) = i dx ( j +1) ;
end ;
64 i dx ( ni veaux + 1) = i ndex ( ui nt 32 (2^32rand ( ) ) ) ;
end ;
Le gnrateur de la normale fait appel sa propre fonction mtx() :
Listing I.12 Matrice du gnrateur de normale
%
% FUNCTION : M = MTX( LIMIT )
3 % Fonct i on qui c r e e e t r e t o u r n e l ens embl e des
% f o n c t i o n s nodal e s ( phi f u n c t i o n ) d un RBB a 16 noeuds
% ge ne r ant une normal e par s y me t r i e
%
% NOM DE FICHIER: MTX.M
8 %
% INPUT:
% LIMIT : INDICE DU PREMIER NOEUD LINEARISE (13 a 1)
%
% OUTPUT:
13 % M : Mat r i ce des phi f u n c t i o n s ( CPT) d un RBB de 16
% noeuds .
%
f unc t i on m = mtx ( l i mi t )
18 m = zeros ( 16384 , 15) ;
f or i n d i c e = 13:1
p = par ams ( i n d i c e ) ;
23
i f ( i n d i c e < l i mi t )
v = [ 0 : l e ngt h ( p) 1];
app = p o l y f i t ( v , p , 1 ) ;
p = app ( 1) v + app ( 2 ) ;
28 end ;
% memori se l e s par amet r es
f or j =1: l e ngt h ( p )
m( j ,2i n d i c e ) = p ( j ) ;
33 end
end
Le gnrateur de la normale fait appel sa propre fonction mtx() :
Listing I.13 Fonctions nodales du gnrateur de normale
1 %
% FUNCTION : P = PARAMS( INDICE)
% Fonct i on qui c r e e r e t o u r n e l a f o n c t i o n s nodal e s
% d un RBB normal e a 16 noeuds
%
6 % NOM DE FICHIER: PARAMS.M
%
% INPUT:
% INDICE : INDICE NORMALISE DU RBB (13 a 1)
%
11 % OUTPUT:
% P : phi f u n c t i o n ( CPT) du noeud i n d i c e
%
%
16 f unc t i on p = par ams ( i n d i c e )
117
% nombre de p o i n t s
Maxn = 2^(1i n d i c e ) ;
% pas
21 f r a c = 1/2^( i n d i c e ) ;
% p o i n t s
n =[ 0: Maxn1];
26 % p r o b a b i l i t e s
p = ( nor mcdf ( ( 2n+2) f r a c )nor mcdf ( ( 2n+1) f r a c ) ) . / . . .
( nor mcdf ( ( 2n+2) f r a c )nor mcdf ( ( 2n) f r a c ) ) ;
I.5 Monte Carlo
Lalgorithme Monte Carlo tudi a t traduit en Matlab pour des raisons de facilit de
manipulation :
Listing I.14 Algorithme Monte Carlo
%
2 % FUNCTION : [ r adi us , he at ] = t i ny_mc ( phot ons )
% Eq u i v a l e n t MATAB du code C d i s p o n i b l e a
% h t t p : / / oml c . ogi . edu
%
% NOM DE FICHIER: TINY_MC.M
7 %
% INPUT:
% PHOTONS : Nombre de phot ons
%
% OUTPUT:
12 % r adi us : rayon de d i f f u s i o n
% he at : c hal e ur abs or bee
%
%
17 f unc t i on [ r a di us , he a t ] = t i ny_mc ( phot ons )
t 1 = Ti ny Monte Car l o by Sc o t t Pr a hl ( h t t p : / / omlc . ogi . edu ) ;
t 2 = 1 W Poi nt Sour ce Heat i ng i n I n f i n i t e I s o t r o p i c S c a t t e r i n g Medium ;
22 SHELL_MAX = 101;
mu_a = 2 . 0 ; % / Abs or pt i on Co e f f i c i e n t i n 1/ cm ! ! nonz e r o ! ! /
mu_s = 2 0 . 0 ; % / Reduced S c a t t e r i n g Co e f f i c i e n t i n 1/ cm /
mi c r o n s _ p e r _ s h e l l = 50; % / Thi c k ne s s of s p h e r i c a l s h e l l s i n mi cr ons /
27 % phot ons = 12;
he a t = zeros (SHELL_MAX, 1 ) ;
r a d i u s = zeros (SHELL_MAX, 1 ) ;
32 a l be do = mu_s / ( mu_s + mu_a ) ;
s he l l s _pe r _mf p = 1e4 / mi c r o n s _ p e r _ s h e l l / ( mu_a+mu_s ) ;
f or i = 1: phot ons
%f p r i n t f ( phot on no %d \ n , i ) ;
37 x = 0 . 0 ; y = 0 . 0 ; z = 0 . 0 ;
u = 0 . 0 ; v = 0 . 0 ; w = 1 . 0 ;
wei ght = 1 . 0 ;
whi l e ( t r u e )
42
t = l og ( rand ( ) ) ; % move
x = x + t u ;
y = y + t v ;
z = z + t w;
47
s h e l l = f i x ( s qr t ( xx+yy+zz ) s he l l s _pe r _mf p ) ; % abs or b
i f ( s h e l l > (SHELL_MAX1) )
118
s h e l l = SHELL_MAX1;
52 end
he a t ( s h e l l + 1 , 1 ) = he a t ( s h e l l + 1 , 1 ) + (1.0al be do ) wei ght ;
57 wei ght = wei ght al be do ;
whi l e ( t r u e )
% new d i r e c t i o n
62 xi 1 =2. 0rand ( ) 1 . 0 ;
xi 2 =2. 0rand ( ) 1 . 0 ;
t =xi 1xi 1+xi 2xi 2 ;
67 i f ( t <=1)
break ;
end
end
72
u = 2. 0 t 1 . 0 ;
v = xi 1 s qr t ((1uu ) / t ) ;
w = xi 2 s qr t ((1uu ) / t ) ;
77 i f ( wei ght < 0. 001)
% r o u l e t t e
i f ( rand ( ) > 0. 1 )
break ;
82 end
wei ght = wei ght / 0 . 1 ;
end
87
end
%f p r i n t f ( nb de s h e l l %d \ n , j ) ;
92 end
f p r i n t f ( %s \ n%s \ n \ n S c a t t e r i n g = %8.3 f / cm\ nAbs or pt i on = %8.3 f / cm\ n , t 1 , t 2 , mu_s , mu_a ) ;
f p r i n t f ( Phot ons = %8l d \ n \ n Radi us Heat \ n [ mi cr ons ] [W/ cm^ 3 ] \ n , phot ons ) ;
t = 43. 14159( mi c r o n s _ p e r _ s h e l l ^3) phot ons / 1 e12 ;
97
f or i =1:SHELL_MAX1
f p r i n t f ( %6.0 f %12.5 f \ n , i mi c r ons _pe r _s he l l , he a t ( i ) / t / ( i i + i + 1 . 0 / 3 . 0 ) ) ;
he a t ( i ) = he a t ( i ) / t / ( i i + i + 1 . 0 / 3 . 0 ) ; % r e t o u r n e l a v a l e ur a f f i c h e
r a d i u s ( i ) = i mi c r o n s _ p e r _ s h e l l ;
102 end
f p r i n t f ( e x t r a %12.5 f \ n , he a t ( SHELL_MAX ) / phot ons ) ;
he a t = he a t ( 1 : SHELL_MAX1);
Le vecteur extrait du FPGA est normalis pour des ns de comparaison :
Listing I.15 Normalisation du rsultat du FPGA
%
2 % FUNCTION : [ x , ncourbe ] = my_t i ny_mc ( he at )
% Fr ac t i on de t i ny_mc . m
% p e r me t t a n t de nor mal i s e r l e s v a l e u r s e x t r a i t e s du FPGA
%
% NOM DE FICHIER: MY_TINY_MC.M
7 %
% INPUT:
% HEAT : Chal eur t o t a l e ( non nor mal i s e e )
%
% OUTPUT:
12 % x : rayon de d i f f u s i o n
% ncourbe : c hal e ur abs or bee
%
%
17 f unc t i on [ x , ncour be ] = my_t i ny_mc ( he a t ) ;
SHELL_MAX = 101;
119
mu_a = 2 . 0 ; % / Abs or pt i on Co e f f i c i e n t i n 1/ cm ! ! nonz e r o ! ! /
22 mu_s = 2 0 . 0 ; % / Reduced S c a t t e r i n g Co e f f i c i e n t i n 1/ cm /
mi c r o n s _ p e r _ s h e l l = 50; % / Thi c k ne s s of s p h e r i c a l s h e l l s i n mi cr ons /
phot ons = 10000;
al be do = mu_s / ( mu_s + mu_a ) ;
27 s he l l s _pe r _mf p = 1e4 / mi c r o n s _ p e r _ s h e l l / ( mu_a+mu_s ) ;
t = 43. 14159( mi c r o n s _ p e r _ s h e l l ^3) phot ons / 1 e12 ;
f or i =1:SHELL_MAX1
32 x ( i ) = i mi c r o n s _ p e r _ s h e l l ;
ncour be ( i ) = he a t ( i ) / t / ( i i + i + 1 . 0 / 3 . 0 ) ;
end
120
ANNEXE II
SOURCES VHDL
II.1 Sources gnriques
Le gnrateur Tausworthe combin :
Listing II.1 Gnrateur Tausworthe
1 ===========================================================================
Fi c h i e r : t aus wor t he . vhd
Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Gener at eur a l e a t o i r e 32 b i t s
Mo d i f i c a t i o n : 24 f v r i e r 2007
6 ===========================================================================
LIBRARY i e e e ;
use i e e e . s t d_l ogi c _1164 . a l l ;
USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
11 use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
e nt i t y t a us wor t he i s
port (
c l k _ p o r t : i n s t d _ l o g i c ;
16 c e _po r t : i n s t d _ l o g i c ;
e n_por t : i n s t d _ l o g i c ;
r s t : i n s t d _ l o g i c ;
s eed_1 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s eed_2 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
21 s eed_3 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
uni f or m : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end t a us wor t he ;
26 a r c hi t e c t ur e r t l of t a us wor t he i s
s i g na l x_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l x_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l x_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
31 s i g na l f _x_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l f _x_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l f _x_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l et p_x_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
36 s i g na l et p_x_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l et p_x_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l et _x_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l et _x_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
41 s i g na l et _x_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l xor _x_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l xor _x_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l xor _x_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
46
s i g na l xxor _x_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l xxor _x_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l xxor _x_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
51 s i g na l c_1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l c_2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l c_3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l l o c a l _ e n a b l e : s t d _ l o g i c ;
56
begi n
121
proces s ( c l k_por t , r s t , seed_1 , seed_2 , s eed_3 )
61 begi n
i f ( r s t = 1 ) t hen
x_1 <= s eed_1 ;
x_2 <= s eed_2 ;
x_3 <= s eed_3 ;
66 e l s e
i f ( c l k_por t e ve nt and c l k _ p o r t = 1 ) t hen
i f ( l o c a l _ e n a b l e = 1 ) t hen
x_1 <= f _x_1 ;
x_2 <= f _x_2 ;
71 x_3 <= f _x_3 ;
uni f or m <= f _x_1 xor f _x_2 xor f _x_3 ;
end i f ;
76 end i f ;
end i f ;
end proces s ;
et p_x_1 <= c_1 and x_1 ;
81 et _x_1 <= et p_x_1 (3112 downto 0) & x" 000 " ;
xor _x_1 <= ( x_1(3113 downto 0)& x" 000 " & 0 ) xor x_1 ;
xxor _x_1 <= " 000 " & x" 0000 " & xor _x_1 ( 31 downto 1 9 ) ;
f _x_1 <= ( et _x_1 ) xor ( xxor _x_1 ) ;
86 et p_x_2 <= c_2 and x_2 ;
et _x_2 <= et p_x_2 (314 downto 0) & " 0000 " ;
xor _x_2 <= ( x_2(312 downto 0)& " 00 " ) xor x_2 ;
xxor _x_2 <= 0 & x" 000000 " & xor _x_2 ( 31 downto 2 5 ) ;
f _x_2 <= ( et _x_2 ) xor ( xxor _x_2 ) ;
91
et p_x_3 <= c_3 and x_3 ;
et _x_3 <= et p_x_3 (3117 downto 0) & x" 0000 " & 0 ;
xor _x_3 <= ( x_3(313 downto 0)& " 000 " ) xor x_2 ;
xxor _x_3 <= " 000 " & x" 00 " & xor _x_3 ( 31 downto 1 1 ) ;
96 f _x_3 <= ( et _x_3 ) xor ( xxor _x_3 ) ;
c_1 <= x" FFFFFFFE" ;
c_2 <= x" FFFFFFF8" ;
c_3 <= x" FFFFFFF2" ;
101
Local e nabl e f o r XSG pur pos es
l o c a l _ e n a b l e <= c e _ por t and e n_por t ;
end r t l ;
Encodeur de priorit itratif :
Listing II.2 Encodeur de priorit itratif 32 a 5
===========================================================================
Fi c h i e r : e nc pr i o32t o5e x p . vhd
Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Encodeur de p r i o r i t e s ynchr one
5 32 5
Mo d i f i c a t i o n : 09 novembre 2007
===========================================================================
l i br ar y i e e e ;
10 use i e e e . s t d_l ogi c _1164 . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
e nt i t y e nc pr i o32t o5e xp i s
port (
15 c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
e nc i np u t : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
out p : out s t d _ l o g i c _ v e c t o r ( 4 downto 0) ;
f l a g : out s t d _ l o g i c
20 ) ;
end e nc pr i o32t o5e xp ;
a r c hi t e c t ur e e nc pr i o32t o5_s ync h of e nc pr i o32t o5e xp i s
25 component e nc pr i o16t o4e xp
port (
e nc i np u t : i n s t d _ l o g i c _ v e c t o r ( 15 downto 0 ) ;
122
out p : out s t d _ l o g i c _ v e c t o r ( 3 downto 0) ;
f l a g : out s t d _ l o g i c
30 ) ;
end component ;
s i g na l s p l i t _ i n p u t _ s i g n a l _ 1 : s t d _ l o g i c _ v e c t o r ( 15 downto 0 ) ;
s i g na l s p l i t _ i n p u t _ s i g n a l _ 0 : s t d _ l o g i c _ v e c t o r ( 15 downto 0 ) ;
35 s i g na l out p_f r om_enc2t o1_1 : s t d _ l o g i c _ v e c t o r ( 3 downto 0 ) ;
s i g na l out p_f r om_enc2t o1_0 : s t d _ l o g i c _ v e c t o r ( 3 downto 0 ) ;
s i g na l outp_mux : s t d _ l o g i c _ v e c t o r ( 3 downto 0 ) ;
s i g na l f l a g_f r om_e nc 2t o1_1 : s t d _ l o g i c ;
s i g na l f l a g_f r om_e nc 2t o1_0 : s t d _ l o g i c ;
40
begi n
enc16t 4_1 : e nc pr i o16t o4e xp
port map(
45 e n c i n pu t => s p l i t _ i n p u t _ s i g n a l _ 1 ,
out p => out p_f r om_enc2t o1_1 ,
f l a g => f l a g_f r om_e nc 2t o1_1
) ;
50 enc16t 4_0 : e nc pr i o16t o4e xp
port map(
e nc i np u t => s p l i t _ i n p u t _ s i g n a l _ 0 ,
out p => out p_f r om_enc2t o1_0 ,
f l a g => f l a g_f r om_e nc 2t o1_0
55 ) ;
proces s ( c l k )
begi n
i f ( cl k e ve nt and c l k = 1 ) t hen
60 i f ( en = 1 ) t hen
out p <= f l a g_f r om_e nc 2t o1_1 & outp_mux ;
f l a g <= f l a g_f r om_e nc 2t o1_1 or f l a g_f r om_e nc 2t o1_0 ;
end i f ;
end i f ;
65 end proces s ;
proces s ( f l ag_f r om_enc2t o1_1 , out p_f r om_enc2t o1_1 , out p_f r om_enc2t o1_0 )
begi n
i f ( f l a g_f r om_e nc 2t o1_1 = 1 ) t hen
70 outp_mux <= out p_f r om_enc2t o1_1 ;
e l s e
outp_mux <= out p_f r om_enc2t o1_0 ;
end i f ;
end proces s ;
75
s p l i t _ i n p u t _ s i g n a l _ 1 <= e n c i n pu t ( 31 downto 1 6 ) ;
s p l i t _ i n p u t _ s i g n a l _ 0 <= e n c i n pu t ( 15 downto 0 ) ;
end e nc pr i o32t o5_s ync h ;
Listing II.3 Encodeur de priorit 16 a 4
===========================================================================
Fi c h i e r : e nc pr i o16t o4e x p . vhd
Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Encodeur de p r i o r i t e
5 16 a 4
Mo d i f i c a t i o n : 09 novembre 2007
===========================================================================
l i br ar y i e e e ;
10 use i e e e . s t d_l ogi c _1164 . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
e nt i t y e nc pr i o16t o4e xp i s
port (
15 e n c i n pu t : i n s t d _ l o g i c _ v e c t o r ( 15 downto 0 ) ;
out p : out s t d _ l o g i c _ v e c t o r ( 3 downto 0) ;
f l a g : out s t d _ l o g i c
) ;
end e nc pr i o16t o4e xp ;
20
a r c hi t e c t ur e a r c h i of e nc pr i o16t o4e xp i s
s i g na l s i g n a l _ o u t p : s t d _ l o g i c _ v e c t o r ( 3 downto 0 ) ;
s i g na l s i g n a l _ f l a g : s t d _ l o g i c ;
begi n
25
s i g n a l _ o u t p <= " 1111 " when e nc i np u t ( 15 ) = 1 e l s e
" 1110 " when e nc i np u t ( 14 ) = 1 e l s e
" 1101 " when e nc i np u t ( 13 ) = 1 e l s e
123
" 1100 " when e nc i np u t ( 12 ) = 1 e l s e
30 " 1011 " when e nc i np u t ( 11 ) = 1 e l s e
" 1010 " when e nc i np u t ( 10 ) = 1 e l s e
" 1001 " when e nc i np u t ( 9 ) = 1 e l s e
" 1000 " when e nc i np u t ( 8 ) = 1 e l s e
" 0111 " when e nc i np u t ( 7 ) = 1 e l s e
35 " 0110 " when e nc i np u t ( 6 ) = 1 e l s e
" 0101 " when e nc i np u t ( 5 ) = 1 e l s e
" 0100 " when e nc i np u t ( 4 ) = 1 e l s e
" 0011 " when e nc i np u t ( 3 ) = 1 e l s e
" 0010 " when e nc i np u t ( 2 ) = 1 e l s e
40 " 0001 " when e nc i np u t ( 1 ) = 1 e l s e
" 0000 " when e nc i np u t ( 0 ) = 1 e l s e
" 0000 " ;
45 s i g n a l _ f l a g <= 0 when e nc i np u t = " 00000000000000000000000000000000 " e l s e
1 ;
out p <= s i g n a l _ o u t p ;
f l a g <= s i g n a l _ f l a g ;
50
end a r c h i ;
Listing II.4 Registre dcalage
LIBRARY i e e e ;
USE i e e e . s t d_l ogi c _1164 . a l l ;
3 USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
e nt i t y s h i f t _ r e g i s t e r i s
ge ne r i c (
n : i n t e g e r ) ; l ongueur
8 port (
c l k : i n s t d _ l o g i c ; hor l oge
ce : i n s t d _ l o g i c ; c l oc k e nabl e ( c . e . )
di n : i n s t d _ l o g i c ; v e c t e u r d e nt r e
dout : out s t d _ l o g i c ) ; v e c t e u r de s o r t i e
13 end s h i f t _ r e g i s t e r ;
a r c hi t e c t ur e r t l of s h i f t _ r e g i s t e r i s
t ype T_SHIFT_REGISTER i s array ( 0 t o n1) of s t d _ l o g i c ;
s i g na l pr e gs : T_SHIFT_REGISTER;
18 s i g n a l r e gs : s t d _ l o g i c _ v e c t o r ( n1 downt o 0 ) ;
begi n
Pr oc e s s us s e q u e n t i e l ou l e s donnees s ont s h i f t e e
s h i f t : proces s ( c l k )
23 begi n
Fonct i onnement avec c ont r oe de l hor l oge par " ce "
N. B. Si " ce " v aut 0 , l e s donnees ne v ont pas s e d e c a l e r
i f ( cl k e ve nt and c l k = 1 and ce = 1 ) t hen r i s i n g c l oc k edge
f or i i n n2 downto 0 l oop
28 pr e gs ( i +1) <= pr e gs ( i ) ;
end l oop ;
pr e gs ( 0 ) <= di n ;
end i f ;
33 end proces s s h i f t ;
As s i g n a t i o n par de f aut
dout <= pr e gs ( n1);
end r t l ;
II.2 Sources du gnrateur de la distribution exponentielle
Le gnrateur ROM compacte :
124
Listing II.5 Gnrateur dexponentielle ROM compacte
===========================================================================
Fi c h i e r : e x p_ge ne r at or . vhd
3 Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Gnrat eur d c h a n t i l l o n s i s s u s de
l a d i s t r i b u t i o n exp . de mu=1
Mo d i f i c a t i o n : 09 novembre 2007
===========================================================================
8
LIBRARY i e e e ;
USE i e e e . s t d_l ogi c _1164 . a l l ;
USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
13
e nt i t y e xp_ge ne r a t or i s
port (
c l k _ p o r t : i n s t d _ l o g i c ;
c e _p or t : i n s t d _ l o g i c ;
18 e n_por t : i n s t d _ l o g i c ;
r s t : i n s t d _ l o g i c ;
p o r t _ o u t p u t : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end e xp_ge ne r a t or ;
23
a r c hi t e c t ur e r t l of e xp_ge ne r a t or i s
component t a us wor t he
28 port (
c l k _ p o r t : i n s t d _ l o g i c ;
c e _p or t : i n s t d _ l o g i c ;
e n_por t : i n s t d _ l o g i c ;
r s t : i n s t d _ l o g i c ;
33 s eed_1 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s eed_2 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s eed_3 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
uni f or m : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
38 end component ;
component e nc pr i o32t o5e xp
port (
c l k : i n s t d _ l o g i c ;
43 en : i n s t d _ l o g i c ;
e nc i np u t : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
out p : out s t d _ l o g i c _ v e c t o r ( 4 downto 0) ;
f l a g : out s t d _ l o g i c
) ;
48 end component ;
component di agexp
port (
c l k : i n s t d _ l o g i c ;
53 en : i n s t d _ l o g i c ;
p o r t _ i n p u t : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
p o r t _ o u t p u t : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end component ;
58
component romexp
port (
c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
63 addr : i n s t d _ l o g i c _ v e c t o r ( 4 downto 0 ) ;
da t a : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end component ;
68 s i g na l l o c a l _ e n a b l e : s t d _ l o g i c ;
s i g na l F i l l S e l : s t d _ l o g i c ;
s i g na l f l a g _ i n u t i l e : s t d _ l o g i c ;
s i g na l p r o g r a m_ l f s r : s t d _ l o g i c _ v e c t o r ( 7 downto 0 ) ;
s i g na l e c h a n t i l l o n _ u n i f o r m : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
73 s i g na l uni f or m_encode : s t d _ l o g i c _ v e c t o r ( 4 downto 0 ) ;
s i g na l donnees_r om : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l s eed1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l s eed2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
78 s i g na l s eed3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
begi n r t l
83
encodeur : e nc pr i o32t o5e xp
125
port map(
c l k => c l k_por t ,
en => l o c a l _ e n a b l e ,
88 e n c i n pu t => e c h a n t i l l o n _ u n i f o r m ,
out p => uni f or m_encode ,
f l a g => f l a g _ i n u t i l e
) ;
93 rom32x32 : romexp
port map(
c l k => c l k_por t ,
en => l o c a l _ e n a b l e ,
addr => uni f or m_encode ,
98 da t a => donnees_r om
) ;
r e g _ d e c a l : di agexp
port map(
103 c l k => c l k_por t ,
en => l o c a l _ e n a b l e ,
p o r t _ i n p u t => donnees_rom ,
p o r t _ o u t p u t => p o r t _ o u t p u t
) ;
108
t wt h : t a us wor t he
port map(
c l k _ p o r t => c l k_por t ,
c e _p or t => c e_por t ,
113 e n_por t => en_por t ,
r s t => r s t ,
s eed_1 => seed1 ,
s eed_2 => seed2 ,
s eed_3 => seed3 ,
118 uni f or m => e c h a n t i l l o n _ u n i f o r m
) ;
l o c a l _ e n a b l e <= c e _ por t and e n_por t ;
s eed1 <= x" 33333333 " ;
123 s eed2 <= x" 55555555 " ;
s eed3 <= x" 99999999 " ;
end r t l ;
Listing II.6 ROM de lexponentielle
===========================================================================
2 Fi c h i e r : romexp . vhd
Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : ROM s ynchr one de l a d i s t r i b u t i o n e x p o n e n t i e l l e
Mo d i f i c a t i o n : 09 novembre 2007
===========================================================================
7
l i br ar y i e e e ;
use i e e e . s t d_l ogi c _1164 . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
12 e nt i t y romexp i s
port (
c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
addr : i n s t d _ l o g i c _ v e c t o r ( 4 downto 0 ) ;
17 da t a : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end romexp ;
a r c hi t e c t ur e rom_synch of romexp i s
22
t ype r om_t ype i s array ( 0 t o 31) of s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
cons t ant e x p _ t a b l e : r om_t ype : = (
" 11111100001010000101010111110000 " ,
27 " 10110011010100000101010111110000 " ,
" 01100000101010000101010111110000 " ,
" 01010111110100000101010111110000 " ,
" 01001101001000000101010111110011 " ,
" 11010010010100000101010111110111 " ,
32 " 10001110101000000101010111111111 " ,
" 10100001010000000101010111101111 " ,
" 10010111101000000101010111011111 " ,
" 01100010010000000101010110111111 " ,
" 00110000100000000101010101111111 " ,
37 " 01101001010000000101010011111111 " ,
" 01111010100000000101011111111111 " ,
126
" 01100011000000000101001111111111 " ,
" 01001000100000000101111111111111 " ,
" 01100101000000000100111111111111 " ,
42 " 01001010000000000111111111111111 " ,
" 00100101000000000011111111111111 " ,
" 01010110000000001111111111111111 " ,
" 00101000000000011111111111111111 " ,
" 01101010000000111111111111111111 " ,
47 " 00000100000001111111111111111111 " ,
" 00001000000011111111111111111111 " ,
" 00111100000111111111111111111111 " ,
" 00000000001111111111111111111111 " ,
" 00010000011111111111111111111111 " ,
52 " 00111000111111111111111111111111 " ,
" 00010001111111111111111111111111 " ,
" 00010011111111111111111111111111 " ,
" 00000111111111111111111111111111 " ,
" 00001111111111111111111111111111 " ,
57 " 00000000000000000000000000000000 "
) ;
begi n
proces s ( c l k )
62 begi n
i f ( cl k e ve nt and c l k = 1 ) t hen
i f ( en = 1 ) t hen
da t a <= e x p _ t a b l e ( c o n v _ i n t e g e r ( addr ) ) ;
end i f ;
67 end i f ;
end proces s ;
end rom_synch ;
Listing II.7 tage de sortie
===========================================================================
Fi c h i e r : di agexp . vhd
Aut eur : Tarek Ould Bachi r
4 De s c r i p t i o n : Re g i s t r e a decal age a l ongueur d e c r o i s s a n t e
Mo d i f i c a t i o n : 09 novembre 2007
===========================================================================
l i br ar y i e e e ;
9 use i e e e . s t d_l ogi c _1164 . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
e nt i t y di agexp i s
port (
14 c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
p o r t _ i n p u t : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
p o r t _ o u t p u t : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
19 end di agexp ;
a r c hi t e c t ur e di agexp_s ynch of di agexp i s
component s h i f t _ r e g i s t e r
24 ge ne r i c (
n : i n t e g e r : = 1 ) ;
port (
c l k : i n s t d _ l o g i c ; hor l oge
ce : i n s t d _ l o g i c ; c l oc k e nabl e ( c . e . )
29 di n : i n s t d _ l o g i c ; v e c t e u r d e nt r e
dout : out s t d _ l o g i c ) ; v e c t e u r de s o r t i e
end component ;
s i g na l s i g n a l _ i n p u t : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
34
begi n
G: f or I i n 0 t o 31 generat e
s r l 0 : s h i f t _ r e g i s t e r
39 ge ne r i c map(
n => ( I +1) ( I +2) / 2
)
port map (
c l k => cl k ,
44 ce => en ,
di n => s i g n a l _ i n p u t ( I ) ,
dout => p o r t _ o u t p u t ( I )
) ;
end generat e G;
127
49
s i g n a l _ i n p u t <= p o r t _ i n p u t ;
end di agexp_s ynch ;
Le gnrateur dexponentielle utilisant la cellule de van Daalen :
Listing II.8 Gnrateur utilisant la cellule de van Daalen (Shawe-Taylor)
===========================================================================
2 Fi c h i e r : e x p_ge ne r at or . vhd
Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Ce l l u l e d un ge ne r at e ur 1 b i t
Mo d i f i c a t i o n : 24 f v r i e r 2007
===========================================================================
7
LIBRARY i e e e ;
use i e e e . s t d_l ogi c _1164 . a l l ;
USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
12
e nt i t y e xp_ge ne r a t or i s
port (
c l k _ p o r t : i n s t d _ l o g i c ;
c e _p or t : i n s t d _ l o g i c ;
17 e n_por t : i n s t d _ l o g i c ;
r s t : i n s t d _ l o g i c ;
p o r t _ o u t p u t : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end e xp_ge ne r a t or ;
22
a r c hi t e c t ur e r t l of e xp_ge ne r a t or i s
s i g na l l o c a l _ e n a b l e : s t d _ l o g i c ;
s i g na l c l k : s t d _ l o g i c ;
27 s i g na l e c h a n t i l l o n _ u n i f o r m : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l e c h a n t i l l o n _ e x p : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l s eed1 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l s eed2 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l s eed3 : s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
32
component e xp_s ha we _ge ne r a t or
port (
37 c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
a l e a _ n br : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
por t _e xp : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
42 end component ;
component t a us wor t he
port (
c l k _ p o r t : i n s t d _ l o g i c ;
47 c e _po r t : i n s t d _ l o g i c ;
e n_por t : i n s t d _ l o g i c ;
r s t : i n s t d _ l o g i c ;
s eed_1 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s eed_2 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
52 s eed_3 : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
uni f or m : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
) ;
end component ;
57
begi n
e xps t : e xp_s ha we _ge ne r a t or
port map(
62 c l k => c l k_por t ,
en => l o c a l _ e n a b l e ,
a l e a _ n br => e c h a n t i l l o n _ u n i f o r m ,
por t _e xp => p o r t _ o u t p u t
) ;
67
t wt h : t a us wor t he
port map(
c l k _ p o r t => c l k_por t ,
c e _p or t => c e_por t ,
128
72 e n_por t => en_por t ,
r s t => r s t ,
s eed_1 => seed1 ,
s eed_2 => seed2 ,
s eed_3 => seed3 ,
77 uni f or m => e c h a n t i l l o n _ u n i f o r m
) ;
l o c a l _ e n a b l e <= c e _ por t and e n_por t ;
82 s eed1 <= x" 33333333 " ;
s eed2 <= x" 55555555 " ;
s eed3 <= x" 99999999 " ;
end r t l ;
Listing II.9 Ensemble de 32 gnrateurs de van Daalen
===========================================================================
Fi c h i e r : exp_s hawe_gener at or . vhd
Aut eur : Tarek Ould Bachi r
4 De s c r i p t i o n : Ce l l u l e d un ge ne r at e ur 1 b i t
Mo d i f i c a t i o n : 24 f v r i e r 2007
===========================================================================
LIBRARY i e e e ;
9 use i e e e . s t d_l ogi c _1164 . a l l ;
USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
e nt i t y e xp_s ha we _ge ne r a t or i s
14 port (
c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
a l e a _ n br : i n s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
por t _e xp : out s t d _ l o g i c _ v e c t o r ( 31 downto 0)
19 ) ;
end e xp_s ha we _ge ne r a t or ;
a r c hi t e c t ur e r t l of e xp_s ha we _ge ne r a t or i s
24
component s ha we _ge ne r a t or
ge ne r i c (
N : i n t e g e r : = 32
) ;
29 port (
c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
i n p u t _ b i t : i n s t d _ l o g i c ;
mod_bi t s : i n s t d _ l o g i c _ v e c t o r (N1 downto 0 ) ;
34 o u t p u t _ p o r t : out s t d _ l o g i c
) ;
end component ;
t ype l e s n i s array ( 0 t o 31) of i n t e g e r ;
39 cons t ant ENs : l e s n : = (
32 , 32 , 32 , 32 , 32 , 32 , 32 , 32
32 , 32 , 32 , 32 , 32 , 32 , 32 , 32
32 , 32 , 32 , 32 , 32 , 32 , 32 , 32
32 , 32 , 32 , 32 , 32 , 32 , 32 , 32) ;
44
t ype r om_t ype i s array ( 0 t o 31) of s t d _ l o g i c _ v e c t o r ( 31 downto 0 ) ;
s i g na l c ons t _e xp : r om_t ype : = (
" 01111111111111111111111111110000 " ,
" 01111111111111111111111111110000 " ,
49 " 01111111111111111111111111100000 " ,
" 01111111111111111111111111000000 " ,
" 01111111111111111111111110000000 " ,
" 01111111111111111111111100000000 " ,
" 01111111111111111111111000000000 " ,
54 " 01111111111111111111110000000000 " ,
" 01111111111111111111100000000000 " ,
" 01111111111111111111000000000000 " ,
" 01111111111111111110000000000000 " ,
" 01111111111111111100000000000000 " ,
59 " 01111111111111111000000000000000 " ,
" 01111111111111110000000000000000 " ,
" 01111111111111100000000000000000 " ,
" 01111111111111000000000000000000 " ,
" 01111111111110000000000000000000 " ,
64 " 01111111111100000000000000000000 " ,
" 01111111111000000000000000000001 " ,
129
" 01111111110000000000000000000101 " ,
" 01111111100000000000000000101011 " ,
" 01111111000000000000000101010101 " ,
69 " 01111110000000000000101010101010 " ,
" 01111100000000000101010101001101 " ,
" 01111000000000101010100110011010 " ,
" 01110000000101010011001101101010 " ,
" 01100000101001101000000101011001 " ,
74 " 01000100110110010101100001010001 " , 31
" 00011110100001000001010100101100 " , 29
" 00000100100110101011111010001000 " , 27
" 00000000000101011111101000111110 " , 21
" 00000000000000000000000111100011 " 9
79 ) ;
begi n
gen_shawegens : f or I i n 0 t o 31 generat e
84 shawe_gen_a : s ha we _ge ne r a t or
ge ne r i c map(
N => ENs ( I )
)
port map(
89 c l k => cl k ,
en => en ,
i n p u t _ b i t => a l e a _ n br ( I ) ,
mod_bi t s => c ons t _e xp ( I ) ( 31 downto 31(ENs ( I ) 1)) ,
o u t p u t _ p o r t => por t _e xp ( I )
94 ) ;
end generat e gen_shawegens ;
end r t l ;
Listing II.10 Generateur de van Daalen
===========================================================================
Fi c h i e r : s hawe_gener at or . vhd
3 Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Ce l l u l e d un ge ne r at e ur 1 b i t
Mo d i f i c a t i o n : 24 f v r i e r 2007
===========================================================================
8 LIBRARY i e e e ;
use i e e e . s t d_l ogi c _1164 . a l l ;
USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
13 e nt i t y s ha we _ge ne r a t or i s
ge ne r i c (
N : i n t e g e r : = 32
) ;
port (
18 c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
i n p u t _ b i t : i n s t d _ l o g i c ;
mod_bi t s : i n s t d _ l o g i c _ v e c t o r (N1 downto 0 ) ;
o u t p u t _ p o r t : out s t d _ l o g i c
23 ) ;
end s ha we _ge ne r a t or ;
a r c hi t e c t ur e r t l of s ha we _ge ne r a t or i s
28
component c e l l u l e _ s h a we
port (
c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
33 i n p u t _ b i t : i n s t d _ l o g i c ;
o u t p u t _ b i t : out s t d _ l o g i c ;
mod_bi t : i n s t d _ l o g i c ;
p r e v i o u s _ s t a g e : i n s t d _ l o g i c ;
n e x t _ s t a g e : out s t d _ l o g i c
38 ) ;
end component ;
s i g na l p r o b _ b i t s : s t d _ l o g i c _ v e c t o r (N downto 0 ) ;
s i g na l b e r n o u l l i : s t d _ l o g i c _ v e c t o r (N downto 0 ) ;
43
begi n
g e n _ c e l l s : f or I i n N1 downto 0 generat e
48 c e l l _s ha we : c e l l u l e _ s h a we
130
port map(
c l k => cl k ,
en => en ,
i n p u t _ b i t => p r o b _ b i t s ( I +1 ) ,
53 mod_bi t => mod_bi t s ( I ) ,
o u t p u t _ b i t => p r o b _ b i t s ( I ) ,
p r e v i o u s _ s t a g e => b e r n o u l l i ( I ) ,
n e x t _ s t a g e => b e r n o u l l i ( I +1 )
) ;
58
end generat e g e n _ c e l l s ;
p r o b _ b i t s ( N ) <= i n p u t _ b i t ;
b e r n o u l l i ( 0 ) <= 0 ;
63 o u t p u t _ p o r t <= b e r n o u l l i ( N ) ;
end r t l ;
Listing II.11 Cellule du gnrateur de van Daalen
===========================================================================
Fi c h i e r : c e l l u l e _ s h a we . vhd
Aut eur : Tarek Ould Bachi r
De s c r i p t i o n : Ce l l u l e d un ge ne r at e ur 1 b i t
5 Mo d i f i c a t i o n : 24 f v r i e r 2007
===========================================================================
LIBRARY i e e e ;
use i e e e . s t d_l ogi c _1164 . a l l ;
10 USE i e e e . s t d _ l o g i c _ a r i t h . a l l ;
use i e e e . s t d _ l o g i c _ u n s i g n e d . a l l ;
e nt i t y c e l l u l e _ s h a we i s
port (
15 c l k : i n s t d _ l o g i c ;
en : i n s t d _ l o g i c ;
i n p u t _ b i t : i n s t d _ l o g i c ;
mod_bi t : i n s t d _ l o g i c ;
o u t p u t _ b i t : out s t d _ l o g i c ;
20 p r e v i o u s _ s t a g e : i n s t d _ l o g i c ;
n e x t _ s t a g e : out s t d _ l o g i c
) ;
end c e l l u l e _ s h a we ;
25 a r c hi t e c t ur e r t l of c e l l u l e _ s h a we i s
s i g na l p r o b _ b i t : s t d _ l o g i c ;
begi n
30
p r o b _ b i t <= ( mod_bi t and p r e v i o u s _ s t a g e ) when i n p u t _ b i t = 0 e l s e
( mod_bi t or p r e v i o u s _ s t a g e ) ;
proces s ( c l k )
35 begi n
i f ( cl k e ve nt and c l k = 1 ) t hen
i f ( en = 1 ) t hen
n e x t _ s t a g e <= p r o b _ b i t ;
o u t p u t _ b i t <= i n p u t _ b i t ;
40 end i f ;
end i f ;
end proces s ;
end r t l ;
131
ANNEXE III
SOURCES C
III.1 Monte Carlo
Le code Monte Carlo disponible ladresse www.unifr.ch/physics/mm/work/
monte_carlo/tiny_mc.c (copie commente du code Monte Carlo disponible
ladresse du Oregon Medical Laser Center http://omlc.ogi.edu/software/
mc/).
Listing III.1 Agorithme Monte Carlo
1 / /
/ S i mp l e s t MonteCarl o s i mu l a t i o n code f o r l i g h t pr opagat i on i n s c a t t e r i n g medium /
/ Desi gned by S c o t t Pr ahl ( h t t p : / / oml c . ogi . edu ) /
/ Commented by P. Zakharov /
/ Legend : /
6 / The 1W p o i n t ( ???) s our c e l o c a t e d i n t he i n f i n i t e i s o t r o p i c s c a t t e r i n g medium /
/ $I d : t i ny_mc . c , v 1 . 1 . 1 . 1 2005/ 06/ 01 14: 24: 34 propan Exp $ /
/ /
# i nc l ude < s t d i o . h>
11 # i nc l ude < s t d l i b . h>
# i nc l ude <math . h>
# de f i ne SHELL_MAX 101 / Number of s h e l l s t o be used f o r s t a t i s t i c s /
16 doubl e mu_a = 2; / Abs or pt i on Co e f f i c i e n t i n 1/ cm ! ! nonz e r o ! ! /
doubl e mu_s = 20; / Reduced S c a t t e r i n g Co e f f i c i e n t i n 1/ cm /
doubl e mi c r o n s _ p e r _ s h e l l = 50; / Thi c k ne s s of s p h e r i c a l s h e l l s i n mi cr ons /
l ong phot ons = 100000; / Number of phot ons t o e mi t /
l ong i , s h e l l ;
21 doubl e x , y , z , u , v , w, wei ght ;
doubl e al bedo , s he l l s _pe r _mf p , xi 1 , xi 2 , t , he a t [SHELL_MAX] ;
i nt main ( )
{
26 / Ca l c u l a t i n g c o n s t a n t s /
al be do = mu_s / ( mu_s + mu_a ) ;
s he l l s _pe r _mf p = 1e4 / mi c r o n s _ p e r _ s h e l l / ( mu_a + mu_s ) ;
/ Main l oop /
31 f or ( i = 1; i <= phot ons ; i ++)
{
x = 0 . 0 ; y = 0 . 0 ; z = 0 . 0 ; / Coor di nat e s /
u = 0 . 0 ; v = 0 . 0 ; w = 1 . 0 ; / Ve l o c i t y component s /
wei ght = 1 . 0 ;
36
f or ( ; ; ) / Main Phot on l oop /
{
/ di s pl ac e me nt v e c t o r l e n g t h i n u n i t s of s c a t t e r i n g l e n g t h /
t = l og ( ( r and ( ) + 1 . 0 ) / (RAND_MAX+ 1 . 0 ) ) ;
41 x += t u ;
y += t v ;
z += t w;
/ c a l c u l a t i n g t he s h e l l i nde x /
46 s h e l l = s q r t ( xx + yy + zz ) s he l l s _pe r _mf p ;
/ The number of s h e l l s i s l i mi t e d we must check i t /
132
i f ( s h e l l > SHELL_MAX1)
s h e l l = SHELL_MAX1;
51
/ Heat i ng c e r t a i n s h e l l i n accor dance t o l o s t wei ght /
he a t [ s h e l l ] += ( 1 . 0 al be do ) wei ght ;
/ Decr eas i ng we i ght of phot o pac k e t /
56 wei ght = a l bedo ;
/ t he f a s t way t o ge ne r at e u n i t v e c t o r of random d i r e c t i o n
and f i n d t o i t s p r o j e c t i o n s ( u , v , w) /
61 f or ( ; ; )
{
/ random number f rom uni f or m d i s t r i b u t i o n [ 1,1] /
xi 1 = 2. 0 r and ( ) / RAND_MAX 1 . 0 ;
66
/ one more random number f rom uni f or m d i s t r i b u t i o n [ 1,1] /
xi 2 = 2. 0 r and ( ) / RAND_MAX 1 . 0 ;
/ St oppi ng i f i t i s l e s s or equal t o one /
71 i f ( ( t = xi 1 xi 1 + xi 2 xi 2 ) <= 1)
break ;
} / Ot her wi s e c o n t i n u i n g t o s ear c h /
76 u = 2. 0 t 1 . 0 ; / c a l c u l a t i o n g p r o j e c t i o n s /
v = xi 1 s q r t ( ( 1 u u ) / t ) ; / c a l c u l a t i o n g p r o j e c t i o n s /
w = xi 2 s q r t ( ( 1 u u ) / t ) ; / c a l c u l a t i o n g p r o j e c t i o n s /
/ Tr yi ng t o t e r mi n a t e i f t he pac k e t wei ght i s t oo s mal l /
81 i f ( wei ght < 0. 001)
{
/ Ro u l e t t e t e c h n i q u e g i v i n g t he chance t o s u r v i v e /
i f ( r and ( ) > 0. 1 RAND_MAX)
86 break ;
/ Sur v i v e d g e t s a d d i t i o n a l ener gy f rom t he t e r mi n a t e d phot ons
t o obey t he ener gy c o n s e r v a t i o n l aw /
wei ght / = 0 . 1 ;
91
}
} / End of phot on l oop /
}
96
/ Ou t p u t t i n g t he par amet er s /
p r i n t f ( " S c a t t e r i n g = %8.3 f / cm\ nAbs or pt i on = %8.3 f / cm\ n" ,
mu_s , mu_a ) ;
101 / Ou t p u t t i n g t he header f o r t a b l e /
p r i n t f ( " Phot ons = %8l d \ n \ n Radi us Heat \ n [ mi cr ons ] [W/ cm^ 3 ] \ n" ,
phot ons ) ;
/ Nor mal i z at i on c o e f f i c i e n t /
106 t = 4 3. 14159 pow( mi c r ons _pe r _s he l l , 3) phot ons / 1e12 ;
/ Out put f o t he he at i n c e r t a i n s h e l l of t he i nne r r adi us i
nor mal i z e d by t he s h e l l vol ume f a c t o r /
f or ( i = 0; i < SHELL_MAX 1; i ++)
111 p r i n t f ( " %6.0 f %12.5 f \ n" ,
i mi c r ons _pe r _s he l l ,
he a t [ i ] / t / ( i i + i + 1. 0 / 3 . 0 ) ) ;
/ These phot ons ar e o u t s i d e of our vol ume of i n t e r e s t /
116 p r i n t f ( " e x t r a %12.5 f \ n" , he a t [SHELL_MAX1] / phot ons ) ;
ret urn 0;
}