• Aucun résultat trouvé

Propri´ et´ es des circuits asynchrones

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 parpar-tiels 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

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.

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 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 addiaddi-tionneur 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

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

Documents relatifs