• Aucun résultat trouvé

Nous avons montr´e ici une grande partie des calculs atomiques n´ecessaires en traitement d’image par morphologie math´ematique. Ces op´erateurs ne constituent pas une fin en soi et sont bien souvent une brique ´el´ementaire d’op´erateurs plus complexes.

De nouvelles structures de processeurs ont ´et´e propos´ees, comme des extracteurs de voisinages parall´elis´es o`u l’on dispose de N voisinages par cycles. Ce principe permet de voir les processeurs de voisinage sous un autre jour, car il est maintenant possible d’aug- menter tr`es fortement la puissance de calcul en consid´erant des bus m´emoires plus larges. La nature tr`es r´ep´etitive des calculs de base en morphologie math´ematique est donc une v´eritable aubaine pour les syst`emes consid´erant non plus une fr´equence ´elev´ee de fonction- nement, mais plutˆot un parall´elisme massif. En effet, nous voyons apparaˆıtre aujourd’hui des m´emoires d´edi´ees aux cartes graphiques avec des d´ebits de l’ordre de 150Go/s avec des mots de 512 bits. Si un processeur de voisinage parall´elis´e ´etait capable d’exploiter ce d´ebit m´emoire, il serait possible de calculer 77672 ´erosions sur des images en r´esolution 1920 × 1080 en une seconde, soit un temps de calcul de 13µs par ´erosion. Bien sˆur ce calcul semble d´ecorr´el´e de la r´ealit´e, mais montre qu’une ´evolution possible du traitement d’image par morphologie math´ematique est de consid´erer uniquement les op´erations de base s’ap- puyant sur des mises en œuvre extrˆemement v´eloces. Ceci dans le but de r´ealiser toutes les autres op´erations comme des SKIZ o`u mˆeme des lignes de partage des eaux niveau par niveau.

La probl´ematique majeure se d´egageant de ce chapitre est l’inexistence d’une unit´e de calcul pouvant r´ealiser toutes les op´erations d´ecrites ici. Ces unit´es peuvent ˆetre tr`es simples comme assez complexes, mais toujours limit´ees `a un certain nombre d’op´erations.

CHAPITRE 2. PROCESSEURS DE VOISINAGE FLOTS DE DONN ´EES

Il peut exister aussi plusieurs fa¸cons plus ou moins standard de r´ealiser un calcul, nous avons d’ailleurs d´ej`a abord´e ce sujet lors de la description des op´erateurs g´eod´esiques o`u plusieurs strat´egies s’offraient `a nous pour r´ealiser des reconstructions g´eod´esiques. Nous avons montr´e qu’il ´etait possible de r´ealiser une it´eration d’une reconstruction g´eod´esique avec un seul processeur. Il est n´ecessaire dans ce cas d’employer une structure de processeur de voisinage tr`es sp´ecifique comportant `a la fois des lignes `a retard pour l’extraction des voisinages du marqueur et des lignes `a retard pour acheminer le masque jusqu’`a l’unit´e de calcul. Toutefois cette structure sous-exploite largement la logique pr´esente d`es lors que l’on r´ealise d’autres op´erations comme de simples ´erosions. Il est alors pr´ef´erable de privil´egier une structure plus souple et d’utiliser plusieurs processeurs de voisinage raccord´es en s´erie et en parall`ele via des ALU afin de r´ealiser la majeure partie des op´erations d´ecrites dans ce chapitre. Nous disposerions alors d’un pipeline plus ou moins profond o`u l’on pourrait chaˆıner des op´erations basiques pour en construire de plus complexes.

Un probl`eme subsiste concernant le choix des unit´es de calcul que l’on doit embarquer dans les processeurs de voisinage afin de r´ealiser un maximum de calculs. Les unit´es de tri seraient de bons candidats `a la standardisation de notre structure de pipeline de processeurs de voisinage puisqu’il est possible de r´ealiser tous les filtres de rang. Cependant, la taille de ces unit´es, mˆeme r´eduites au maximum, est un frein `a leur adoption. De plus, un des objectifs du pipeline peut ˆetre la construction de filtres avec des noyaux de grandes tailles d´ecompos´es sur un grand nombre de processeurs, or ce type de d´ecomposition ne fonctionne d’une part que pour certains ´el´ements structurants et d’autre part, qu’avec les ´erosions et les dilatations. Dans ce cas il est inutile de disposer de filtres de rang dans tous les ´etages du pipeline.

Nous avons analys´e dans le d´etail les diff´erentes structures de processeurs de voisinage et nous venons de formuler quelques propositions concernant leur chaˆınage en vue d’obtenir une am´elioration significative des performances. Ce chapitre se situe `a une ´echelle plutˆot microscopique et nous allons passer, dans le chapitre suivant, `a une ´echelle macroscopique. C’est-`a-dire que nous allons cette fois analyser, sans se pr´eoccuper de la structure interne d’un processeur, le chaˆınage d’op´erateurs cˆabl´es dans des pipelines statiques et dynamiques, ceci dans le but de toujours r´epondre au mieux aux besoins applicatifs tout en garantissant une meilleure g´en´ericit´e des architectures propos´ees.

Chapitre 3

Chaˆınage de processeurs de voisinage

Les flots de processeurs de voisinage permettent d’ex´ecuter les op´erations ´el´ementaires de morphologie math´ematique de mani`ere tr`es efficace. Le nombre volontairement r´eduit d’op´erations r´ealisables par processeur permet d’en limiter la surface et autorise leurs chaˆı- nages dans des flots profonds de processeurs. On peut alors construire des op´erateurs com- plexes puisque le corpus th´eorique de la morphologie math´ematique repose principalement sur la composition d’op´erations basiques qui sont prises en charge par nos processeurs de voisinage.

Se pose alors le probl`eme de la g´en´ericit´e du flot de processeurs, car le traitement op´er´e par les briques de calcul reste `a un grain architectural assez ´elev´e. Il peut ˆetre alors difficile de trouver une structure unique autorisant la r´ealisation de toutes les op´erations de morphologie math´ematique. Un autre param`etre du flot de processeurs est donc `a prendre en compte, comme la r´egularit´e. Nous devons nous demander s’il est n´ecessaire de d´ecouper le flot de processeurs en plusieurs ´etages ayant une structure identique. En effet, un flot r´egulier est principalement avantageux dans le cas o`u l’architecture est fondue dans un circuit non reconfigurable, car il est possible de disposer d’un syst`eme plus souple, mais pas toujours optimal vis-`a-vis de l’application. De la mˆeme mani`ere, un flot profond de processeurs peut ˆetre difficile `a employer, car l’application n’est pas toujours simplement distribuable sur ce dernier dans son ensemble, principalement `a cause de d´ependances entre les donn´ees. Il convient donc dans le cadre d’une structure r´eguli`ere de bien analyser les contraintes des applications ou du domaine vis´e afin de correctement dimensionner la profondeur et la topologie du flot de processeurs.

Une alternative `a une structure fixe des diff´erents ´etages d’un flot de processeurs de voisinage consiste, dans le cadre de l’utilisation de circuits reconfigurables, `a d´ecrire la struc- ture du flot de fa¸con sp´ecifique pour chacune des ´etapes de l’application afin de toujours disposer du mat´eriel le plus efficace. On peut alors cibler un circuit `a grain fin comme un FPGA afin d’y mettre en place la reconfiguration dynamique des acc´el´erateurs. Toutefois, nous pouvons ´egalement mettre en place une reconfiguration avec un grain beaucoup plus important en essayant de fusionner toutes les descriptions des acc´el´erateurs d’une ou plu- sieurs applications pour en g´en´erer une unique dont les ressources les plus consommatrices sont mutualis´ees et o`u les chemins de donn´ees n´ecessaires sont ajout´es.

Nous allons tout d’abord dans ce chapitre d´ecrire comment mettre en œuvre un flot de processeurs et donc d´ecrire la structure d’un syst`eme hˆote capable de piloter un acc´el´erateur

type flot de donn´ees `a plusieurs entr´ees sorties. Une fois les bases du syst`eme hˆote d´etaill´ees, nous pourrons ainsi mieux comprendre, dans une seconde partie, les limitations que l’on peut rencontrer en proc´edant `a une description manuelle du flot de processeurs et qui orientent quelque peu la composition de l’acc´el´erateur vers une structure visant la g´en´ericit´e pour des raisons de temps de d´eveloppement. Nous terminerons ce chapitre, dans une troisi`eme partie, par une pr´esentation d’un syst`eme de description de haut niveau des flots de processeurs facilitant la mise en place de structures tr`es particuli`eres et optimales pour chaque op´eration avec des possibilit´es de fusion de diff´erents acc´el´erateurs.

3.1

Avant propos

Nous allons aborder trois aspects diff´erents dans ce chapitre. Nous allons commencer par d´ecrire comment s’ins`ere un acc´el´erateur flot de donn´ees au sein d’un circuit g´en´eraliste et en particulier comment r´eit´erer avec les mˆemes donn´ees plusieurs passes de calcul dans un acc´el´erateur flot de donn´ees. En effet, ce dernier point est crucial dans le cadre du traitement d’image et en particulier dans le cadre de la morphologie math´ematique car, c’est en agr´egeant une grande quantit´e de traitements simples que l’on peut r´ealiser des applications complexes. L’interfa¸cage g´en´erique d’IP flots de donn´ees, tel que celui propos´e par Fraboulet & Risset [30], permet de disposer d’une interface simple et ´evolutive en termes de nombre de flots de donn´ees vers l’acc´el´erateur.

Une fois la probl´ematique d’utilisation d’un flot de processeurs au sein d’un SoC trait´ee, nous pourrons d’abord proposer quelles options nous avons `a notre disposition pour rendre plus souple d’utilisation et plus versatile un SoC compos´e d’un pipeline d’op´erateurs flots de donn´ees. Nous d´etaillerons ici `a la fois les aspects li´es `a la description manuelle d’un pipeline, aux diff´erents niveaux de granularit´e de reconfiguration envisageable ainsi qu’`a la description de haut niveau.

La description de haut niveau est l`a pour fournir un moyen simple d’agr´eger les com- posants de bases d’un ´etage de flots de processeurs que nous appellerons pattern. En effet, un pattern est une agr´egation de composants tels que des processeurs de voisinage, des unit´es arithm´etiques, des unit´es de seuillage ou bien encore des multiplexeurs. L’agence- ment de ces composants via un outil de haut niveau permet d’acc´el´erer le d´eveloppement de pipelines sp´ecifiques `a des applications. Nous ciblons majoritairement les circuits FPGA disposant d’une capacit´e de reconfiguration dynamique partielle [74], mais le travail pro- pos´e ici pourrait ˆetre utilis´e sur des architectures types ambric [20] compos´ees de centaines de coeurs de processeurs simples reli´es entre eux via des interconnexions programmables et utilisant un mod`ele de programmation orient´e composant.

Des outils tels que Gaut [21], dont l’objectif principal est de synth´etiser des IP mat´e- rielles `a partir d’un langage tel que le C, peuvent ˆetre utilis´es afin de g´en´erer simplement l’agencement des composants dans un pattern. Nous avons toutefois d´ecid´e de sp´ecifier plus simplement un pattern afin de valider les concepts de fusion. Cette technique est inspir´ee de ce que l’on peut trouver aujourd’hui dans le monde des ASIP lorsque plusieurs descrip- tions mat´erielles d’instructions sp´ecialis´ees sont fusionn´ees pour mutualiser les ressources disponibles sur le silicium [17], [58], [85], [84]. Ce principe, appel´e Compound Circuit, a ´et´e mis en place, `a une granularit´e plus ´elev´ee, au niveau des patterns servant `a la description

CHAPITRE 3. CHAˆINAGE DE PROCESSEURS DE VOISINAGE

d’un pipeline d’op´erateurs flot de donn´ees et permet de mutualiser les ressources. Cette technique permet de disposer de toutes les op´erations propos´ees par les diff´erents pipelines au sein d’un unique acc´el´erateur de taille r´eduite.