Brevet FR2949879A1 — publié le 20110311

NOEUDS D'ENTREE/SORTIE DE RESEAU SUR PUCE Domaine technique de l'invention L'invention concerne une topologie de réseau sur puce (� Network on Chip � ou 5 NoC), et plus particulièrement un agencement de points d'entrée/sortie dans un réseau maillé. État de la technique La figure 1 représente un exemple de réseau sur puce de topologie matricielle (ou maillée), tel que décrit dans le brevet Européen EP1701274. 10 Ce réseau comprend une pluralité de bus disposés en rangées (bus horizontaux Bh) et en colonnes (bus verticaux Bv). A chaque intersection entre un bus horizontal et un bus vertical est disposé un routeur RTR permettant de faire une connexion point à point entre chaque segment de bus (horizontal et vertical) qui lui arrive. En outre, chaque routeur RTR est relié à une ressource 15 locale RSC, qui peut être productrice ou consommatrice de données. Ce genre de réseau est destiné à faire communiquer n'importe quelle ressource RSC avec n'importe quelle autre ressource. Une communication peut emprunter plusieurs routeurs qui se chargent d'acheminer les données vers la destination finale. 20 Pour limiter le nombre de noeuds que peut emprunter une communication, le réseau est de préférence torique. Comme cela est représenté, les routeurs se trouvant sur un bord de la matrice sont reliés aux routeurs se trouvant au bord opposé de la matrice. En outre, cela permet d'utiliser la même structure de routeur, au bord comme au centre. 25 La figure 2 représente schématiquement un routeur utilisable dans ce contexte. Le routeur gère cinq voies, à savoir les quatre directions correspondant aux segments de bus, dénommées Nord (N), Sud (S), Est (E) et Ouest (W), et une voie L correspondant à la ressource locale. A chaque direction de sortie du routeur est associé un multiplexeur MX à quatre 30 entrées. Ces quatre entrées correspondent aux entrées du routeur qui ne sont pas associées à la direction du multiplexeur. Par exemple, le multiplexeur MXN de la sortie Nord reçoit les entrées L, S, E et W du routeur. En d'autres termes, le routeur interdit qu'un paquet entrant par une direction ne ressorte par la même direction. En outre, chaque entrée de multiplexeur est précédée d'une queue (FIFO) 20 destinée à stocker les données en attente de sortie. Un automate 22 assure un arbitrage et commande les sélections opérées par les multiplexeurs et l'écriture des données entrant par les cinq voies dans les queues 20. Une application envisagée d'un réseau du type de la figure 1 est la mise en oeuvre de calculs parallèles. Dans ce cas, chaque ressource RSC est une grappe de processeurs. Un tel réseau doit alors être associé à des périphériques d'entrée/sortie permettant au moins de fournir les données sur lesquelles doivent s'opérer les calculs, et d'extraire les résultats des calculs. Une solution immédiate est d'utiliser certaines des ressources RSC pour effectuer les opérations d'entrée/sortie requises, de préférence des ressources se trouvant en bord de matrice afin de faciliter leur connexion à des bornes de contact vers l'extérieur de la puce. Cette solution, à taille de matrice constante, pénalise la puissance de calcul du réseau. Un certain nombre de grappes de processeurs se voient remplacées par des modules d'entrée/sortie dont les besoins en calcul sont très inférieurs à ceux que peut satisfaire une grappe de processeurs, mais dont la spécificité, notamment le fait de présenter des connexions vers l'extérieur de la puce, fait que leurs fonctions ne peuvent pas être remplies, même en temps partagé, par une grappe de processeurs. Ainsi, si la matrice est dimensionnée pour fournir une puissance de calcul donnée, les modules d'entrée/sortie devront être rajoutés au réseau. Selon les choix opérés par l'homme du métier, ce rajout peut augmenter la latence du réseau de manière significative et/ou augmenter inutilement la surface occupée par le réseau sur une puce. Résumé de l'invention On souhaite donc pouvoir rajouter, dans un réseau sur puce à grappes de processeurs, des modules d'entrée/sortie sans augmenter la latence du réseau, ni augmenter inutilement la surface de la puce. Pour satisfaire ce besoin, on prévoit notamment un réseau maillé torique comprenant une matrice de routeurs d'infrastructure dont chacun est relié à deux autres routeurs appartenant à une même rangée et à deux autres routeurs appartenant à une même colonne. Il comprend en outre des routeurs d'entrée/sortie dont chacun est relié à deux autres routeurs appartenant, soit à une même rangée, soit à une même colonne. Les routeurs d'entrée/sortie sont ainsi des routeurs à trois voies, alors que les routeurs d'infrastructure sont des routeurs à cinq voies. Description sommaire des dessins D'autres avantages et caractéristiques ressortiront plus clairement de la description qui va suivre de modes particuliers de réalisation donnés à titre d'exemples non limitatifs et illustrés à l'aide des dessins annexés, dans lesquels : la figure 1 représente schématiquement un réseau sur puce classique de topologie torique ; la figure 2 représente schématiquement la structure d'un routeur d'un réseau de la figure 1 ; la figure 3 représente schématiquement un mode de réalisation de réseau torique dans lequel des modules d'entrée/sortie sont insérés de manière optimisée ; la figure 4 représente un mode de réalisation de routeur spécifique utilisé pour les modules d'entrée/sortie ; et la figure 5 représente schématiquement une optimisation supplémentaire du réseau de la figure 3. 3 Description d'un mode de réalisation préféré de l'invention Une solution envisageable pour ajouter des modules d'entrée/sortie à une matrice donnée consiste à rajouter deux colonnes et deux rangées de routeurs en périphérie de la matrice, auxquels on relie les modules d'entrée/sortie. On passe alors d'une matrice de routeurs nxn à une matrice (n+2)x(n+2), ce qui est susceptible d'augmenter le nombre de noeuds empruntés par les communications, et donc la latence du réseau. Une autre solution pourrait consister à utiliser des routeurs périphériques à six voies, la sixième voie servant à relier un module d'entrée/sortie. Cette solution a io l'inconvénient que les routeurs périphériques seront plus grands en surface que les routeurs internes, ce qui pose des problèmes de placement/routage des routeurs sur la puce. Pour des raisons de simplification de la conception, on préfèrera que tous les routeurs soient identiques, à six voies. Dans ce cas les routeurs internes auront des fonctions inutilisées qui occuperont inutilement de 15 la surface. A titre indicatif, un routeur à six voies comporterait, par rapport à celui de la figure 2, un multiplexeur de plus, et chaque multiplexeur aurait cinq entrées, avec les mémoires FIFO correspondantes. La figure 3 illustre une solution permettant de limiter ces inconvénients. On 20 retrouve le réseau matriciel torique de la figure 1. On a inséré, en périphérie de la matrice, des routeurs à trois voies IOR, que l'on désignera par � routeur d'entrée/sortie �. Deux des voies de chacun de ces routeurs IOR servent à assurer la continuité de la rangée ou colonne dans laquelle le routeur se trouve. La troisième voie sert à relier un module d'entrée/sortie 10M. Contrairement aux 25 routeurs internes RTR, que l'on appellera � routeurs d'infrastructure �, les routeurs IOR disposés dans les rangées ne sont pas reliés à des routeurs de la même colonne. De même, les routeurs IOR disposés dans les colonnes ne sont pas reliés à des routeurs de la même rangée. Dans l'hypothèse où la matrice initiale a une dimension de nxn, l'ajout des 30 routeurs IOR selon la figure 3 porterait la dimension de la matrice à (n+2)x(n+2). Si les routeurs d'entrée/sortie IOR ont le même fonctionnement que les routeurs d'infrastructure RTR, le réseau de la figure 3 est susceptible d'avoir une latence plus grande que celui de la figure 1. Néanmoins, comme les routeurs IOR opèrent sur seulement trois voies, la latence qu'ils introduisent est inférieure à la latence qu'introduiraient des routeurs à cinq voies. La figure 4 représente schématiquement un mode de réalisation de routeurs assurant que les routeurs d'entrée/sortie IOR n'introduisent aucune latence. On a représenté une portion Est d'un routeur d'infrastructure RTR, notamment son multiplexeur MXE et son circuit de commande 22, reliée à un routeur d'entrée/sortie IOR, représenté en totalité. Le routeur IOR, étant à trois voies, comporte trois multiplexeurs à deux entrées. Un multiplexeur Ouest mxw reçoit sur une première entrée des données provenant du module d'entrée/sortie 10M, et sur une deuxième entrée les données provenant d'un routeur non représenté placé à l'Est. Un multiplexeur Est mxe reçoit sur une première entrée des données provenant du module d'entrée/sortie 10M, et sur une deuxième entrée les données provenant du multiplexeur Est MXE du routeur RTR représenté. Les données provenant du module d'entrée/sortie 10M arrivent aux entrées correspondantes des multiplexeurs mxw et mxe par l'intermédiaire de queues FIFO 24. Par contre, comme cela est représenté, toutes les autres entrées des multiplexeurs du routeur IOR sont dépourvues de queues FIFO. De cette 20 manière, des données traversant le routeur IOR ne subissent aucune latence. La description suivante de la coopération entre un routeur RTR et un routeur IOR est faite en faisant allusion aux éléments représentés à la figure 4, c'est-à-dire une liaison entre un routeur IOR avec un routeur RTR placé à l'Ouest. Le fonctionnement est similaire pour les autres combinaisons possibles dans un 25 réseau. Afin d'assurer qu'aucune donnée ne soit perdue du fait de l'absence de queues FIFO à la traversée du routeur IOR, les circuits de commande CTRL des routeurs IOR et RTR interagissent de manière que la combinaison des multiplexeurs MXE et mxe représentés se comporte comme un seul 30 multiplexeur à cinq canaux munis de queues FIFO. Ces cinq canaux sont constitués par les quatre entrées du multiplexeur MXE et l'entrée du multiplexeur mxe associée au module 10M. Lorsque le module 10M n'a aucune donnée à fournir sur la sortie Est du routeur IOR, le multiplexeur mxe est positionné pour sélectionner la sortie du multiplexeur MXE du routeur RTR. Le multiplexeur MXE est commandé de manière classique et les données qu'il fournit sont transmises directement, sans latence, sur la sortie Est du routeur IOR. Lorsque le module 10M commence à fournir des données, elles s'empilent dans la queue 24 du multiplexeur mxe. Le circuit de commande 22' du routeur IOR active alors un signal de requête RQIO à l'attention du circuit de commande 22 du routeur RTR. Celui-ci passe alors dans un mode d'arbitrage sur cinq canaux au lieu de quatre, le cinquième canal étant celui associé à la queue 24 du multiplexeur mxe. Lorsque l'arbitre décide de servir le cinquième canal, le circuit de commande du routeur RTR active un signal d'acquittement AQIO à destination du circuit de commande du routeur IOR. Ce dernier positionne le multiplexeur mxe pour sortir une unité de données, par exemple un paquet, de la queue 24. Tant que la queue 24 contient des données, le signal RQIO reste actif et le circuit de commande du routeur RTR reste en mode d'arbitrage sur cinq canaux. Le signal AQIO est activé paquet par paquet, à chaque fois que l'arbitre décide de servir le cinquième canal. En principe, seuls les routeurs d'infrastructure RTR reliés à des routeurs d'entrée/sortie IOR sont prévus pour mettre en oeuvre le mécanisme qui vient d'être décrit. Néanmoins, ce mécanisme impliquant de la logique occupant une surface négligeable, on pourra prévoir cette logique dans tous les routeurs d'infrastructure pour que tous ces routeurs soient identiques. On facilite ainsi la conception des réseaux. Les routeurs qui n'utilisent pas la fonctionnalité auront leur entrée associée au signal RQIO câblée à un niveau logique inactif. Dans un réseau torique tel que représenté en figure 3, on trouve deux routeurs IOR à la suite dans les liaisons entre les bords de la matrice. Ces routeurs IOR devraient donc se relayer les signaux RQIO et AQIO. Néanmoins, la figure 3 correspond à une représentation simplifiée pour des raisons de clarté. En pratique, on cherche à éviter des liaisons aussi longues que celles qui relieraient les bords. La figure 5 représente un réseau matriciel torique dans lequel les longueurs des liaisons entre noeuds sont optimisées. La matrice est de dimension 4x4, à titre d'exemple. Les routeurs d'infrastructure sont représentés en trait normal, et les routeurs d'entrée/sortie sont représentés en trait gras. Les routeurs d'infrastructure sont reliés de manière entrelacée par rangées et colonnes, c'est-à-dire qu'un routeur de rang n, dans une colonne ou une rangée, est relié à un routeur de rang n+2 (les routeurs périphériques échappant à cette règle pour l'une de leurs liaisons). Les routeurs d'entrée/sortie viennent s'insérer dans les liaisons sortant des routeurs io d'infrastructure périphériques. Avec cette configuration, toutes les liaisons entre routeurs ont une longueur de même ordre, et chaque routeur d'entrée/sortie se trouve entre deux routeurs d'infrastructure. Revendications1. Réseau maillé torique comprenant une matrice de routeurs d'infrastructure (RTR) dont chacun est relié à deux autres routeurs appartenant à une même rangée et à deux autres routeurs appartenant à une même colonne, caractérisé en ce qu'il comprend en outre des routeurs d'entrée/sortie (IOR) dont chacun est relié à deux autres routeurs appartenant, soit à une même rangée, soit à une même colonne. 2. Réseau maillé selon la revendication 1, caractérisé en ce que les routeurs d'entrée/sortie sont des routeurs à trois voies. 3. Réseau maillé selon la revendication 1, caractérisé en ce que : chaque routeur d'entrée/sortie (IOR) comprend une queue (24) pour stocker des données provenant d'une entrée externe (10M) à destination du réseau ; et un routeur d'infrastructure (RTR) connecté pour envoyer des données sur un segment sur lequel se trouve un routeur d'entrée/sortie (IOR) comprend un arbitre (22) prévu pour gérer la queue (24) du routeur d'entrée/sortie en combinaison avec des queues (20) du routeur d'infrastructure. 4. Réseau maillé selon la revendication 3, caractérisé en ce que chaque routeur d'entrée/sortie (IOR) comprend un multiplexeur à deux entrées (mxe) dont une première entrée reçoit les données de la queue (24) du routeur d'entrée/sortie, et une deuxième entrée reçoit directement des données (MXE) envoyées par le routeur d'infrastructure se trouvant sur le même segment. 5. Réseau maillé selon la revendication 1, caractérisé en ce que les routeurs sont reliés de manière entrelacée par rangées et colonnes. 8