Algorithmes de multiplication pour circuits asynchrones
Nicolas VEYRAT CHARVILLON f´evrier-juillet 2004
R´esum´e
L’utilisation de circuits asynchrones permet la r´ealisation d’op´erateurs `a d´elais variables. Contrairement aux circuits synchrones o`u le d´elai d’un op´erateur est constant et ´egal au d´elai du chemin critique plus une marge de s´ecurit´e, la synchronisation locale bas niveau des circuits asynchrones permet `a un op´erateur de fournir un r´esultat `a la vitesse maximale permise par la mat´eriel pour le jeu de donn´ees fourni en entr´ee. Ces circuits peuvent donc dans certains cas ˆetre plus performants en termes de vitesse que les circuits synchrones. Ils poss`edent de plus plusieurs propri´et´es int´eressantes que nous d´etaillerons plus loin. Au cours de ce stage j’ai ´etudi´e les algo- rithmes de multiplication enti`ere pour les circuits asynchrones dans le but d’en maximiser les performances en termes de vitesse/surface.
Remerciements
Je remercie tout d’abord Arnaud qui a dirig´e mon stage de DEA et a eu la patience de supporter toutes mes questions.
D’autre part je voudrais remercier toute l’´equipe du LIP et d’Ar´enaire pour leur accueil chaleureux, leurs conseils et leurs discussions au coin caf´e.
Table des mati` eres
Introduction 4
1 Circuits Asynchrones 6
1.1 G´en´eralit´es . . . 6
1.2 Classification des circuits asynchrones . . . 8
1.3 Protocoles de communication . . . 8
1.3.1 Protocoles 2 et 4 phases . . . 8
1.3.2 Codage des donn´ees . . . 9
1.4 Cellule de Muller . . . 11
1.5 Propri´et´es des circuits asynchrones . . . 12
1.5 Mes Choix . . . 13
2 Algorithmes de multiplication enti`ere 14 2.1 G´en´eration des produits partiels . . . 15
2.1.1 Recodage de Booth-2 . . . 16
2.1.2 Recodage de Booth-3 . . . 17
2.1.3 Recodage de Booth-4 . . . 18
2.2 R´eduction des produits partiels . . . 19
2.2.1 R´eseau cellulaire de Braun . . . 19
2.2.2 M´ethode de Wallace . . . 20
2.2.3 M´ethode de Dadda . . . 21
2.2.4 M´ethode d’Oklobdzija . . . 22
2.3 Addition finale . . . 22
3 Protocole exp´erimental 24 3.1 Hypoth`eses de travail . . . 24
3.2 Le simulateur . . . 25
3.3 Modification des algorithmes . . . 26
3.3.1 Modification de la m´ethode d’Oklobdzija . . . 26
3.3.2 Modification du r´eseau de Braun . . . 27
4 R´esultats et analyse 28 4.1 Les tests . . . 28
4.2 Simulation et r´esultats . . . 28
4.3 Analyse des r´esultats . . . 31
5 Conclusions et perspectives 33 5.1 Conclusion sur la multiplication asynchrone . . . .33
5.2 Travail restant `a faire . . . .33
Bibliographie 34
Introduction
L’op´eration de multiplication est tr`es largement utilis´ee dans les ordina- teurs, non seulement lors de calculs arithm´etiques explicites dans les pro- grammes, mais aussi dans le calcul des fonctions ´el´ementaires (fonctions tri- gonom´etriques par exemple) lors d’´evaluations de polynˆomes `a l’aide d’un sch´ema de H¨orner notamment.
Enfin dans des architectures de type Itanium, on utilise un seul op´erateur d´eriv´e d’un multiplieur, lefused multiply and addcalculant a×x+b, pour toutes les op´erations arithm´etiques [Mar00], dont la division et la racine carr´ee. Ceci prouve la n´ecessit´e d’un op´erateur de multiplication rapide.
La prolif´eration des applications embarqu´ees, par exemple les t´el´ephones, consoles portables et assistants personnels soul`eve le probl`eme de l’autono- mie. De ce point de vue les circuits synchrones ont un r´eel handicap : `a chaque cycle d’horloge, tous les ´el´ements logiques du circuit ´evaluent leurs entr´ees, donc consomment, mˆeme s’ils ne sont pas sollicit´es. Par contre, un circuit asynchrone non sollicit´e se placera en attente d’un jeu d’entr´ee va- lide, ce qui pour des technologies type CMOS (Complementary Metal Oxyde Semiconductor, les circuits les plus courants dans les ordinateurs actuels) consomme beaucoup moins d’´energie (on n’a pas de transitions, donc pas de courant de court-circuit, seulement un courant de fuite qui reste tr`es faible en comparaison).
La notion de circuits asynchrones est pr´esente d`es les tous premiers syst`emes informatiques, puis a laiss´e peu `a peu place aux circuits synchrones.
Dans les circuits synchrones, c’est un signal d’horloge distribu´e dans l’en- semble du circuit qui cadence les op´erations. Le fonctionnement est ainsi plus facile `a analyser et `a assurer. Malheureusement, l’´evolution des proces- seurs, qui suit toujours la loi de Moore, fait doubler la vitesse des proces- seurs environ tous les 18 mois, imposant une distribution de plus en plus pr´ecise du signal d’horloge `a travers des processeurs dont la taille augmente de surcroˆıt. Cette distribution devient r´eellement probl´ematique et coˆuteuse en termes mat´eriels et humains lors du d´eveloppement, car il faut r´esoudre de nombreux de probl`emes de course critique du signal, de routage et de consommation de l’horloge.
Les circuits asynchrones ont ´et´es r´eintroduits entre autres par Sutherland en 1989 [Sut89] dans un article sur les micropipelines, puis en 1990 par Mar- tin [Mar90], principalement pour acc´el´erer le calcul et pallier aux probl`emes de distribution d’horloge, puisque la synchronisation est assur´ee non plus globalement, mais localement entre les diff´erents ´el´ements logiques. Les cir- cuits asynchrones poss`edent d’autres propri´et´es int´eressantes d´etaill´ees plus loin.
Le but de ce stage ´etait d’´etudier comparativement plusieurs algorithmes de multiplication adapt´es aux circuits asynchrones afin d’en optimiser les performances en termes de vitesse/surface. Les ´etudes pr´ec´edentes se sont souvent content´ees ”d’emprunter” directement des algorithmes synchrones et ´etudiaient surtout diff´erentes m´ethodes d’implantation des circuits asyn-
chrones afin d’en maximiser les performances ([Spa92] par exemple). Il n’existe pas d’´etude pouss´ee des propri´et´es algorithmiques de la multiplication en cal- cul asynchrone comme on peut en trouver dans le cas synchrone : [Boo51], [Dad76], [Okl95], [Okl96-2], [Vui83], [Wal64] entre autres. C’est une lacune grave pour un champ de recherche qui b´en´eficie ces derni`eres ann´ees d’un int´erˆet croissant.
Au cours du stage, j’ai ´etudi´e et adapt´e au calcul asynchrone plusieurs algorithmes de multiplication existants afin de comparer leurs performances dans le domaine asynchrone pour une technique d’implantation courante.
Etant donn´´ e les tailles d’op´erandes relativement faibles utilis´ees dans les op´erateurs arithm´etiques (de 8 `a 64 le plus souvent), une ´etude bas´ee sur la complexit´e asymptotique ne serait pas adapt´ee. On va plutˆot r´ealiser une s´erie de simulations au niveau d’une quasi-implantation mat´erielle bas´ee sur une biblioth`eque de portes sp´ecifique, avec toutefois plusieurs restrictions pr´esent´ees plus loin.
Dans une premi`ere partie, je pr´esenterai le fonctionnement des circuits asynchrones, puis d´etaillerai le protocole utilis´e pour mesurer et comparer les diff´erents algorithmes, les choix r´ealis´es pour cette ´etude et ce qui en d´ecoule. L’´etude des algorithmes proprement dits se d´ecoupe en trois parties correspondant aux trois ´etapes de la multiplication que sont la g´en´eration des produits partiels, la r´eduction par addition de ces produits et enfin l’addition finale. Pour finir je pr´esenterai les r´esultats obtenus lors des simulations et les commenterai.
Chapitre 1
Circuits Asynchrones
1.1 G´ en´ eralit´ es [Spa02]
Afin de pouvoir calculer correctement dans un circuit int´egr´e, il est n´ecessaire de disposer d’un m´ecanisme garantissant la validit´e de tout jeu de donn´ees transmis entre ´el´ements de calcul. En effet, lorsqu’un ´el´ement est sollicit´e pour un calcul, il lui faut un certain d´elai pour produire la bonne sortie. Pendant ce temps, les valeurs lues en sortie peuvent ˆetre erron´ees.
Dans un circuit synchrone, la validit´e des donn´ees est assur´ee par une attente correspondant au temps maximal pris pour l’´evaluation d’une entr´ee quelconque (temps au pire cas). On doit de plus ajouter une marge de s´ecurit´e englobant les variations possibles caus´ees par l’environnement, parmi lesquelles la temp´erature et les variations de la tension d’alimentation, qui peut repr´esenter une part importante de l’attente totale. Il est aussi impor- tant d’assurer sur l’ensemble du processeur une distribution quasi-simultan´ee du signal d’horloge, ce qui entraˆıne de nombreux probl`emes de conception et une grande d´epense d’´energie.
Dans un circuit asynchrone, on va plutˆot se doter d’un protocole de communication entre blocs logiques qui indiquera d’un part que les donn´ees transmises sont valides, et d’autre part que ces donn´ees ont ´et´e prises en compte par le destinataire et que celui-ci est prˆet `a en recevoir de nouvelles.
6
Dans un circuit synchrone, la synchronisation entre registres et blocs logiques successifs est assur´ee par un signal d’horloge distribu´e simultan´ement dans
l’ensemble du circuit via un r´eseau complexe de portes logiques
Dans un circuit asynchrone, la synchronisation est assur´ee par les registres et blocs logiques entre eux grˆace `a un protocole local de communication des donn´ees
L’utilisation d’un protocole de communication local permet d’aboutir du point de vue global `a un ensemble fin d’horloges locales g´erant les communi- cations entre ´el´ements, d´ephas´ees les unes par rapport aux autres et dont la p´eriode, non constante, d´epend des d´elais effectifs du circuit qui d´ependent eux-mˆeme des donn´ees d’entr´ee.
1.2 Classification des circuits asynchrones [Mar90]
Suivant les hypoth`eses faites sur les d´elais dans un circuit asynchrone, on peut classifier celui-ci dans trois cat´egories :
– un circuit de la classe DI (Delay-Insensitive) fonctionne correctement pour des d´elais positifs, born´es mais inconnus dans les portes et dans les fils. Ces circuits sont extrˆemement robustes vis `a vis des conditions environnementales.
Cependant Martin [Mar90] a montr´e que cette classe est trop limit´ee : seuls les circuits compos´es d’inverseurs et d’´el´ements de Muller (pr´esent´es plus loin) sont DI.
– On est donc amen´es `a diminuer les contraintes du mod`ele DI : en impo- sant d2 =d3, soit l’hypoth`ese des fourches isochrones (une transition d’un signal arrive simultan´ement en tous les points situ´es en aval de la fourche). On obtient la classe QDI (Quasi-Delay-Insensitive) qui est le mod`ele le plus strict permettant de r´ealiser tous les circuits dont on aura besoin.
– Enfin la classe SI (Speed-Independent) qui impose des d´elais nuls dans les fils (d1=d2 =d3 = 0), hypoth`ese peu r´ealiste.
1.3 Protocoles de communication
1.3.1 Protocoles 2 et 4 phases
La synchronisation des ´el´ements du circuit est assur´ee par un protocole de communication qui permet un ´echange de donn´ees valides `a l’aide de fils de requˆete et d’acquittement. Il existe deux protocoles courants, le premier
`
a 4 phases et le second `a 2 phases :
– Le premier protocole se d´eroule en 4 phases : (1) l’´emetteur transmet ses donn´ees et met le fil de requˆete `a 1, (2) le destinataire absorbe les donn´ees et met le fil d’acquittement `a 1, (3) l’´emetteur r´epond en mettant le fil de requˆete `a 0 (les donn´ees ne sont plus garanties valides),
et (4) le destinataire accuse r´eception en mettant le fil d’acquittement
`
a 0, initialisant le cycle de communication suivant.
– Le protocole 2 phases ´evite les retours `a z´ero du protocole 4 phases, puisque les informations des fils de requˆete et d’acquittement sont en- cod´ees par des transitions et non plus par des valeurs bool´eennes.
Ce protocole devrait ˆetre plus rapide, mais l’impl´ementation d’un m´ecanisme r´eagissant aux transitions plutˆot qu’aux valeurs logiques des fils de requˆete et d’acquittement r´esulte souvent en un surcoˆut mat´eriel qui nuit aux performances.
L’utilisation de l’un ou l’autre des protocoles d´epend de la technologie vis´ee.
1.3.2 Codage des donn´ees
Il est possible de coder les donn´ees de fa¸con classique sur un seul fil transportant une valeur bool´eenne (codageSingle Rail). Cette m´ethode im- pose alors l’existence d’un fil de requˆete s´epar´e indiquant la validit´e du jeu de donn´ees.
Cependant il est aussi possible d’encoder le signal de requˆete avec la va- leur bool´eenne sur deux fils (Double Rail). Un signal est une pair{x.f, x.t}, les pairs {x.f, x.t} = {1,0} et {x.f, x.t} ={0,1} repr´esentent des donn´ees valides (le 0 et le 1 logiques){x.f, x.t}={0,0} repr´esente une donn´ee inva- lide (’E’), et {x.f, x.t}={1,1} n’est pas utilis´e. De cette fa¸con, on impose un passage par une valeur invalide entre deux donn´ees valides. Un jeu de donn´ees est valide lorsque tous les signaux sont valides, et est r´einitialis´e seulement lorsque tous les signaux sont invalides.
Codage double rail des donn´ees pour les protocoles 2 et 4 phases
a) un canal de communication simple rail b) protocole 4 phases simple rail c) protocole 2 phases simple rail
protocole 2 phases double rail
protocole 4 phases double rail
1.4 Cellule de Muller [Mul63]
La garantie de validit´e des donn´ees impose la cr´eation d’une nouvelle porte capable de m´emoriser celles-ci. Une porte de Muller est initialis´ee `a 0 ou 1 lorsque toutes ses entr´ees sont identiques `a 0 ou 1 respectivement, et conserve la derni`ere valeur grˆace `a une boucle de m´emorisation jusqu’`a sa prochaine initialisation. Cette cellule est essentielle pour construire le demi registre (half-buffer) asynchrone qui permet comme en synchrone de m´emoriser des valeurs.
a) implantation mat´erielle d’une cellule de Muller b) half-buffer
La cellule de Muller est aussi utile pour signaler la compl´etion d’un calcul, c’est `a dire le moment o`u toutes les sorties sont valides et le r´esultat correct : par exemple pour un circuit logique `ansorties, on veut ˆetre capable de signaler que toutes les sorties sont valides afin d’autoriser la suite du calcul (typiquement en sortie d’un op´erateur arithm´etiquenbits). Pour chaque bit di cod´e en double rail on va r´ealiserdi.t NORdi.f, puis on va composer les sorties dans une porte de Muller `a n entr´ees. Au d´ebut du calcul, toutes les sorties sont invalides, donc toutes les pairs {di.f, di.t} valent {0,0} et les NOR sortent 1 de mˆeme que la porte de Muller dont toutes les entr´ees valent 1. Lorsque le circuit effectue son calcul, les bits de sorties deviennent valides, les NOR passent `a 0. Lorsque toutes les sorties sont valides, toutes les entr´ees de la porte de Muller sont `a 0 et celle-ci passe `a 0, signalant la compl´etion du calcul.
1.5 Propri´ et´ es des circuits asynchrones [Spa02]
Les circuits asynchrones, en plus d’´eviter en partie les probl`emes li´es
`
a l’utilisation d’une horloge globale, poss`edent d’autres propri´et´es avanta- geuses :
– Haute performance.Grˆace `a la synchronisation locale, chaque ´etape de calcul dans un circuit asynchrone d´emarre d`es que l’´etape pr´ec´edente est termin´ee, sans devoir attendre un signal d’horloge et ind´ependamment du pire cas. Ceci se traduit par une vitesse de traitement accrue, car ils calculent en temps moyen et non en temps de pire cas. De plus la synchronisation d’un circuit combinatoire est g´er´ee directement par celui-ci, et plus par des ´el´ements de m´emorisation comme dans un circuit synchrone (latch et flip-flop) qui imposent des marges pour as- surer un bon fonctionnement. Cependant cet avantage peut-ˆetre en partie annul´e par la g´en´eration des signaux de compl´etion de calcul, et il est difficile de traduire ces variations locales de temps de calcul en termes de performances globales sur le temps de calcul d’une fonction, typiquement dans un compilateur.
– Faible consommation.Contrairement aux circuits synchrones o`u `a chaque cycle d’horloge, tous les ´el´ements logiques du circuit ´evaluent leurs entr´ees, donc consomment, dans un circuit asynchrone chaque
´
el´ement non sollicit´e se placera en attente d’un jeu d’entr´ee valide, r´eduisant l’activit´e au minimum (activit´e conditionnelle bas niveau).
– Robustesse vis `a vis des conditions environnementales. Alors qu’en synchrone on est oblig´e d’introduire dans le d´elai des marges de s´ecurit´e pour pallier aux ´eventuelles variations des conditions environ- nementales, en asynchrone aucune hypoth`ese n’est faite sur le d´elai de l’op´erateur. Un circuit asynchrone est capable grˆace `a la synchro- nisation locale de calculer au maximum de sa capacit´e ´etant donn´e les variations de temp´erature, de tension d’alimentation et mˆeme les
´
eventuelles imperfections mat´erielles.
– Faibles ´emissions ´electromagn´etiques.Les op´erations locales s’ef- fectuent g´en´eralement de fa¸con al´eatoire dans le temps, r´epartissant les impulsions ´electromagn´etiques cr´e´ees par l’alimentation d’un com- posant et lissant le spectre ´electromagn´etique du circuit, alors que l’ali- mentation ponctu´ee par l’horloge de l’ensemble d’un circuit synchrone g´en`ere un spectre particulier. De plus la r´epartition al´eatoire des ponc- tions d’´energie des portes tend `a stabiliser la tension d’alimentation.
Enfin ceci permet d’augmenter la s´ecurit´e des applications de crypto- graphie embarqu´ees vis `a vis des attaques par analyse de consomma- tion (Differential Power Analysis, tr`es dangereux contre les cartes `a puce).
– Meilleure composabilit´e et modularit´e. La synchronisation lo- cale permet de consid´erer les ´el´ements d’un circuit comme des boites noires faciles `a d´eplacer et `a r´eutiliser puisque aucune assertion n’est faite sur le d´elai et les conditions environnementales de fonctionne- ment.
– Plus de probl`eme de g´en´eration, de distribution d’horloge et de course critique.Il n’y a plus de signal `a distribuer simultan´ement dans tout le circuit, ce qui est l’un des plus gros probl`emes des pro- cesseurs synchrones. Par exemple lors de la conception du processeur Alpha 21164 de DEC, plus de la moiti´e des effectifs de l’´equipe de conception ´etait affect´ee aux probl`emes li´es `a l’horloge.
Cependant les circuits asynchrones pr´esentent aussi plusieurs inconv´enients.
Le codage double rail implique un surcoˆut en routage et en portes logiques, donc en surface de circuit. La recherche actuelle cherche `a pallier `a un manque d’outils et de strat´egies de conception et de test dont souffrent les circuits asynchrones, peu r´epandus. Le calcul en temps variable suivant les donn´ees d’entr´ee complique aussi l’´ecriture des compilateurs destin´es au calcul asynchrone.
1.6 Mes choix
Dans cette ´etude, nous utiliserons le mod`ele QDI puisqu’il est souvent possible lors de la cr´eation de circuits arithm´etiques de contrˆoler les d´elais des fils pour satisfaire la condition des fourches isochrones. J’ai choisi aussi le protocole 4 phases, plus simple `a mettre en place, en combinaison avec le codage double rail qui est couramment utilis´e.
Le choix du codage double rail simplifie les simulations d’une part en en- codant directement le signal de requˆete dans les valeurs bool´eennes, d’autre part car ce codage garantit l’abscence de transitions parasites du signal lors de calculs.
Chapitre 2
Algorithmes de
multiplication enti` ere
La multiplication enti`ere ou virgule fixe peut ˆetre d´ecompos´ee en trois
´etapes successives qui se retrouvent dans une multiplication `a la main : la formation des produits partiels, la r´eduction du tableau des produits par- tiels et l’addition finale. La formation des produits partiels correspond `a la multiplication de chaque chiffre du multiplicateur par chaque chiffre du multiplicande. C’est cette ´etape qui n´ecessite de connaˆıtre les tables de mul- tiplication, implant´ees par une porte AND en binaire. On obtient alors un tableau de chiffres de diff´erents poids (lebitarray) que l’on doit additionner pour obtenir le r´esultat final.
Pour aller plus vite, on utilisera une notation redondante pour les r´esultats interm´ediaires.
Une repr´esentation redondante [Avi61] est une repr´esentation dans une base en utilisant plus de chiffre que n´ecessaire pour repr´esenter tous les nombres.
Par exemple une notation en base 2 avec l’ensemble de chiffres{−1,0,1}est une repr´esentation redondante.
Cette redondance permet entre autres de r´ealiser l’addition sans pro- pagation de retenue, donc en temps constant, de deux nombres ´ecrits sous forme redondante, et a fortiori d’additionner en temps constant un nombre en base normale `a un r´esultat interm´ediaire ´ecrit sous forme redondante.
Ceci permet une r´eduction rapide des nombres du bitarray jusqu’`a un seul r´esultat sous forme redondante.
On travaillera ici en carry-save, c’est-`a-dire en notation redondante dans la base 2 avec l’ensemble de chiffres {0,1,2}. Chaque chiffre v d’un tel nombre sera repr´esent´e dans le circuit par deux valeurs binaires vc et vs, telles quev=vc+vs. La derni`ere ´etape est une addition classique permet- tant de convertir le r´esultat redondant en carry-save sous forme normale.
14
Addition en temps constant d’un nombre carry-savea=ac+aset d’un nombre binaire b
2.1 G´ en´ eration des produits partiels
Classiquement, on g´en`ere le bitarray simplement en multipliant le multi- plicande par chaque chiffre du multiplicateur. En binaire, cela correspond `a une grillen×nde portes AND implantant la table de multiplication binaire pour chaque produit partiel.
a) g´en´eration des produits partiels binaires sans recodage pour un multiplieur4×4 b) bitarray et produit final ‘pour un multiplieur 16 bits sans recodage
Il est possible de g´en´erer un bitarray de taille r´eduite en recodant le mul- tiplicateur sous forme redondante de fa¸con `a annuler certains de ses chiffres
`
a des places fixes connues. Ainsi des ´etages du bitarray seront toujours nuls, et on pourra les ignorer lors de la r´eduction. On peut ainsi d’une part r´eduire le coˆut mat´eriel de l’´etape de r´eduction, au prix d’un recodeur, et d’autre part gagner en temps, puisque le bitarray est additionn´e plus rapidement, toujours au prix du temps perdu dans le recodeur. Cette perte de temps sera moins importante dans la pratique que lors des simulations, car c’est lors de la formation des produits partiels que la sortance est la plus importante, on devra donc ajouter des circuits d’amplification qui pour le recodage seront
fondus dans le circuit de recodage. On verra qu’il faudra tester des solutions qu’habituellement on ne retient pas pour le synchrone, et qui en asynchrone pourraient ˆetre beaucoup plus avantageuses.
2.1.1 Recodage de Booth-2 [Boo51]
Ici on recode le multiplicateur en notation de type chiffre sign´es dans l’ensemble{−2,−1,0,1,2}, en assurant qu’au moins un chiffre sur deux soit nul, c’est `a dire en ´eliminant un ´etage sur deux du bitarray pour gagner sur le coˆut mat´eriel de la r´eduction.
Par exemple 10110001101 est recod´e en 1020¯2010¯101, on annule bien un chiffre sur deux.
Bitarray et produit final pour un multiplieur 16 bits avec recodage Booth2.
S est le signe du nombre par lequel on multiplie le multiplicande
Table de s´election des produits partiels Bits du multiplieur S´election
000 +0
001 +multiplicande
010 +multiplicande
011 +2×multiplicande
100 −2×multiplicande 101 −multiplicande 110 −multiplicande
111 −0
Ce recodage se traduira en mat´eriel par un circuit qui d’apr`es certains bits du multiplicateur (ici trois) sera capable en temps constant de choisir le multiple -1, 0 ou 1 du multiplicande cr´e´e au pr´ealable. On note par la suite M le multiplicande.
Dans l’´etude on suppose une notation des nombres n´egatifs en compl´ement
`
a deux. Le bitarray obtenu voit sa hauteur ramen´ee `a d(n+ 2)/2e (o`unest le nombre de bits du multiplicateur) et sa forme modifi´ee. C’est le recodage le plus souvent utilis´e.
G´en´erateur avec recodage Booth2 pour une ligne du bitarray dans un multiplieur 16 bits
2.1.2 Recodage de Booth-3
Booth-3 consiste en un recodage dans l’ensemble de chiffres{−4,−3,· · ·,3,4}, et on ´elimine cette fois ci deux ´etages sur trois, soit un bitarray de hauteur d(n+ 3)/3e en analysant pour chaque ´etage quatre bits du multiplicateur.
Le circuit de codage est un peu plus compliqu´e, mais la raison pour laquelle ce recodage est rarement utilis´e en synchrone est la pr´esence du multiple trois, qui ne peut pas ˆetre obtenu avec un simple d´ecalage du multiplicande, en temps constant. La g´en´eration de ce multiple ’difficile’ se fait `a l’aide d’un additionneur suppl´ementaire calculant 2×x+x, qui rajoute un coˆut mat´eriel correspondant `a un additionneur de taille n+ 2. Grˆace aux propri´et´es des circuits asynchrones, on esp`ere pouvoir pallier la perte de temps induite par cette addition. En effet, l’addition en synchrone prend un temps au pire cas en O(n), voire en O(logn) pour les meilleur additionneurs, alors qu’en asynchrone le temps moyen va pour un additionneur de type propagation de retenue de O(logn) `a un th´eorique mais peu r´ealisable O(log logn). En pratique on utilisera un additionneur `a saut de retenue pr´esent´e dans [Tis97]
qui calcule enO(√ logn).
D’autre part, on peut aussi gagner du temps dans la partie qui, `a partir du multiplicateur recod´e choisit le multiple qui sera dans le bitarray. En effet, si on sait que le multiple 3M n’est pas celui s´electionn´e, la table de transition du AND pour un circuit asynchrone montre qu’il suffit qu’une des deux entr´ees soit `a 0 pour que la sortie bascule `a 0. On n’a pas besoin d’attendre la g´en´eration des multiples inutiles pour donner les donn´ees au bitarray, d`es que les fils de s´election M, 2M et 3M ont une valeur valide. Si le multiple est 3M, on est capable en asynchrone d’utiliser chacun des chiffres du r´esultat aussitˆot qu’il est disponible ind´ependamment des autres, mˆeme
s’ils ne sont pas encore calcul´es.
bitarray et produit final pour un multiplieur 16 bits avec recodage Booth3
Table de s´election des produits partiels pour Booth3
Bits du multiplieur S´election Bits du multiplieur S´election
0000 +0 1000 −4×multiplicande
0001 +multiplicande 1001 −3×multiplicande
0010 +multiplicande 1010 −3×multiplicande
0011 +2×multiplicande 1011 −2×multiplicande
0100 +2×multiplicande 1100 −2×multiplicande
0101 +3×multiplicande 1101 −multiplicande
0110 +3×multiplicande 1110 −multiplicande
0111 +2×multiplicande 1111 −0
recodeur Booth3
2.1.3 Recodage de Booth-4
On poursuit la d´emarche, cette fois ci dans l’ensemble de chiffres{−8,−7,· · ·,7,8}.
Les multiples difficiles sont ici 3, 5 et 7 (6 se d´erive de 3 par un d´ecalage en temps constant). 7 se calcule par une seule addition 8.x+ (−x), car −xest
g´en´er´e en temps constant. Le bitarray sera de hauteurd(n+ 4)/4e, mais au prix d’un codeur de Booth encore plus compliqu´e, qui calcule toujours en temps constant, et de trois additionneurs de taillesn+ 2,n+ 3 etn+ 3 pour les multiples 3, 5 et 7 respectivement.
Je n’ai pas ´etudi´e les recodages suivants car pour Booth-5 les multiples difficiles sont 3, 5, 7, 9, 11, 13 et 15 parmi lesquels 11 et 13 n´ecessitent 2 additions successives.
Table de s´election des produits partiels pour Booth4
Bits du multiplieur S´election Bits du multiplieur S´election
00000 +0 10000 −8×multiplicande
00001 +multiplicande 10001 −7×multiplicande
00010 +multiplicande 10010 −7×multiplicande
00011 +2×multiplicande 10011 −6×multiplicande
00100 +2×multiplicande 10100 −6×multiplicande
00101 +3×multiplicande 10101 −5×multiplicande
00110 +3×multiplicande 10110 −5×multiplicande
00111 +4×multiplicande 10111 −4×multiplicande
01000 +4×multiplicande 11000 −4×multiplicande
01001 +5×multiplicande 11001 −3×multiplicande
01010 +5×multiplicande 11010 −3×multiplicande
01011 +6×multiplicande 11011 −2×multiplicande
01100 +6×multiplicande 11100 −2×multiplicande
01101 +7×multiplicande 11101 −multiplicande
01110 +7×multiplicande 11110 −multiplicande
01111 +8×multiplicande 11111 −0
2.2 R´ eduction des produits partiels
Le bitarray g´en´er´e pr´ec´edemment doit `a pr´esent ˆetre r´eduit `a un seul nombre, en carry-save la plupart du temps, car l’addition en carry-save se fait en temps constant en ´evitant la propagation de retenue de l’addition classique. Le travail sur cette ´etape consiste `a trouver l’organisation des cellules full adder qui permettra la r´eduction la plus rapide du bitarray. De nombreuses tactiques existent qui sont d´evelopp´ees depuis les ann´ees 60.
2.2.1 R´eseau cellulaire de Braun [Bra63]
C’est le r´eseau le plus simple, qui correspond `a la m´ethode ’`a la main’ :
`
a chaque ´etage, on ajoute `a l’accumulateur un nouveau produit partiel.
Il en r´esulte un r´eseau extrˆemement r´egulier `a la fois du point de vue du placement des cellules et du routage. Cependant, les produits partiels sont g´en´er´es simultan´ement alors qu’ils sont additionn´es successivement, ce qui veut dire que les derniers produits additionn´es ’attendent’ pour ˆetre ajout´es au r´esultat interm´ediaire. Cette tactique est tr`es adapt´ee pour une impl´ementation it´erative, mais reste trop lente pour une multiplication haute performance.
un r´eseau de Braun pour une multiplication 5 bits
2.2.2 M´ethode de Wallace [Wal64]
De mani`ere g´en´erale, on va privil´egier des r´eductions sous forme arbo- rescente plus rapides qui ´equilibrent les d´elais en additionnant ensemble les r´esultats interm´ediaires du bitarray de fa¸con plus judicieuse que Braun : on va additionner ensemble les bits sortant du g´en´erateur de produits partiels, disponibles au temps t, puis les r´esultats de ces additions, au temps t+ 1 et ainsi de suite. Chaque ´etage ainsi constitu´e r´eduit trois nombres en deux (soit un nombre carry save), donc r´eduit la hauteurhdu bitarray `a d3h/2e.
La hauteur de l’arbre de r´eduction est proportionnelle au logarithme de la taille des op´erandes, avec un temps constant pour la travers´ee de chaque
´etage. Le calcul en parall`ele permet d’avoir une r´eduction du bitarray en tempsO(logn) contreO(n) pour un r´eseau de type Braun.
Une premi`ere m´ethode, propos´ee par Wallace, utilise des structures ap- pel´ees arbres de Wallace, qui sont en fait des compteurs : un arbre de Wallace 3 est un full adder, qui prend 3 bits de poids 0 et rend deux bits de poids 0 et 1 correspondant `a la somme des bits d’entr´ee. Il est possible de cr´eer un arbre de Wallace de n’importe quel ordre en composant des full adders et des half adders. Ces arbres calculent la somme de leurs bits d’entr´ee en temps logarithmique.
a) Arbre de Wallace 3 (Full-adder) b) Arbre de Wallace 5
c) Arbre de Wallace 5 compos´e d’arbres de Wallace 3
Historiquement, un multiplieur de Wallace est un multiplieur compos´e de sous multiplieurs 4×4 produisant un bitarray qui sera r´eduit par des arbres de Wallace. Pour que cette solution soit avantageuse, il faut bien entendu que les petits multiplieurs soient implant´es directement en mat´eriel.
Multiplieur de Wallace 16 bits
S´emantiquement l’arbre de Wallace r´eduit les produits partiels du bitar- ray ’au plus tˆot’.
2.2.3 M´ethode de Dadda [Dad76]
A l’oppos´` e, la m´ethode de Dadda profite du fait que l’on connait le taux de compression maximum d’un ´etage (soitd3h/2e) pour minimiser le nombre de composants utilis´es : Sachant que d’une hauteur de bitarray de 9 on va
r´eduire jusqu’`a une hauteur de 6, on va faire ’le minimum’ pour obtenir une hauteur de 6. En appliquant cette tactique ’au plus tard’, on assure de minimiser le coˆut mat´eriel.
a) r´eductions successives du bitarray par la m´ethode de Dadda pour un multiplieur 5 bits
b) Circuit de l’additionneur obtenu [Mul89]
2.2.4 M´ethode d’Oklobdzija
Oklobdzija a pr´esent´e dans [Okl95] et [Okl96-2] une m´ethode algorith- mique pour obtenir l’arbre de r´eduction de d´elai minimum : `a chaque produit partiel du bitarray on associe sa date th´eorique de g´en´eration, et on cherche
`
a additionner ces bits en privil´egiant ceux qui sont g´en´er´es le plus tˆot. Il en d´ecoule deux nouveaux produits, apr`es un temps ´egal au d´elai d’une cel- lule full adder, que l’on ajoute dans le bitarray. En r´ealisant ainsi l’arbre de r´eduction jusqu’`a n’avoir plus que deux bits au maximum de chaque poids, soit un r´esultat en carry-save, on assure avoir minimis´e le temps de r´eduction.
2.3 Addition finale
Le r´esultat de l’´etape de r´eduction est un nombre en carry-save, soit deux nombres binaires qu’il reste `a additionner pour obtenir le r´esultat final. Pour optimiser cette ´etape, on veut adapter l’addition finale au profil temporel d’arriv´ee des bits de diff´erents poids afin de r´ealiser l’addition le plus vite possible. En synchrone, c’est un probl`eme difficile qu’on r´esout souvent en composant plusieurs types d’additionneurs [Okl96-1], typiquement un addi- tionneur lent du type propagation de retenue, puis un additionneur rapide, g´en´eralement `a anticipation de retenue et enfin un additionneur `a s´election de retenue qui peut anticiper la retenue sortante de l’´etape pr´ec´edente.
En asynchrone par contre, il est possible d’anticiper les retenues lorsque deux des trois bits additionn´es sont identiques : si ils valent 0, la retenue vaudra toujours 0, et r´eciproquement pour 1. C’est cette propri´et´e qui per- met de passer d’un temps enO(n) en calcul synchrone pour l’additionneur `a
propagation de retenue `a O(logn) de temps de calcul moyen en asynchrone.
En brisant cette chaˆıne de d´ependance aux retenues pr´ec´edentes, on arrive
`
a un profil d’arriv´ee en sortie de l’additionneur o`u tous les bits arrivent en mˆeme temps, alors qu’en synchrone les bits de poids fort arrivent apr`es les bits de poids faible. Il n’est pas utile de composer plusieurs additionneurs de types diff´erents, un seul suffit.
On pr´esente dans l’´etude deux additionneurs asynchrones : l’additionneur
`
a propagation de retenue (Ripple-carry-adder, RCA) modifi´e pour le calcul asynchrone, capable calculer les retenues au plus tˆot, et l’additionneur `a saut de retenue pr´esent´e par Tisserand dans [Tis97] (Carry-skip-adder, CSkA), capable de calculer en O(√
logn). Ces deux additionneurs sont suffisants, car les additionneurs asynchrones plus rapides, capables de calculer jusqu’`a une vitesse de O(log logn) [Che00], sont compliqu´es `a implanter et ne sont pas rentables pour des tailles d’op´erandes courantes `a cause des grandes constantes devant le terme log logn.
Structure d’un additionneur Carry-Skip
Chapitre 3
Protocole exp´ erimental
Dans un premier temps, je vais comparer les diff´erents algorithmes sui- vant la vitesse et la taille de l’op´erateur obtenu. Pour des tailles d’op´erandes r´ealistes, de 8 `a 64 voire 128 bits, la complexit´e asymptotique n’est pas int´eressante et j’ai plutˆot choisi de r´ealiser des simulations proches du mat´eriel.
Dans un deuxi`eme temps, j’ai propos´e un nouvel algorithme d´eriv´e du r´eseau de Braun, et des modifi´e les algorithmes existants pour les adapter au calcul asynchrone.
La contrainte de taille est elle aussi importante, puisque non seulement de grands circuits coˆutent plus cher en raison de la surface de silicium occup´ee, mais aussi parce qu’un circuit plus grand a plus de chance d’ˆetre d´efectueux lors de sa fabrication.
Une derni`ere grandeur `a prendre en compte est la consommation d’´energie, puisque celle-ci influe sur l’autonomie des appareils portables qui devient de plus en plus critique avec l’´evolution des technologies. Pour des circuits double rail non it´eratifs tels que ceux consid´er´es ici, chaque cellule r´ealise exactement une transition sur chacune de ses sorties quelles que soient les valeurs d’entr´ee. La consommation d´epend donc directement du nombre de cellules de l’op´erateur et de leur nature. On va chercher `a la minimiser en privil´egiant les circuits requi´erant peu de portes.
3.1 Hypoth` eses de travail
La vitesse d’un op´erateur asynchrone est difficile `a caract´eriser, car le temps de calcul d´epend directement des donn´ees en entr´ee. On va suppo- ser pour cette ´etude que les op´erandes sont al´eatoires avec pour chaque chiffre binaire ´equiprobabilit´e d’obtenir un 0 ou un 1. Cette hypoth`ese n’est pas toujours raisonnable dans un calcul sur ordinateur, particuli`erement si le multiplieur est destin´e au traitement du signal. Il suffira lors des tests comparatifs de g´en´erer des vecteurs adapt´es `a l’application. La vitesse est caract´eris´ee par le temps moyen de calcul, sa variance, son ´ecart-type et sa distribution. On calcule aussi l’intervalle de confiance pour chaque test r´ealis´e afin de v´erifier sa validit´e.
On va effectuer des simulations logiques, en supposant que les transitions de signaux sont instantan´ees. L’utilisation du codage double rail garantit
24
l’abscence de transitions parasites (glitches). On va aussi ne pas prendre en compte le placement et le routage entre les portes, qui n´ecessitent des outils complexes. Dans les circuits arithm´etiques ´etudi´es, les cellules sont suffisamment proches et les fils assez courts pour que le d´elai qu’ils induisent soit n´egligeable, et leurs effets comparables sur les diff´erent algorithmes.
Un dernier probl`eme serait la sortance, c’est-`a-dire l’influence du nombre de cellules aliment´ees en sortie par une porte logique sur le d´elai de celle-ci, mais nous ne disposons pas d’outils adapt´es `a l’´etude de ce paramˆetre
3.2 Le simulateur
Il existe deux grands types de simulateurs pour les circuits : les simula- teurs ´electriques de type SPICE r´esolvent le syst`eme d’´equations ´electriques du circuit. On obtient ainsi des r´esultats tr`es fins `a la fois pour le d´elai des portes et la consommation d’´energie. Cependant la r´esolution du syst`eme complet est tr`es compliqu´ee et ne permet pas le test de grands circuits.
D’autre part le calcul en temps moyen impose une ´etude statistique du cir- cuit, au moins 10000 entr´ees pour un r´esultat pr´ecis, ce qui est irr´ealisable avec un simulateur ´electrique. Les simulateurs logiques existants quant `a eux effectuent une simulation logique plus rapide, mais ils utilisent des descrip- tions au format VHDL (Very high speed integrated circuit Hardware Des- cription Language), ce qui est trop rigide pour permettre des g´en´erations automatiques d’op´erateurs de taille et de composition variables. D’autre part ils ne poss`edent pas, pour le moment, de biblioth`eque de portes pr´evue pour la simulation des circuits asynchrones double rail. Enfin ils ne sont toujours pas assez rapides pour une ´etude statistique.
Pour r´ealiser des mesures statistiques des temps de calcul des diff´erents op´erateurs, on a besoin d’un simulateur tr`es rapide qui permette aussi de g´en´erer des op´erateurs de n’importe quelle taille avec diff´erents recodages, arbres de r´eductions, et de modifier diff´erents paramˆetres.
Puisqu’on veut effectuer des simulations r´ealistes d’un point de vue mat´eriel, on utilise une biblioth`eque de portes d´evelopp´ee pour le codage double rail par Arnaud Tisserand.
J’ai donc ´ecrit un simulateur d´edi´e en C++, de type ´ev´enementiel, c’est
`
a dire qu’on y traite s´equentiellement une liste tri´ee chronologiquement de transitions du circuit, qui vont faire basculer des portes dans de nouveaux
´etats, entraˆınant de nouvelles transitions sur leurs sorties qui seront ajout´ees
`
a la liste d’´ev´enements. Lorsque la liste est ´epuis´ee, le circuit est stable et l’´evaluation termin´ee.
La totalit´e du code du simulateur repr´esente 500 lignes, et les fonctions pour la g´en´eration des ´el´ements des diff´erents multiplieurs plus de 2000 lignes. Une biblioth`eque de cellules simple comme celle utilis´ee repr´esente quant `a elle 1600 lignes. Je n’ai pas repris le simulateur ´ecrit par Nicolas Boullis [Bou01] destin´e au diviseurs asynchrones, qui ´etait trop rigide pour permettre une g´en´eration rapide de multiplieurs de diff´erentes compositions et des modifications rapides des paramˆetres de la biblioth`eque de portes.
La programmation objet permet ici d’appr´ehender de fa¸con plus intuitive la
structure des circuits d´ecrits en C++.
Le r´esultat d’une simulation est un fichier contenant les donn´ees statis- tiques de l’op´erateur, vitesse et distribution des temps de calcul, sa surface, un fichier avec la courbe de r´epartition des temps de calcul pour l’op´erateur et un fichier avec la courbe des temps de calcul moyens pour chaque bit du r´esultat, qui permet de voir quels bits pourront par exemple ˆetre exploit´es le plus tˆot ou lesquels sont critiques pour la vitesse de l’op´erateur entier.
3.3 Modification des algorithmes
Pour tirer les meilleures performances d’un algorithme en asynchrone, on ne cherche plus comme en calcul synchrone `a minimiser le pire cas possible, qui repr´esente une course critique, mais le cas moyen, c’est `a dire les cas les plus nombreux, parfois au d´etriment de cas lents plus rares qui seront rallong´es. Par exemple pour l’additionneur `a propagation s´equentielle de retenue, la mise en place d’un m´ecanisme permettant de fournir les retenues le plus tˆot possible complique la cellule, sans pour autant am´eliorer les cas difficiles de l’additionneur synchrone (ceux o`u les bits d’entr´ee d’un mˆeme rang sont 0 et 1, donc qui demandent d’attendre la retenue pr´ec´edente).
Cependant ce m´ecanisme permet de briser la chaˆıne critique de propagation des retenues dans les autres cas, c’est `a dire quand il existe des couples de bits identiques au mˆeme rang, donc une possibilit´e de pr´evoir la retenue suivante (g´en´eration de retenue `a 0 ou 1). La longueur moyenne d’une chaˆıne de propagation de retenue pour des op´erandes de taille n al´eatoires avec
´equiprobabilit´e d’obtenir 1 ou 0 est proportionnelle `a log2(n) : c’est la vitesse moyenne de l’additionneur `a propagation de retenue asynchrone.
Le mˆeme principe s’applique pour la multiplication. Pour cela les cellules full adder de la biblioth`eque de portes ont ´et´e d´eclar´ees de fa¸con `a pouvoir fournir la retenue sortante aussi tˆot que possible, et j’ai fait de mˆeme avec toutes les autres cellules : un AND est capable de sortir un 0 en sortie d`es qu’une de ses entr´ees vaut 0, sans attendre de connaˆıtre la valeur de l’autre, un OR fournit un 1 en sortie d`es qu’une de ses entr´ees vaut 1. En proc´edant ainsi pour toutes les cellules de la biblioth`eque on est capable de gagner un temps important par rapport `a une simple transposition depuis le domaine synchrone.
Les valeurs obtenues lors de ces tests sont analys´ees au chapitre suivant.
3.3.1 Modification de la m´ethode d’Oklobdzija
J’ai adapt´e directement les strat´egies de Braun, Wallace et Dadda dans cette biblioth`eque de portes, car celles-ci reposent sur des algorithmes fix´es et non flexibles.
Par contre la m´ethode d’Oklobdzija ´etudie en calcul synchrone les temps de propagation `a travers l’arbre de r´eduction afin de les minimiser, temps qui pour le calcul asynchrone ne sont plus constants : un full adder dont deux entr´ees sont valides et identiques peut fournir une retenue sortante sans attendre la troisi`eme entr´ee : son d´elai est donc variable.
A cause de cette d´` ependance temporelle aux donn´ees au niveau mˆeme des portes, le temps pris en compte dans le mod`ele ne sera jamais exact, et l’arbre de r´eduction non optimal.
J’ai test´e plusieurs mani`eres d’estimer de fa¸con r´ealiste ce temps, par exemple une simple moyenne arithm´etique des temps extrˆemes possibles, jusqu’`a des calculs statistiques sur les probabilit´es d’obtenir 0 ou 1 `a chaque endroit de l’arbre. Cette derni`ere m´ethode plus proche de la r´ealit´e conduit
`
a une am´elioration des performances, mais entraˆıne un surcoˆut de calcul important. Cependant, quelle que soit la m´ethode choisie, il s’agit d’une m´ethode statistique dont on ne pent garantir qu’elle est optimale, car les probabilit´es d’obtenir 0 ou 1 d´ependent `a la fois des vecteurs d’entr´ee et du mode de g´en´eration des produits partiels (avec ou sans recodage).
Pour les tests, j’ai utilis´e la m´ethode statistique analysant les probabilit´es d’apparition des 0 et des 1 dans l’arbre de r´eduction.
3.3.2 Modification du r´eseau de Braun
Les performances m´ediocres du r´eseau de Braun, en synchrone et en asynchrone, viennent du fait que les multiples sont ajout´es s´equentiellement au r´esultat interm´ediaire. J’ai modifi´e le routage du r´eseau s´equentiel afin d’obtenir un arbre de r´eduction fonctionnant en temps logarithmique, tout en gardant la mˆeme configuration mat´erielle, donc un placement r´egulier. Il suffit d’additionner sur les premi`eres lignes tous les produits partiels, puis les r´esultats suivants par strates successives jusqu’`a obtenir un dernier nombre en carry-save. On appelera par la suite un tel arbre de r´eduction un r´eseau de Braun modifi´e
Cette m´ethode pourtant simple arrive pour d’autres biblioth`eques de portes mat´erielles que celle utilis´ee dans les simulations `a surpasser la m´ethode d’Oklobdzija.
un r´eseau de Braun modifi´e pour une multiplication 5 bits
Chapitre 4
R´ esultats et analyse
4.1 Les tests
J’ai r´ealis´e des tests sur plusieurs algorithmes : sans recodage, les r´eductions de Braun, par arbres de Wallace, Braun modifi´e, Dadda et Oklobdzija. J’ai aussi test´e ces trois derni`eres r´eductions pour les recodages de Booth 2, 3 et 4.
Tous les tests sont r´ealis´es avec, dans les recodeurs et pour l’addition finale, un additionneur `a propagation de retenue s´equentielle asynchrone car l’utilisation d’un additionneur `a saut de retenue ne donne pas ici des r´esultats r´ealistes pour plusieurs raisons : premi`erement les multiplexeurs des blocs de l’additionneur carry-skip ont dˆu ˆetre implant´es `a l’aide d’un AO22 (deux And dont les sorties sont branch´ees sur les entr´ees d’un OR), alors qu’un composant sp´ecialis´e plus rapide permettrait de meilleures performances, le multiplexeur ´etant un ´el´ement cl´e de l’additionneur carry-skip. D’autre part les blocs de l’additionneur, qui additionnent 3 bits et permettent le saut de retenue, sont le plus souvent implant´es au niveau du transistor dans la biblioth`eque de portes. Un additionneur carry-skip r´ealis´e `a l’aide de portes logiques ne refl`ete donc pas la r´ealit´e.
4.2 Simulation et r´ esultats
Tous les algorithmes ont ´et´es test´es pour des tailles d’op´erandes de 8, 16, 32 et 64 bits, sur 50000 jeux de donn´ees pour les op´erandes de taille jusqu’`a 32, 5000 pour les algorithmes multipliant 64 bits. On arrive `a un facteur de risque inf´erieur au demi pourcent pour les tailles jusqu’`a 32, inf´erieur `a 2 pourcents pour la taille 64.
Les tests se sont d´eroul´es en parall`ele sur plusieurs ordinateurs du labo- ratoire pendant un mois, et repr´esentent plusieurs mois de calcul sur un seul ordinateur.
Les d´elais et surfaces sont exprim´es en unit´es arbitraires bas´es sur les valeurs donn´ees dans la biblioth`eque de portes asynchrones double rail d’Ar- naud Tisserand. Comme on l’a d´ej`a vu, en calcul asynchrone double rail, la surface du circuit donne une indication la consommation. Une meilleure es- timation demanderait l’utilisation de m´ethodes plus pr´ecises, typiquement
28
un solveur ´electrique de type SPICE, incompatible avec l’´etude statistique r´ealis´ee ici.
Si on consid`ere un multiplieur, pour un mˆeme recodage et un mˆeme additionneur final, alors les arbres de r´eductions de Dadda, Oklobdzija et Braun modifi´e, ainsi que le r´eseau de Braun couvrent la mˆeme surface de circuit, au routage pr`es. La r´eduction par arbres de Wallace couvre une plus grande surface car elle n’est pas optimale du point de vue du nombre de composants.
D´elai moyen/Taille des op´erandes sans recodage
Taille des Surface pour la Surface pour les op´erandes r´eduction par arbres autres strat´egies
de Wallace de r´eduction
8 1431 1408
16 6275 6144
32 26247 25600
64 106061 10448
Surface du multiplieur en fonction de la taille des op´erandes sans recodage
D´elai moyen/Taille des op´erandes avec recodage Booth2
Le graphe obtenu est tr`es semblable pour les recodages Booth 3 et Booth4.
En particulier l’ordre des arbres en termes de performances reste le mˆeme : Oklobdzija le plus rapide, puis Braun modifi´e puis Dadda.
Surface en fonction du recodage pour une taille d’op´erandes de 32 bits
D´elai en fonction du recodage pour une taille d’op´erandes de 32 bits, avec une r´eduction d’Oklobdzija
4.3 Analyse des r´ esultats
On constate que le r´eseau de Braun s´equentiel montre une progression lin´eaire de sa vitesse qui le rend inutilisable en pratique.
D’autre part l’algorithme d’Oklobdzija reste dans tous les cas le plus per- formant, avec une vitesse tr`es proche de celle du r´eseau de Braun modifi´e (les courbes de vitesse sont mˆeme confondues dans le cas sans recodage), et la r´eduction de Dadda est l´eg`erement plus lente. L’augmentation de surface est exponentielle dans tous les cas, et semble in´evitable pour un circuit non it´eratif.
On remarque aussi que le recodage p´enalise les performances : ceci est dˆu en partie au fait qu’on ne prend pas en compte les probl`emes de sortance, qui en pratique ralentiraient les algorithmes sans recodage, alors qu’un circuit avec recodage peut inclure l’amplification des signaux dans le circuit de recodage. Lorsque la diff´erence de vitesse entre les portes AND, OR et XOR par rapport au Full adder est plus marqu´ee, le recodage Booth 2 permet d’am´eliorer les performances de fa¸con importante.
Le gain en surface est important quand on recode jusqu’`a Booth3, puis le surcoˆut induit par le recodeur de Booth de plus en plus complexe et le circuit de s´election des multiples plus grand, ainsi que les additionneurs calculant les multiples difficiles rend la surface totale plus grande qu’un algorithme sans recodage. Un recodage de Booth 4 est ici sans int´erˆet.
L’utilisation d’un recodage de Booth 2 me semble ˆetre un bon compromis
entre vitesse et surface.
D’autre part le choix de Braun modifi´e comme arbre de r´eduction peut ˆetre judicieux, car cet arbre est tr`es proche de la m´ethode d’Oklobdzija pour les performances, et poss`ede l’avantage d’ˆetre extrˆemement r´egulier, ce qui constitue un avantage fort pour l’implantation mat´erielle.
Chapitre 5
Conclusions et perspectives
5.1 Conclusion sur la multiplication asynchrone
Dans la biblioth`eque de portes utilis´ee, la diff´erence de vitesse ´etait peu marqu´ee entre les portes logiques et le full adder, ce qui a p´enalis´e les per- formances du recodage. Cependant un recodage Booth 2 permet un gain de surface au prix d’une perte de vitesse peu importante.
Adapter la m´ethode d’Oklobdzija pour le calcul asynchrone m’a demand´e beaucoup de temps `a cause des d´elais variables dans les composants, aux- quels il faut toujours penser en asynchrone, alors que l’algorithme beaucoup plus simple `a concevoir du r´eseau de Braun modifi´e donne des performances tr`es proches, et poss`ede un avantage pour le placement des composants.
5.2 Travail restant ` a faire
Il existe d’autres algorithmes de multiplication potentiellement int´eressant
`
a ´etudier dans le cas asynchrone, par exemple les d´ecompositions r´ecursives (du type d´ecrit dans [Vui83]). D’autre part il faudrait compl´eter la bi- blioth`eque double rail en y int´egrant des composants sp´ecialis´es performants pour l’additionneur carry-skip qui pourraient rendre plus int´eressant les re- codages Booth 2 et 3, trop lents, qui permettent une r´eduction importante de la surface du circuit.
La multiplication asynchrone en temps moyen est int´eressante en termes de performances, particuli`erement utilis´ee dans des algorithmes it´eratifs.
C’est le cas pour les calculs de fonctions ´el´ementaires, bas´ees sur un sch´ema de H¨orner dans tous les processeurs.
33
Bibliographie
[Avi61] A.AvizienisSigned-digit number representations for fast paral- lel arithmetic, IRE transactions on Electronic Computers 10 (1961), p. 389-400, Reprinted in E. E. Swartzlander, Computer Arithmetic, Vol. 2, IEEE Computer Society Press Tutorial, 1990.
[Boo51] A.D. Booth A Signed Binary Muliplication Technique, Qar- terky J. Mechanical Applications in Mathematics, vol 4, 1951, p.236-240.
[Bou01] N. Boullis Algorithmes de division pour les circuits asyn- chrones, Rapport de DEA, ´Ecole Normale Sup´erieure de Lyon, 2001.
[Bra63] E.L.Braun Digital Computer Design New York Academic, 1963
[Che00] F.-C. Cheng, S.H. Unger et M. Theobald Self-Timed Carry-Lookahead Adders, IEEE Transactions on Compu- ters, Vol 49, juillet 2000, p. 659-672.
[Dad76] L. Dadda On Parallel Digital Multipliers Alta freq., vol 45, 1976, p. 574-580.
[Erc03] M.D. Ercegovac et T. Lang Digital Arithmetic, Morgan Kaufmann Publishers, 2003.
[Mar90] A. J. MartinThe limitations to delay-insensivity in asynchro- nous circuits, Sixth MIT Conference on Advanced Re- search in VLSI (W. J.Dally ´ed.), MIT Press, 1990, p.
263-278.
[Mar00] P. MarksteinIA-64 and elementary functions, Prentics-Hall PTR, 2000.
[Mul63] D.E. Muller. Asynchronous logics and application to infor- mation processing, In H. Aiken and W. F. Main, edi- tors, Proc. Symp. on Application of Switching Theory in Space Technology, Stanford University Press, 1963, p.289–297.
[Mul89] J.-M. Muller Arithm´etique des ordinateurs, Masson, 1989.
[Okl95] V.G. Oklobdzija et D. Villeger Improving Multiplier design by Using Improved Column Compression Tree and Optimized Final Adder in CMOS Technology, IEEE Transactions on VLSI Systems, bol 3, juin 1995, p-292-300.
34
[Okl96-1] V.G. Oklobdzija et P.F. Stelling Design strategies for Op- timal Hybrid Final Adders in a Parallel Multiplier, Journal of VLSI Signal Processing 14, 1996, p.321-333.
[Okl96-2] V.G. Oklobdzija, D. Villeger et S. S. Liu A Method for Speed Optimized Partial Product Reduction and Generation of Fast Parallel Multipliers Using an Algorithmic Approach, IEEE Transactions on Computers, vol 45, mars 1996, p. 294- 305.
[Par00] B. Parhami Computer Arithmetic : Algorithms and hardware designs, Oxford University Press, 2000.
[Spa92] J. Sparsø, C. D. Nielsen, L. S. Nielsen, J. Stauns- trup, Design of Self-timed Multipliers : A Comparison, Tech- nical University of Denmark, Department of Computer Science Tech. Rep., 1992.
[Spa02] J. Sparsø, S.B. Furber, Principles of Asynchronous Circuit Design : A Systems Perspective, Kluwer Academic Publi- shers, April 2002.
[Sut89] I.E. Sutherland Micropipelines, Communications of the ACM, vol 32, juin 1989, p.720-738.
[Tis97] A. TisserandAd´equation arithm´etique architecture : probl`emes et ´etudes de cas, Th`ese, ´Ecole Normale Sup´erieure de Lyon, 1997.
[Vui83] J. VuilleminA very fast multiplication algorithm for VLSI im- plementation, Integration, the VLSI journal, 1983, p 39- 52.
[Wal64] C.S. WallaceA Suggestion for a Fast Multiplier IEEE Tran- sactions on Electronic Computers, vol 13, 1964, p. 14-17