• Aucun résultat trouvé

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

Documents relatifs