• Aucun résultat trouvé

2.3 Structure r´ ecursive

2.3.1 Fonctionnement

Une autre cat´egorie d’op´erateurs r´ecursifs existe, ayant pour objectif non plus de com- poser de tr`es gros ´el´ements structurants, mais plutˆot d’acc´el´erer les calculs en diminuant le nombre de passes n´ecessaires sur une image pour calculer, par exemple, une reconstruc- tion g´eod´esique (pr´esent´ee `a la section 2.2.5.4) o`u encore une transformation distance. Le principe est d’appliquer une r´ecursion dans les calculs en r´einjectant dans l’image source les r´esultats provenant de calculs sur les voisinages pr´ec´edents vis-`a-vis d’un parcours de l’image. Les ´el´ements structurants employ´es sont le plus souvent des carr´es, des croix, des hexagones de rayon unitaire, auxquels on supprime les voisins futurs par rapport au centre de l’´el´ement structurant pour un certain parcours de l’image.

Ces ´el´ements structurants sont pr´esent´es en figure 2.40. Le carr´e noir repr´esente le centre des ´el´ements structurant et les zones grises repr´esentent le voisinage consid´er´e.

On peut tr`es bien envisager de ne pas utiliser les ´el´ements structurants n´ecessaires aux passes avec un parcours indirect. Il est en effet possible de parcourir dans un sens indirect une image en parcourant dans le sens direct cette derni`ere ayant subi une sym´etrie centrale. Lorsque nous envoyons un flux de pixels aux processeurs de voisinage, ces derniers travaillent toujours dans le sens direct et cette sym´etrie centrale est implicite, selon la mani`ere dont sont envoy´es les pixels. En d’autres termes, il est uniquement n´ecessaire de sym´etriser le flux pixel dans le cas d’un parcours indirect ´equivalent. Quant `a la structure “direct” du processeur de voisinage, celle-ci ne change pas, la figure 2.41 illustre ce point.

On remarquera tout de suite qu’une architecture de processeur de voisinage pour fonc- tionner avec de tels ´el´ements structurants peut ˆetre r´ealis´ee avec une seule ligne `a retard, car nous consid´erons dans cette approche r´ecursive uniquement des ´el´ements structurants

Fig. 2.40: El´´ ements structurants utilis´es pour le calcul d’op´erations morphologiques par une approche r´ecursive

Fig. 2.41: Sym´etrie des flux pixels pour le parcours direct et indirect d’une image dans un processeur de voisinage

CHAPITRE 2. PROCESSEURS DE VOISINAGE FLOTS DE DONN ´EES

compos´es de deux lignes. Toutefois, nous souhaitons, avec la mˆeme architecture, ´egalement faire des op´erations de voisinages classiques, c’est la raison pour laquelle nous pr´esentons une structure de processeur de voisinage standard, dans laquelle nous avons ajout´e les res- sources n´ecessaires `a la construction d’op´erations r´ecursives. Cette structure est pr´esent´ee en figure 2.42 et permet, grˆace au multiplexeur, de boucler la sortie du calcul vers les registres du voisinage autorisant la construction de tous types de propagation.

Fig. 2.42:Structure simple d’un processeur de voisinage standard pouvant fonctionner en mode r´ecursif

Avec cette derni`ere figure, on observe une contrainte forte de latence dans l’unit´e de calcul. Le bouclage se faisant imm´ediatement apr`es le registre central, il est n´ecessaire que la valeur du calcul soit disponible instantan´ement. C’est-`a-dire que, dans notre cas, l’unit´e de calcul ne doit comporter aucun registre. Cette contrainte est assez peu r´ealiste en pratique, car nous visons des fr´equences de traitements assez ´elev´ees. Il n’est donc pas envisageable de laisser de longs chemins critiques dans notre architecture comme on pourrait en trouver dans des unit´es de tris sans aucun registre. Nous devons donc prendre en compte la latence dans l’unit´e de calcul `a deux niveaux :

– le premier se situe au niveau du registre R6 de la figure 2.42 et provient du fait qu’il faut ˆetre capable de prendre en compte le bouclage au niveau de R6. Nous venons de dire qu’il n’´etait pas possible de r´eellement boucler le calcul, il faudra donc modifier l’unit´e de calcul pour faire entrer au temps t, le r´esultat du temps t − 1.

– le second se situe dans la propagation des r´esultats dans la ligne `a retard. Dans l’´etat actuel des choses, on ne peut pas modifier simplement le contenu de la ligne `a retard.

En effet, en consid´erant une latence k de l’unit´e de calcul et lorsque le r´esultat est disponible, il faudrait ˆetre en mesure d’´ecraser la valeur entr´ee dans la ligne k − 1 cycles en arri`ere. Une telle op´eration est envisageable si l’on raccourcit la ligne `a retard de k − 1 ´el´ements.

La figure 2.43 pr´esente un processeur de voisinage standard pouvant `a la fois travailler dans un cadre classique et dans un cadre r´ecursif. Pour travailler dans le cadre r´ecursif, il suffit d’affecter une taille plus petite `a la ligne `a retard 2 de k − 1 ´el´ements, d’activer le multiplexeur r´ealisant le bouclage sur la ligne `a retard et de prendre en compte dans le dernier ´etage du calcul la valeur du registre Rb.

Fig. 2.43:Structure d’un processeur de voisinage standard pouvant fonctionner en mode r´ecursif ou non

Il est th´eoriquement possible d’appliquer le mˆeme principe aux processeurs `a extraction des voisinages parall´elis´es de la section suivante, mais il faut ˆetre en mesure de propager les valeurs d’une unit´e de calcul `a l’autre, car ces derni`eres prennent en entr´ee des voisinages connexes de l’image. Cette propagation est coˆuteuse, car elle met en œuvre des chemins critiques o`u il est difficile d’intercaler des registres pour acc´el´erer la cadence.