Applications Opérateur de DCT
Nous faisons dans ce chapitre un récapitulatif des résultats en termes de surface et de chaîne longue que nous avons obtenus en appliquant nos différents algorithmes à plusieurs circuits arithmétiques. Ces résultats sont également comparés à ceux des architectures classiques de façon à montrer les améliorations obtenues.Toutes les architectures présentées ont été obtenues avec l’utilisation de la biblio- thèque de cellules précaractérisées de la chaîne Alliance [GP92] (en 0.35m) et les outils de placement/routage/analyse de timing de Cadence : Encounter.
Filtre
Comme on peut le voir, cette architecture ne contient ni soustraction ni opérateur avec sorties multiples. Les différents algorithmes s’utilisent donc avec uniquement la notation Carry-Save (et sans pré-traitement nécessaire) et sans une gestion spécifique en ce qui concerne les sorties multiples.Les résultats obtenus sont présentés dans les Figures 6.2 à 6.4. Ils résultent de l’optimisation de quatre versions différentes du filtre : 4 coefficients, valeurs sur 8 bits, 4 coefficients, valeurs sur 16 bits, 8 coefficients, valeurs sur 8 bits, 8 coefficients, valeurs sur 16 bits.Ces résultats montrent tout d’abord que tous les algorithmes améliorent la surface et la chaîne longue, par rapport à une implantation en arithmétique classique. On re- marque ensuite que chacun des algorithmes donne un résultat différent :
Comparons tout d’abord les deux algorithmes de labellisation. L’algorithme d’allo- cation optimale améliore le délai au détriment de la surface par rapport à l’algorithme redondant dès que possible : en effet, le choix est fait de transformer uniquement trois multiplieurs dans leur version redondante (et donc laisser 1 multiplieur dans sa ver- sion classique, pour 4 coefficients, 5 pour 8 coefficients, …), de façon à ce qu’au moins un additionneur de la chaîne longue (entre la sortie du premier registre et la sortie du circuit) soit un additionneur mixte et plus un additionneur redondant.
Cependant, le résultat obtenu par l’algorithme d’allocation optimale est moins per- formant que celui donné par la reconnaissance de motifs. En effet, alors que les al- gorithmes de labellisation « ne font que » modifier l’architecture choisie pour chaqueopérateur et pas la connectique, l’ensemble de motifs choisi exploite les propriétés de commutativité et d’associativité de l’addition pour effectuer de légères modifications à la connectique d’un circuit. Cette différence engendre qu’il y a au moins un addition- neur de moins dans la chaîne longue de l’architecture générée par l’algorithme basé sur la reconnaissance de motifs.
Unité de calcul de distance
L’architecture d’une unité de calcul de distance (DCU : Distance Computation Unit) est composée de deux parties, comme montré dans la Figure 6.6 [DBM01]. La première effectue le calcul de la distance (Ai Bi)2, tandis que la seconde effectue la somme entre ces distances.Cet opérateur contenant des soustractions, nous présentons les résultats obtenus avec les différentes façons de prendre en compte cette opération. Sont donc comparées trois différentes gestions de la soustraction : l’utilisation des architectures Carry-Save uniquement, après transformation des soustractions en additions (Carry-Save), et l’uti- lisation des architectures Borrow Save, les additionneurs ayant une sortie Carry-Save (Borrow-Save 1) ou Borrow-Save (Borrow-Save 2).
Dans l’article [DBM01], différentes implémentations d’une DCU ont été faites « à la main », en arithmétique classique et en arithmétique redondante. Les conclusions pré- sentées se résument à une optimisation du délai allant de 10% à 15% pour un surcoût en surface limité à 17%. De notre côté, le délai est amélioré de 21.4% à 26.1% selon l’al- gorithme utilisé, avec une surface tantôt améliorée (-1.3%), tantôt dégradée (+5.2%). Nous pouvons en conclure que nos différents algorithmes produisent un meilleur dé- lai couplé à un meilleur produit surface.délai.Borrow-Save sont plus appropriées que les architectures Carry-Save pour l’optimi- sation de circuits contenant des soustractions. En effet, l’utilisation d’architectures Borrow-Save dans ce cas permet l’utilisation d’un multiplieur redondant avec entrées Borrow-Save, alors que l’utilisation d’architectures Carry-Save uniquement oblige à effectuer une inversion sur l’entrée à soustraire et une addition à ’1’ avec un addition- neur.
Cet opérateur, quelque soit son implantation, possède de nombreux opérateurs avec sorties multiples, il est donc un bon exemple pour tester les trois comportements de la reconnaissance de motifs en cas de sorties multiples. Il contient également des soustractions, nous testons donc les trois façons de gérer cette opération.D’un point de vue temps d’exécution, on voit que l’algorithme de labellisation re- dondant dès que possible est, de loin, le plus rapide de tous. L’algorithme d’allocation optimale est lui le plus lent. Quant à la reconnaissance de motifs, elle est de plus en plus lente, plus l’option choisie en fonction des sorties multiples est complexe. En effet, là où seuls 3 motifs peuvent être remplacés quand on se limite à l’optimisation des arbres séparément (exemple de l’optimisation Carry-Save), l’optimisation sans partage de ressource permet d’en remplacer 12 (avec un surcoût de 9 instances dupliquées), ainsi que l’optimisation avec partage des ressources (qui contient également le post traitement permettant de fusionner 2 instances dupliquées inutilement).