• Aucun résultat trouvé

3.3 Architecture matérielle extensible et flexible de la carte auto-organisatrice

3.3.3 Communication à base de NoC

Les opérations de l’algorithme de Kohonen peuvent être réparties en deux catégories : les

opérations de communication et les opération de traitement. Les opérations de communication

consistent en la distribution des vecteurs de poids vers tous les neurones de la carte SOM, en propagation systolique de la comparaison des distances minimales locales et en la diffusion de l’identité du neurone gagnant vers tous les neurones. Par ailleurs, le calcul de la distance et l’adap-tation des vecteurs de poids sont classées comme des opérations de traitement. Dans l’architecture matérielle proposée de la carte SOM, pour réduire au maximum la dépendance architecturale de la structure de la carte auto-organisatrice avec ses propres paramètres, l’exécution des opérations évoquées est distribuée sur des modules paramétrables indépendants dont le comportement dé-pend des données d’entrée et paramètres reçus de manière dynamique. La figure 3.9 présente l’architecture principale de la carte SOM proposée dans ces travaux de recherche et nommée l’architecture Self-Organizing Map Based on Network-on-Chip (SOM-NoC).

L’architecture proposée est divisée en deux couches, comme présenté en figure 3.9. La couche

de traitement chargée des opérations de traitement est composée d’un ensemble de modules de

FIGURE3.9 – Architecture SOM-NoC à deux couches : couche de traitement et couche de communication

sont pas connectés entre eux ou inter-connectés. A la réception d’un message sur la connexion unique du module allant vers la couche de traitement, une interface réseau « NI » associée in-terprète le message reçu et ordonne l’exécution de l’opération de traitement décodée au module, représentant l’unité de traitement. Par conséquent, étant donné l’architecture parallèle des dules de traitement, l’exécution des opérations peut être effectuée en parallèle sur tous les mo-dules de la couche. D’autre part, l’échange de données entre momo-dules de traitement est effectué via la couche de communication par le biais des messages circulant entre les modules de commu-nication de cette couche. En effet, la couche de commucommu-nication est composée d’un ensemble de modules de communication distribués de la même façon que les modules de la couche de traite-ment. De cette façon, chaque module de communication est associé à un module de traitement via une connexion physique bidirectionnelle uniforme. De plus, pour assurer la communication entre les différents modules de l’architecture, les modules de la couche de communication sont inter-connectés entre eux selon une topologie 2D maillée, comme présenté en figure 3.9. Le dialogue entre deux modules de l’architecture est initié par les NI correspondantes et assuré par le réseau de routeurs. Dans l’architecture proposée, un neurone de la carte auto-organisatrice est représenté par un couple de modules de traitement et de communication. Chaque neurone est identifié par un couple d’indice calculé selon sa position sur la grille. Ces indices peuvent être utilisés comme identité du neurone pour l’exécution de l’algorithme de Kohonen ou comme adresse pour adresser un message à un neurone au cours d’une opération de communication.

L’architecture du réseau sur puce utilisé dans notre approche est présentée en figure 3.10(a). Cette architecture 2D maillée est composée des routeurs inter-connectés entre eux associés à des modules de traitement PE. Le dialogue entre un module PE et son routeur associé est assuré par une interface réseau (NI) dont la fonction principale est de coder sous forme d’un paquet (avant l’envoi) et de décoder le paquet (après réception) les données échangées entre différents PE.

tech-PE R(1,1) PE R(1,2) PE R(1,K) PE R(2,1) PE R(2,2) PE R(2,K) PE R(L,1) PE R(L,2) PE R(L,K) CROSSBAR CROSSBAR WEST IN OUT EAST IN OUT NORTH IN OUT SOUTH IN OUT LOCAL OUTPUT / ROUTING/ CONTROL LOGIC to logic to logic E_ack_out E_req_out E_d_out E_ack_in E_req_in E_d_in Clk x_d_y x_req_y x_ack_y body Header « 01 » « 00 »Body « 11 »Tail

Type dest Address data

8 bits N bits Type 2 bits data 3XX 1XX 0XX 2XX Short << 10 >>

Flit Body ou Tail Flit Header ou Short

FIGURE 3.10 – (a) Architecture 2D maillée du NoC utilisé dans cette architecture matérielle de la carte SOM, (b) Architecture interne d’un routeur, (c) Protocole d’échange d’information utilisé entre deux rou-teurs (Alternate Bit Protocol), (d) Structure des messages circulant dans le NoC utilisé

nique de commutation Wormhole Switching (WS). Un message peut être présenté sur plusieurs paquets appelés flits (ensemble de bits pouvant être présentés simultanément sur le support phy-sique). Avec cette technique de commutation, on trouve trois types de flit : Header, Body et Tail. Le type d’un flit est codé sur ses deux premiers bits. Le flit Header, identifié par le code « 01 », ouvre la communication et "réserve" le circuit de communication aux flits suivants. Ce flit contient l’adresse de la destination. Le flit Body, identifié par le code « 00 », ne contient que les données à transmettre entre les PE sur le circuit précédemment réservé. Le flit Tail, identifié par le code « 11 », a la même structure que body. Ce flit permet de terminer la communication et de libérer les routeurs pour un nouveau message. D’autre part, les messages courts, qui peuvent être présentés sur un seul paquet, sont codés sur un flit de type Short. Ce flit, identifié par le code «

10», contient l’adresse de la destination. Il calcule son circuit de communication au cours de la

transmission et ne réserve aucun routeur lors de son passage.

Le module principal du NoC utilisé est le routeur dont l’architecture est présentée figure 3.10(b). Ce module assure la transmission des paquets entrants vers la sortie convenable jus-qu’à ce qu’ils atteignent la destination finale. Un routeur est composé d’un « Crossbar » dont le rôle est d’effectuer une opération d’aiguillage pour établir différentes connexions filaires entre les

liaisons d’entrée et de sortie du routeur selon l’algorithme de routage et la politique d’ordonnan-cement adoptés. L’arbitrage des paquets dans le routeur ainsi que la fonction d’aiguillage sont gérés avec un bloc logique de contrôle. Par exemple, si plusieurs paquets arrivent simultanément sur différentes entrées d’un routeur et demandent la même sortie vers leurs destinations finales, ce bloc de contrôle doit arbitrer et déterminer la priorité de transfert de ces paquets. Dans ce cas, les paquets en attente doivent être stockés dans des mémoires tampons jusqu’à ce que leur trans-fert soit planifié. C’est la raison principale pour laquelle chaque routeur possède des mémoires tampons ou des « Buffer » d’entrée et/ou de sortie, dont le rôle est d’accepter temporairement les paquets avant leur transmission au PE local ou à un des routeurs voisins. Les liens d’inter-connexion (en entrée et en sortie) d’un routeur isolé sont également illustrés en figure 2.5(b). L’interconnexion entre un routeur et ses routeurs voisins ou son PE associé est effectuée à base de six liens physiques (3 pour l’émission et 3 pour la réception) : un bus de données, un signal de requête de transfert et un signal d’acquittement de réception respectivement notés par _d_, _req_ et _ack_.

L’échange de données entre deux modules (routeur/routeur ou routeur/PE) est effectué à base du protocole de communication « Alternate Bit Protocol (ABP) ». La figure 3.10(c) présente les chrono-grammes des signaux illustrant les échanges de données entre deux modules à base de ce

protocole. Un flit est positionné sur le bus x_d_y (avecx ∈ (N ,E,S,W ou L) et y ∈ (in ou out)).

Ce flit est accompagné par un changement d’état sur le lien x_req_y associé au bus de données. A la réception de cette requête, le module receveur procède à l’aiguillage du flit reçu vers la sortie convenable selon sa destination finale. Si cette sortie est libre, l’état du signal sur le lien x_ack_y sera modifié. Si non, la communication sera bloquée et le flit sera stocké dans la mémoire tampon en attendant la libération de la sortie souhaitée. Dans ce cas, le flit suivant ne sera envoyé que lorsqu’on aura un changement d’état sur le lien d’acquittement.

En utilisant cette approche de communication à base de réseau sur puce, nous avons réussi à séparer les opérations de communication de celles de traitement au sein d’une carte de Kohonen. Par conséquent, la dépendance de l’architecture proposée à la structure et aux paramètres de la carte auto-organisatrice est fortement réduite. D’autre part, l’utilisation de ce type de NoC, à base d’une technique d’aiguillage mixte et d’un algorithme de routage dynamique, nous a permis d’offrir de la flexibilité et d’adaptabilité au niveau des opérations de communication, la com-munication représentant une véritable limitation en termes d’adaptabilité dans les architectures matérielles classiques de la carte auto-organisatrice.

Par ailleurs, la nouvelle approche à base de réseau NoC sur laquelle l’architecture proposée est essentiellement basée ne présente aucune limite au niveau de la taille de la couche compétitive à utiliser à un moment donné. Autrement dit, l’utilisation de la technique de communication à base des réseaux sur puce permet d’ajouter la propriété d’extensibilité et d’adaptabilité à l’architecture proposée que nous l’avons appelée l’architecture Self-Organizing Map Based on