• Aucun résultat trouvé

Additionneur bit-série à entrées multiples

Dans le document Asynchronisme dans les rétines artificielles (Page 110-116)

5.3 Circuits asynchrones et synchrones dans les rétines artificielles :

6.1.3 Additionneur bit-série à entrées multiples

Cette structure et le mode de calcul qui lui est associé a été proposée par Alain Mérigot, Didier Dulac et Siamak Mohammadi [Dul96] [Moh96] [DMM95] à l’université d’Orsay dans les années 90 sous le nom de Maille Associative d’Orsay. Bien qu’antérieur de plus de dix ans par rapport à la précédente, elle présente des fonctionnalités plus avancées que cette dernière, en particulier l’addition bit-série à entrées multiples que nous avons évoqué précédemment. Ces fonctionnalités ont toutefois une contrepartie en terme de coût d’implantation électronique de chaque processeur élémentaire. Dans cette partie, nous détaillons cette architecture ainsi que l’algorithmique qui lui est associée.

Aspects algorithmiques

L’algorithmique associée à la maille associative d’Orsay est présentée et forma- lisée en détails dans la thèse de Bertrand Ducourthial [Duc00].

La Maille Associative d’Orsay constitue une implantation du modèle limité des ré-

seaux associatifs, permettant de définir des régions, ensembles de processeurs de

– direct-association lorsque l’association repose sur des opérateurs idempotents. Elle est exécutée sur un graphe symétrique (les connexions entre paires de pro- cesseurs sont bidirectionnelles). Les primitives régionales correspondant à ce compromis sont typiquement les fonctions logiques (OR, AND), le maximum et le minimum. L’algèbre booléenne nous permet d’exprimer ces différentes fonctions à l’aide d’une primitive électronique unique implantée dans chaque processeur élémentaire, l’opérateur logique OU .

– prefix-association lorsque l’association est exécutée sur un arbre couvrant (graphe dans lequel tout processeur élémentaire à un et un seul antécédent connecté par une connexion unidirectionnelle, à l’exception du point racine qui n’en a pas). La prefix-association permet les associations avec des opéra-

teurs non idempotents, le résultat devant être redistribué à chaque pixel de

la région ensuite (grace à un opérateur max par exemple). La primitive de ce type la plus importante pour le traitement d’image est la somme régionale. Elle nécessite d’avoir recours à un additionneur asynchrone dans chaque processeur élémentaire.

Architecture

Après avoir présenté les types d’associations utilisables dans la Maille Associa-

tive d’Orsay et les opérateurs qui lui sont associés, nous allons maintenant détailler

son architecture et en particulier l’architecture du processeur élémentaire. La pré- sentation est effectuée en référence à l’additionneur bit-série linéaire détaillé avant, de manière à faciliter la compréhension.

L’architecture du processeur élémentaire de la Maille Associative d’Orsay est celle d’un processeur élémentaire d’une machine massivement parallèle asynchrone ayant une largeur de donnée de1 bit. Elle peut être connectée à ses 8 voisins pour former un réseau de connexion 8-connexe. A l’instar de l’additionneur bit-série linéaire présenté précédemment, le processeur élémentaire de la maille associative d’Orsay n’est pas totalement asynchrone. Son architecture se divise en deux parties :

– Couche asynchrone mettant en oeuvre les communications et les calculs de primitives asynchrones régionales distribuées. Un additionneur unaire bit- série à 8 entrées fait notamment partie de cette couche asynchrone.

– Couche synchrone permettant les mouvements de données locaux et les opé- rations arithmétiques locales standards.

La couche asynchrone

Elle permet d’exécuter les calculs régionaux sous forme de propagation bit-série asynchrone.

6.1. Tour d’horizon des implantations asynchrones de la somme régionale dans les mailles

Considérons tout d’abord la fonction additionneur bit-série asynchrone correspon- dant à une prefix-association. Son mode de fonctionnement est similaire à celui de l’additionneur bit-série linéaire, à une différence majeure près, le nombre d’en- trées permettant de connecter la cellule aux voisins. Celui-ci est égal à 8 entrées (les 8 voisins) dans le cas de la maille associative d’Orsay. De plus, la retenue interne et le bit de donnée utilisés dans le calcul des opérations bit-série linéaires présentées précédemment sont ici fusionnés (ce qui nécessite d’effectuer des opéra- tions synchrones) et considérés comme une entrée supplémentaire de l’additionneur asynchrone (combinatoire). De fait, l’additionneur asynchrone placé à l’intérieur du chemin asynchrone doit comporter 9 entrées, 8 destinées aux données provenant des voisins, et la dernière destinée à une donnée locale. Le résultat de l’addition étant à valeurs dans [0, 9], il s’exprime sur 4 bits. Le bit de poids faible est trans- mis de manière bit-série vers les additionneurs situés en aval dans la chaîne, les 3 autres bits de retenue sont stockés dans la mémoire. Le multiplexeur permettant de choisir l’unique entrée active dans le cas de l’additionneur bit-série linéaire est ici remplacé par un masque permettant de sélectionner les entrées actives parmi les9 possibles. Ce masque permet d’établir des connexions fonctionnelles entre les pixels, et il permet donc de gérer localement la topologie reconfigurable dynami- quement de la maille associative d’Orsay.

Considérons à présent la fonction OU logique sur une région utilisé dans les asso-

ciations non prefix. Dans le cas de l’additionneur bit-série linéaire, l’élément local

permettant d’effectuer un OU à deux entrées est le bit de poids fort de la sortie du Full Adder. Il n’en est pas de même dans le cas de la maille associative d’Orsay, pour laquelle il est nécessaire d’utiliser un élément de circuit dédié au calcul d’un OU logique à 9 entrées placé en parallèle de l’additionneur à 9 entrées.

Les opérations nécessaires à la mémorisation des résultats, des retenues ou les opé- rations de calcul locales sont supportées par la couche synchrone qui sera décrite au paragraphe suivant.

La couche synchrone

L’étude approfondie de la couche synchrone est présentée dans la thèse de Didier Dulac [Dul96], nous ne donnons ici qu’un aperçu des fonctionnalités clés de cette couche. Cette couche synchrone se compose globalement d’une unité arithmétique et logique (ALU), de registres, et d’une mémoire. Outre les fonctions de calcul local synchrone que l’on peut trouver dans les différentes architecture SIMD, elle est également utilisée pour effectuer des calculs intermédiaires entre les phases de propagation d’une addition de type bit-série. Une de ces fonctions est à présent détaillée dans la mesure où elle a des répercutions sur l’implantation des registres de la couche synchrone.

Comme présenté précédemment, l’additionneur asynchrone présent dans chaque pixel a un nombre d’entrées égal à 9, soit une entrée de plus que le nombre de voisins. Si l’on regarde l’additionneur présent dans le processeur élémentaire de

Fig. 6.5 – Structure du processeur élémentaire (source [Moh96])

l’additionneur bit-série linéaire, force est de constater que son nombre d’entrée est 3, soit deux entrées de plus que son unique prédécesseur dans la chaîne. Cette différence provient du fait que dans le cas de l’additionneur bit-série linéaire, le calcul des différents bits de la somme peut s’effectuer séquentiellement avec juste un stockage de la retenue et le chargement du bit local à additionner entre deux itérations. Pour procéder de même dans le cas de la maille associative d’Orsay, il serait nécessaire à chaque calcul d’un bit de la somme, de stocker les3 bits de rete- nue générés. Pour calculer le bit suivant de la somme, il faudrait prendre en compte le bit de poids1 de la retenue (le bit de poids faible étant le bit de poids 0) généré lors du calcul d’addition bit-série précédent, le bit de poids 2 de la retenue généré lors du calcul d’addition bit-série effectué deux cycles plus tôt, et le bit de poids 3 de la retenue généré trois itérations plus tôt. A ces bits s’ajoute également le bit de donnée locale. Finalement, un total de 8 + 3 + 1 = 12 entrées serait nécessaire dans l’additionneur, ce qui augmente de manière importante le coût d’implantation physique de l’additionneur.

Au lieu de cela, la solution choisie est de calculer avant chaque itération du calcul d’addition bit-série, le bit de poids faible de la somme des retenues préalablement stockées. Ce calcul est effectué en parallèle de manière synchrone dans chacun des

6.1. Tour d’horizon des implantations asynchrones de la somme régionale dans les mailles

processeurs, et son temps d’exécution ne dépend donc pas du nombre de proces- seurs de la région considérée. En conséquence, il est peu pénalisant d’effectuer cette opération de manière synchrone, alors que le gain matériel est important dans la partie asynchrone, et que cela n’apporte aucun surcoût matériel au niveau de la partie synchrone. Nous ne détaillerons pas ici le rôle de chacun des registres et des différents composants de la couche synchrone du processeur, cette étude étant dis- ponible dans la thèse de Didier Dulac [Dul96]. Il est toutefois important de préciser que les registres principaux de la couche synchrone ont une largeur de 4 bits afin de permettre un calcul simple et efficace de l’addition des 3 retenues et du bit de donnée locale.

La structure générale du processeur élémentaire de la maille associative d’Orsay est décrite à la figure 6.5. Outre les composants situés dans les couches synchrone et asynchrone que nous avons décrit, il est important de noter la présence d’un arbitre à8 entrées à l’interface entre la couche synchrone et la couche asynchrone. Le rôle de cet arbitre dans l’établissement des arbres couvrants sera détaillé dans les chapitres suivants.

Implantation de l’asynchronisme dans la maille associative

Dans ce paragraphe, nous nous focalisons sur l’implantation de l’opérateur somme distribuée asynchrone dans la Maille Associative d’Orsay. Nous ne quantifions pas la partie synchrone qui n’est pas au centre de notre étude.

La conception de cet opérateur de somme distribuée, l’additionneur à9 entrées, est orientée par un paramètre principal, la transmission optimale en terme de vitesse du bit de poids faible. Une structure de type arbre de Wallace [Wal64] est envisa- geable, elle comporte 5 Full Adder (FA) et 2 Half Adder (HA). Le résultat global est calculé en un temps égal à la traversée de 4 additionneurs. Toutefois, afin de

Fig. 6.6 – Structure de l’additionneur 9 entrées (source [Moh96])

diminuer la charge capacitive du chemin asynchrone de l’opérateur de somme et ainsi diminuer le temps de propagation du bit de poids faible de la somme, il est préférable de se tourner vers une structure où le calcul de ce bit et le calcul des 3

faible de la somme est présenté à la figure 6.7. Le calcul des autres bits de la somme est implanté en se référant aux arbres de Wallace. Le temps moyen de traversée de

Fig. 6.7 – Structure de calcul du bit de poids faible de l’addition à 9 entrées : XOR à 9 entrées (source [Moh96])

la structure de calcul du premier bit de la somme est environ 2,2 ns sur l’implan- tation effectuée à l’Université d’Orsay.

Parmi les autres composants présents dans la couche asynchrone, le OU logique est implanté de manière particulière dans la mesure où il correspond au OU utilisé dans une association et que c’est donc un opérateur idempotent. La structure choi- sie est donc un OU à précharge, qui fonctionne en deux phases, la première étant le préchargement de la sortie à 0, la deuxième étant l’évaluation de l’opérateur, sachant que la sortie peut passer à 1 mais ne peut pas revenir à 0.

Le troisième composant asynchrone utilisé dans la maille, l’arbitre, sera étudié en détails dans les prochains chapitres.

Les limitations de la maille associative

Les limitations principales de la maille associative sont :

– La taille du processeur élémentaire : la densité d’une implantation destinée à des applications de vision de moyen-haut niveau est limitée par cette taille importante, d’autant plus que la structure de la Maille Associative d’Orsay n’intègre pas de dispositif destiné à la capture d’image, qui augmenterait d’autant la taille du processeur élémentaire.

– Les fonctionnalités dédiées et complexes des opérateurs asynchrones : les opé- rateurs présents dans le chemin asynchrone sont au nombre de deux et sont dédiés à deux tâches très spécifiques (le OU logique et l’addition). Ces tâches sont fondamentales pour le traitement régional des données, mais leur coût d’implantation est très important (en particulier pour l’additionneur à9 en- trées). Un opérateur unique et moins dédié serait préférable.

Dans le document Asynchronisme dans les rétines artificielles (Page 110-116)