• Aucun résultat trouvé

4.5 Unité de contrôle

4.5.2 Implémentation de l’unité de contrôle

Comme le modeSIMDn’est qu’un cas particulier du mode de fonctionnement Multi-SIMD, les unités de contrôle de chaque tuile de calcul sont implémentées avec les fonctionsMulti-SIMD. Afin de limiter l’utilisation de la surface silicium et la consommation électrique, deux implémentations ont été réalisées, une première complète permettant un niveau de flexibilité élevé, et la seconde simplifiée se limitant au traitement d’images brutes et réduisant la surface silicium.

4.5.2.1 Caractéristiques générales

Le gestionnaire de voisinages reçoit les pixels et les organise pour que les processeurs puissent accéder à leurs valeurs. De la même manière, il a connaissance des délais d’intertrames, de fin de ligne etc. C’est donc le seul module de la tuile de calcul qui est à même de déterminer quand démarrer un nouveau traitement, et la nature de ce dernier.

4.5. Unité de contrôle 103

En régime nominal, un traitement de pixel est démarré tous les NbProcs pixels, ce signal est transmis à l’unité de contrôle pour qu’il puisse démarrer un nouveau traitement. Ceci se traduit par le positionnement du (des) compteur(s) programme en fonction du traitement à réaliser. Par exemple les compteurs programme sont positionnés à l’adresse de début des segments correspondant aux différents cas d’exécution, ou bien, le cas échéant à celles des fins de trames ou de lignes.

4.5.2.2 Implémentation complète

En principe, chaque unité de contrôle doit intégrer autant de mémoires programme qu’il y a de casCASEà potentiellement couvrir. Dans la pratique, 4 mémoires programme (ou deux mémoires double port) permettent de couvrir la majorité des cas d’utilisation. Elles sont toutes couplées au gestionnaire de voisinages qui leur transmet le numéro du segment de code à exécuter pour chaque pixel, et donc pour chaque processeur.

L’information, permettant de sélectionner le numéro de segment, peut être liée à la position du pixel, comme c’est le cas pour les images brutes, mais elle peut être issue d’un calcul précédent, et ainsi codée dans un champ de métadonnée spécifique. Le programmeur peut donc choisir entre le contrôle du modeMulti-SIMD

sur la valeur d’un champ de métadonnée qu’il aura préalablement configuré, ou bien sur la position des pixels dans la matrice de couleur des images brutes (potentiellement tous les types de matrices sont supportés). La valeur permettant de commander le choix des segments de code vient contrôler le réseau de distribution des instructions aux processeurs comme on peut le voir en Figure4.12a. Il peut aussi choisir de configurer l’unité de contrôle en modeSIMD. Dans ce cas, une seule unité FETCHest utilisée, et l’espace des mémoires programme est utilisable dans son ensemble pour permettre l’exécution de programmes plus conséquents.

SplitWay SplitWay Mux SplitWay Mem. prog. Unité de contrôle Multi-SIMD Gestionnaire de voisinages Mux Mux Mem. prog. Mem. prog. Mem. prog. Control - métadonnée - couleur du pixel etc

(a) ModeMulti-SIMDcomplet.

SplitWay SplitWay SplitWay

Mem. prog. Unité de contrôle Multi-SIMD simplifiée Gestionnaire de voisinages Mem. prog. Control - couleur du pixel brut SplitWay SplitWay

(b) ModeMulti-SIMDsimplifié.

FIG. 4.12:CONNEXION DE L’UNITÉ DE CONTRÔLEMULTI-SIMDAVEC LES PROCESSEURSSplitWayDANS LES CAS

OÙ(a) LE MODEMULTI-SIMDCOMPLET COMMANDÉ PAR LES MÉTADONNÉES OU LE TYPE DE PIXEL BRUT TRAITÉ,

(b) LEMULTI-SIMDSIMPLIFIÉ EST ADAPTÉ AU TRAITEMENT D’IMAGE BRUTES.

4.5.2.3 Implémentation simplifiée

Lorsque les tuiles sont destinées à traiter des images brutes, le contrôle sur les métadonnées peut être supprimé. De même, le couplage avec le gestionnaire de voisinages peut être simplifié, puisque seule la position du premier pixel peut être transmis. La régularité des filtres de couleur utilisés permet de déterminer les couleurs des autres pixels, généralement par alternance. De même, le réseau de distribution des instructions est figé en alternant un processeur sur deux comme on peut le voir en Figure4.12b. Les pixels traités étant contigus, seuls deux couleurs différentes se présentent simultanément, ainsi seules deux mémoires programme sont utilisées.

Conclusion sur le processeur de calcul

Cette section a décrit comment le modeMulti-SIMDétait implémenté au sein de l’architecture eISP. Ce mode de fonctionnement permet de réduire notablement les instructions nécessaires au traitement d’image par rapport à l’utilisation du modeSIMD. Cette réduction du nombre d’instructions pour un traitement donné réduit la fréquence de fonctionnement du circuit et donc sa consommation électrique.

Le modeMulti-SIMDest particulièrement adapté au traitement brut et plus généralement lorsque des prédi- catsIF/ELSE, etCASEengendrent des segments de code de longueur importante. Deux implémentations qu’il convient de choisir à la conception du circuit en fonction du budget en surface silicium et des fonctionnali- tés attendues, sont proposées. Par défaut, la version dite simplifiée adaptée au traitement d’images brutes est utilisée, son surcoût par rapport à une structure SIMDclassique étant minime par rapport au gain en nombre d’instructions à exécuter par pixel.

4.6

L’unité de communication

Comme cela a été expliqué dans le chapitre précédent, l’architecture eISP est composée d’un ensemble de tuiles de calcul. Ces tuiles sont interconnectées entre elles par un busTDMAqui leur permet de commu- niquer via un ou plusieurs canaux. Ce bus permet aussi la synchronisation des tuiles entre elles et rend leur enchaînement paramétrable.

L’unité de communication a un rôle central au niveau de l’architecture, puisque toutes les données à traiter proviennent du flux. Comme les tuiles de calcul traitent les données en temps réel, l’ensemble des modules de la tuile de calcul sont orchestrés par le module de communication. Cette section est divisée en deux parties, la première décrit comment configurer le bus, et notamment ses fréquences de fonctionnement, et la seconde présente l’implémentation du module de communication rendant chaque tuile autonome. Ce module se situe à l’interface entre les tuiles et le bus. Comme chaque tuile fonctionne à sa fréquence qui lui est propre, et que le bus aussi, il permet d’assurer la transmission des données entre des composants qui sont dans des domaines d’horloges différents.

4.6.1 Dimensionnement du bus

Nous avons vu en section3que le bus proposé permet de supporter les différents enchaînements de tuiles de calcul susceptibles d’être utilisés. Nous avons aussi vu que la configuration de l’enchaînement des tuiles est réalisée par l’écriture d’un registre permettant de sélectionner le slot temporel correspondant au résultat d’une autre ressource (tuile de calcul, capteur etc.).

Chaque tuile de calcul se voit proposer un espace de temps dans lequel elle peut lire ou écrire, comme cela a été décrit dans le chapitre 3. Afin de déterminer la fréquence de fonctionnement du bus BusClk, et donc

le nombre de slots disponibles pour l’écriture de données résultant de traitements de tuiles de calcul, il est nécessaire de connaître leurs fréquences de fonctionnement Fi, et la fréquence de l’horloge pixel PxClk. A partir

de ces paramètres, le nombre de slots maximum disponibles sur le bus peut être obtenu par l’équation4.10ainsi que la fréquence de fonctionnement maximale du bus par l’équation 4.11. La Figure4.13montre un exemple de ou trois horloges (F1,F2et F3) donnent lieu à trois slots temporels.

NbSlots=  min(Fi) PxClk  (4.10)

4.6. L’unité de communication 105 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 Temps Horloge F1 Horloge Pixel PxClk Horloge F2 Horloge F3 Divisions du bus

FIG. 4.13:DÉTERMINATION GRAPHIQUE DU NOMBRE DE SLOTS DU BUSTDMAEN FONCTION DES FRÉQUENCES DES TUILES DE CALCULF1 ÀF3.

Horloge Pixel PxClk

Divisions du bus (Canal 2) T5 T6 T7 T8 T5 T6 T7 T8 T5 T6 T7 T8

Divisions du bus (Canal 1) T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4

Temps

FIG. 4.14:EXEMPLE DE CHRONOGRAMME POUR UN BUSTDMAUTILISANT DEUX CANAUX DE COMMUNICATION.

BusClk= NbSlots × PxClk= NbSlots × 

min(Fi)

PxClk 

(4.11)

Pour connecter plus de tuiles de calcul qu’il n’y a de slots disponibles, il est possible de multiplier le nombre de canaux de transmission du même bus comme en Figure 4.14. Il est ainsi possible de transférer plusieurs valeurs en parallèle durant le même cycle d’horloge du busTDMA. Le nombre de canaux à utiliser en fonction du nombre de tuiles (NbTuiles) est obtenu par l’équation4.12. Il faut tenir compte des composants d’entrées- sorties (le capteur par exemple). Une autre possibilité pour augmenter le débit du bus est d’augmenter sa fré- quence. Cette alternative nécessite l’augmentation des fréquences de fonctionnement des tuiles par rapport à celle de l’horloge pixel, ce qui impacte la consommation électrique.

Il est également envisageable de mettre en œuvre des stratégies d’interconnexions comme le présente la Figure 4.15. Dans cet exemple, la tuile de calcul numéro 2 permet de communiquer aussi bien sur le bus numéro 1 que le bus numéro 2. Il est envisageable de mixer les différentes méthodes proposées ici afin d’adapter au mieux l’architecture aux contraintes de surface et de consommation. Enfin, pour limiter la consommation électrique, les tuiles de calcul sur lesquelles aucun traitement n’est porté peuvent être désactivées.

NbCanaux=  NbTuiles NbSlots  =     NbTuiles jmin(F i) PxClk k     (4.12) 4.6.2 Implémentation

L’unité de communication intégrée à la tuile de calcul, décrit par la Figure4.16, permet de configurer le slot de lecture et d’écrire les résultats sur un ou plusieurs slots. Lors de la programmation de l’architecture, le

Tuile de calcul N°1 Tuile de calcul N°2 Tuile de calcul N°3 Tuile de calcul N°4 Tuile de calcul N°5 Tuile de calcul N°6 Bus TDMA N°1 Bus TDMA N°2

FIG. 4.15:EXEMPLE DE STRATÉGIES DE CONNEXION DES TUILES DE CALCUL.

Tampon lecture Compteur Donnée entrante Numéro de slot Comparateur lecture (configurable) Donnée sortante Numéro de slot Tampon écriture Comparateur écriture (configurable) Unité d’entrée/sortie Bus TDMA

FIG. 4.16:MODULE D’ENTRÉE SORTIE PERMETTANT DE LIRE ET ÉCRIRE SUR LE BUSTDMA.

numéro de ces slots est défini par l’utilisateur en fonction de ses besoins, avec pour conséquence de modifier l’ordre dans lequel s’enchaînent les traitements qui sont programmés sur les tuiles. Afin de permettre cette flexibilité, nous avons conçu les modules de communication tels qu’une tuile ne puisse lire qu’une seule donnée entrante par slot temporel. Plusieurs tuiles peuvent lire le même slot, et donc traiter les mêmes données d’entrées avec des programmes différents. Autrement dit, une tuile ne traite qu’un seul mot de donnée à la cadence de l’horloge pixel. Par contre, une tuile peut écrire sur plusieurs slots et notamment sur plusieurs canaux. Cette fonctionnalité permet à des tuiles de transmettre leurs résultats à d’autres tuiles de calcul alors qu’elles sont placées sur différents canaux, comme dans l’exemple de la Figure4.15. La vérification des écritures multiples sur le même slot repose sur les outils logiciel de configuration de l’architecture réduisant ainsi la complexité architecturale de l’unité de contrôle, et par là même la surface silicium et la consommation électrique.

4.6.2.1 Accès au données du bus

Lorsqu’une tuile doit lire une donnée transmise sur un des canaux dans un slot donné, l’utilisateur écrit ces valeurs dans les registres correspondants. Ces registres commandent un multiplexeur afin de connecter le canal à lire au signal d’entrée du module de communication. A chaque front de l’horloge du bus, un compteur est incrémenté, et remis à zéro lorsque le nombre de slots maximum est atteint. La valeur de ce compteur est comparée à celle du registre du numéro de slot à lire. Lorsque les deux valeurs sont égales, la valeur sur le bus, considérée alors comme donnée entrante est recopiée sur le registre de lecture, qui est l’entrée du gestionnaire de voisinages. La procédure utilisée pour l’écriture de données sur le bus est identique que celle utilisée pour la lecture.