• Aucun résultat trouvé

Le routeur Unité de communication (CU - Communication

4.3 Réseaux sur puce reconfigurables

4.3.2 Architecture CuNoC

4.3.2.2 Le routeur Unité de communication (CU - Communication

L’élément de base de CuNoC est le routeur Unité de communication - CU. La fonction prin-cipale d’un CU est le routage de paquets reçus de la part d’autres CU voisins vers la cible des pa-quets dont ils contiennent l’adresse physique. Un routeur CU peut être utilisé d’une part comme une unité de communication indépendante pour acheminer des messages entre 4 éléments de calcul au maximum. D’autre part, il peut être utilisé comme un routeur faisant partie d’un plus grand réseau de routeurs pour les besoins de communication plus importants. L’architecture

d’une unité de communication CU est présentée dans la figure4.13[JTWB07b,JTBW09].

Comparé à la plupart des routeurs présentés dans la littérature possédant plusieurs buffers en entrées / sorties, le routeur CU est caractérisée par un unique buffer. C’est une des originalités de

CuNoC. Par conséquent, les besoins en ressources pour un seul routeur (de même pour un réseau

entier CuNoC) diminuent considérablement par rapport aux routeurs ou réseaux existants. Afin de gérer l’aiguillage de plusieurs paquets arrivant simultanément au routeur (jusqu’à 4 paquets maximum correspondant aux entrées des quatre directions d’un même routeur) et d’éviter les situations d’embouteillage au niveau d’un seul routeur, un CU utilise une politique d’arbitrage basée sur le principe d’une priorité à droite (par analogie avec les priorités du code de la route dans un carrefour). Ainsi, les paquets arrivant au niveau d’un routeur ne sont pas prioritaires par rapport aux paquets arrivant simultanément au même routeur et situés à la droite de sa direction. Lorsque les paquets arrivent sur les ports d’entrée d’un CU, ce dernier les reçoit simultané-ment, et les traite à tour de rôle selon la règle de priorité à droite. Ainsi, le paquet arrivant d’une

FIG. 4.13 – L’architecture d’une unité de communication CU.

direction et n’ayant aucun paquet à sa droite au moment d’arrivée, aura la priorité de passage la plus élevée et sera placé temporairement dans le premier registre du buffer avant d’être transféré le premier vers sa direction de sortie du routeur. Plus précisément, le paquet à priorité la plus élevée sera placé dans le premier registre interne du buffer et traité en premier. Tandis que, le paquet à priorité de passage moins élevée sera placé dans le registre interne suivant du buffer et sera traité en deuxième, etc. Dans le cas où 4 paquets arrivent simultanément, la priorité de passage la plus élevée est préalablement définie dans la phase de conception du réseau, tandis que les priorités de passage moins élevées sont déterminées selon la règle de priorité à droite.

Un routeur CU utilise la technique d’aiguillage store-and-forward. Cela signifie qu’un pa-quet ne peut pas être transféré vers un autre routeur tant que ce dernier ne peut le recevoir entièrement. Dû au fait qu’un paquet n’est pas composé de flits et qu’il pourra être stocké dans un routeur en un coup d’horloge, cette technique d’aiguillage ne nécessite pas de ressources supplémentaires dans le cas de CuNoC. Le seul inconvénient est qu’elle introduit une latence supplémentaire par CU. Cette latence est de 2 cycles d’horloge par paquet reçu. Dans le cas de 3 paquets arrivant simultanément, le « traitement » des paquets par le routeur et leur transfert

4.3. Réseaux sur puce reconfigurables

vers les CU voisins nécessitent 6 cycles d’horloge (voir4.14). Pendant ce temps de traitement,

un CU ne peut pas recevoir d’autre paquets. Une fois le temps de traitement a écoulé, le CU est de nouveau disponible pour la réception de nouveaux paquets.

FIG. 4.14 – Illustration de transfert de 3 paquets à travers un CU et de la latence introduite.

Les paquets véhiculés au sein d’un réseau CuNoC ne peuvent pas être routés et acheminés en

utilisant simplement l’algorithme de routage XY [DYN02]. En effet, le algorithme de routage

XY pour des réseaux 2D, achemine premièrement un paquet selon l’axe X, puis selon l’axe Y. Ce type d’algorithme de routage n’est donc pas adapté pour les réseaux sur puce dont la

structure évolue et change au cours du temps. En effet, dans le contexte considéré des systèmes reconfigurables auto-organisés, de nouveaux modules de calcul (PE) peuvent être placés au sein du réseau en modifiant alors sa structure régulière et homogène initiale, et en rendant les communications entre les modules de calcul plus complexe (voire parfois impossible). La figure

4.15illustre des cas d’inadaptation de l’algorithme de routage XY pour des structures de réseau

reconfigurable tel que CuNoC. En plaçant dynamiquement un module dans le réseau comme le

montre la figure4.15, le routage de paquets entre plusieurs nœuds devient alors impossible.

Pour remédier à ce genre de situations, l’approche DyNoC repose sur l’algorithme de

rou-tage S-XY (surrounding XY) [BA05]. Avec cet algorithme, lorsque un paquet sur son chemin

atteint un obstacle (un module placé dynamiquement), il choisit une direction parmi deux pos-sibles. Si le paquet arrive de la direction X, il choisit une des directions selon l’axe Y. C’est-à-dire, une direction vers le « haut » ou vers le « bas » du réseau. Réciproquement, si le paquet arrive de la direction Y, il va choisir une des directions selon l’axe X (vers la « droite » ou vers la « gauche » du réseau). Afin d’éviter l’effet ping-pong pouvant survenir dans les cas où une des coordonnées du paquet est égale à une des coordonnées de la cible située après l’obstacle (du côté opposé), chaque routeur DyNoC « appose » sa signature dans le paquet pour indiquer à d’autres routeurs le chemin que le paquet a déjà emprunté. En pratique, pour chaque routeur, les directions à prendre en cas d’un obstacle sont prédéfinies à l’avance, ce qui peut provoquer des très longs chemins de contournement d’un obstacle à suivre par les paquets.

L’algorithme de routage utilisé dans le CuNoC repose également sur l’algorithme XY mo-difié. Plus précisément, un routeur CU, après avoir reçu un paquet, compare l’adresse contenue

2 2 1 1 3 3

FIG. 4.15 – Illustration de l’inadaptation des algorithmes de routage classiques tel que XY pour

le CuNoC.

dans le paquet avec la sienne et calcule la direction de sortie du paquet en prenant en compte les conditions du trafic et les éventuels obstacles (modules dynamiquement placés pouvant couvrir des routeurs et donc non actifs pour le réseau). Un CU prend également en considération la direction d’arrivée d’un paquet pour le calcul de la direction de sortie en évitant ainsi l’effet

ping-pong, mentionné précédemment. L’algorithme de routage proposé et utilisé ne permet pas

forcément les chemins d’acheminement des paquets les plus courts entre un nœud destinataire et un nœud source. Ceci est dû au fait qu’il prend en compte non seulement les conditions du trafic mais également les modules placés dynamiquement. Cela signifie que dans certains cas le chemin emprunté par le paquet entre une source et une destination lorsqu’il n’y a pas d’obstacles n’est pas forcement le plus court. L’aspect algorithme de routage est traité dans la dernière partie de ce chapitre.

Comparé à la plupart des architectures de routeurs présentés dans la littérature, une autre caractéristique d’un routeur CU est qu’il ne possède pas d’interface spécifique de connexion à un élément de calcul. C’est-à-dire qu’il ne possède pas d’entrée / sortie dédiées uniquement à un PE pouvant leur être associé. Ainsi, un routeur CU peut être connectée via un ou plusieurs de ses ports d’entrée / sortie soit à un autre routeur CU soit à un élément de calcul (PE). Afin d’éviter les erreurs de livraison de paquets, dans la phase de calcul de direction qu’un paquet va emprunter, un CU prend également en considération les signaux venant de ses routeurs voisins directs. A titre d’exemple, selon les conditions de trafic, les signaux de directions et d’occupa-tion d’un routeur indiquent qu’une direcd’occupa-tion est libre et peut être prise par un paquet. Ce dernier ne pourra prendre cette direction si l’adresse de ce routeur correspond à un élément de calcul dont l’adresse n’est pas contenue dans le champ adresse du paquet. Ceci est plus détaillé par la

4.3. Réseaux sur puce reconfigurables

suite dans la section relative au placement de modules dans le CuNoC.