FR 2979444 A1 20130301 FR 1157471 A 20110823 RESEAU SUR PUCE EXTENSIBLE Domaine technique de l'invention L'invention est relative aux matrices de processeurs intégrées, dans lesquelles les processeurs sont interconnectés par des réseaux sur puce (« NoC »). L'invention concerne plus particulièrement une architecture de matrice de processeurs ayant une régularité telle que les outils de programmation peuvent s'adapter au nombre de processeurs de la matrice avec une assistance minimale du programmateur. État de la technique La figure 1 représente schématiquement une matrice de processeurs PA comprenant 4x4 noeuds de calcul N agencés dans un réseau sur puce de topologie torique repliée, telle que décrite dans la demande de brevet US 20110058569. Dans une topologie matricielle, chaque noeud est relié à deux autres noeuds de la même rangée et à deux autres noeuds de la même colonne, par des liaisons point à point bidirectionnelles. Dans une topologie torique, les noeuds de la matrice sont en outre reliés en boucle dans chaque rangée et dans chaque colonne, de sorte que tous les noeuds ont la même structure physique quant à leurs interconnexions, notamment les noeuds situés aux bords de la matrice. Dans une topologie repliée, qui est celle représentée en figure 1, chaque noeud (sauf s'il est situé en bord de matrice) est relié à deux autres noeuds de même parité dans la rangée et dans la colonne, de sorte que les liaisons entre les noeuds aient sensiblement la même longueur. Chaque noeud N comprend un routeur à cinq voies qui gère les quatre liaisons, dites Nord, Sud, Est et Ouest, vers les noeuds suivants dans la rangée et la colonne, et une liaison avec un module de calcul, constitué par exemple d'une grappe de processeurs interconnectés par un bus parallèle. La matrice de processeurs PA est réalisée dans un seul circuit intégré. Afin de communiquer avec l'extérieur, elle comprend des modules d'entrée/sortie IO insérés dans le réseau sur puce aux bords de la matrice. Comme cela est représenté, on peut prévoir un tel module IO à chaque extrémité de chaque colonne et de chaque rangée. Plus spécifiquement, chaque module est inséré dans la liaison reliant les deux noeuds N extrémaux d'une même rangée ou d'une même colonne. Chaque module IO comporte un routeur à trois voies qui gère les deux liaisons avec les noeuds N et une liaison avec une interface d'entrée/sortie. L'interface d'entrée/sortie permet une communication avec l'extérieur du circuit par des bornes métalliques du circuit intégré, destinées à être mises en contact avec des pistes conductrices d'un circuit imprimé ou autre substrat. Pour faciliter la programmation d'une telle matrice de processeurs, tous les noeuds de 5 calcul N ont des caractéristiques similaires, ce qui permet à un outil de développement de mapper des tâches, en mode automatique, sur n'importe lequel des noeuds. Pour cela, les modules IO sont conçus pour être transparents aux communications purement internes au réseau sur puce. La demande de brevet US 20110058569 décrit en outre une solution permettant de réduire la latence au passage des routeurs des modules IO pour 10 les communications internes. Dans le cadre d'une commercialisation de circuits intégrés standard, la taille de la matrice de processeurs serait proposée dans une gamme relativement restreinte Ainsi, la puissance de calcul délivrée par la plus grande matrice de la gamme pourrait s'avérer insuffisante pour certaines applications. 15 Selon un mode de réalisation, le circuit intégré comprend des interfaces d'entrée/sortie disposées dans des liaisons entre noeuds de calcul aux extrémités des rangées et des colonnes, et aptes à communiquer avec l'extérieur du circuit intégré par des bornes d'entrée/sortie. Les modules d'extension sont configurés pour, en mode d'extension, utiliser ces bornes d'entrée/sortie pour rendre les segments accessibles de l'extérieur. 20 Selon un mode de réalisation, le circuit intégré comprend un répartiteur de charge commun aux modules d'extension d'un même bord de la matrice, configuré pour répartir les canaux série sortants disponibles entre les segments pour lesquels une transmission sortante est en cours. Selon un mode de réalisation, le répartiteur de charge est prévu pour insérer dans un 25 entête de chaque transmission série sortante une identification du segment d'origine. Selon un mode de réalisation, le répartiteur de charge est prévu pour exploiter l'entête de chaque transmission série entrante pour rediriger le canal série correspondant vers le segment identifié dans l'entête. Selon un mode de réalisation, les canaux série transmettent des données par paquets et 30 comprennent des queues de paquets en attente de transmission, le répartiteur de charge étant prévu pour aiguiller les paquets vers les canaux série ayant les queues les moins pleines. Résumé de l'invention On souhaite donc disposer de plus de puissance de calcul que celle délivrée par la plus grande matrice de processeurs d'une gamme. On souhaite en outre pouvoir augmenter cette puissance de calcul sans affecter les outils de développement de programmes pour 5 les matrices de processeurs. On tend à satisfaire ces besoins en prévoyant un circuit intégré comprenant des noeuds de calcul disposés en matrice, et un réseau sur puce de topologie torique repliée interconnectant les noeuds de calcul. Un module d'extension de réseau est prévu à chaque extrémité de chaque rangée ou colonne de la matrice, inséré dans la liaison entre 10 deux noeuds de calcul. Le module d'extension a un mode normal établissant la continuité de la liaison entre les deux noeuds de calcul correspondants, et un mode d'extension où la liaison est coupée en deux segments rendus accessibles de l'extérieur de manière indépendante. Description sommaire des dessins 15 Des modes de réalisation seront exposés plus en détail dans la description suivante, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1, précédemment décrite, représente une matrice de processeurs interconnectés par un réseau sur puce de topologie torique repliée ; - la figure 2 illustre une macro-matrice réalisée à partir de matrices de 20 processeurs ; - la figure 3 illustre une interconnexion souhaitable entre deux matrices adjacentes de la macro-matrice permettant une extension de réseau en préservant la topologie ; - la figure 4 représente un mode de réalisation de modules d'extension de réseau ; 25 et - la figure 5 représente un autre mode de réalisation de modules d'extension de réseau. Description d'un mode de réalisation préféré de l'invention La figure 2 illustre une solution envisageable pour augmenter la puissance de calcul 30 disponible lorsque celle fournie par une seule matrice de processeurs, sous la forme d'un circuit intégré standard, est insuffisante. Comme cela est représenté, plusieurs matrices de processeurs PAl, PA2... sont assemblées sur un substrat, tel qu'un circuit imprimé, en une macro-matrice de taille suffisante pour atteindre la puissance de calcul requise. Chaque matrice PA pourrait être programmée et utilisée de manière indépendante, mais cela impliquerait des efforts de la part du programmeur pour scinder les tâches à effectuer en des sous-tâches indépendantes et équilibrées en termes de puissance de calcul. Il faudrait en outre exécuter un système d'exploitation en dehors des matrices pour répartir les sous-tâches entre les matrices, alors qu'une matrice est normalement programmée pour exécuter son propre système d'exploitation et être de ce fait autosuffisante. Pour éviter cette complexité, on souhaite que la macro-matrice puisse être considérée, du point de vue de l'outil de programmation, comme une matrice de processeurs unique. Pour cela, il convient que les noeuds de calcul de toutes les matrices PA forment 15 ensemble un réseau unique. Une solution envisageable pour cela est de relier les matrices PA entre elles par leurs interfaces d'entrée/sortie et d'émuler des liaisons réseau bidirectionnelles entre les interfaces de deux matrices adjacentes. Une telle émulation implique néanmoins une complexité logicielle supplémentaire qui dépend de la taille et du nombre de matrices 20 formant la macro-matrice. En outre, cette solution nécessiterait que les interfaces d'entré/sortie soient toutes identiques et que les extrémités de toutes les rangées et colonnes soient munies de telles interfaces d'entré/sortie. En pratique, une matrice de processeurs standard aurait un nombre limité d'interfaces d'entrée/sortie, et celles-ci seraient de natures différentes. 25 La figure 3 illustre, dans le cadre de matrices à topologie torique repliée, le type de connexion souhaité entre deux matrices adjacentes, PAl et PA2, pour que les réseaux sur puce des deux matrices n'en forment qu'un, de même topologie. L'exemple représenté correspond à l'extension du réseau par l'intermédiaire des rangées des matrices - on notera que le même principe s'applique aux colonnes. 30 Dans chaque rangée de la matrice PAl, les liaisons des deux derniers noeuds N avec leur module d'entrée/sortie IO sont ouvertes (dans le cas où il n'y a pas de module IO à cet endroit, c'est la liaison entre les deux derniers noeuds qui est ouverte). De même, dans la rangée homologue de la matrice PA2, les liaisons des deux premiers noeuds N avec leur module d'entrée/sortie IO sont ouvertes (dans le cas où il n'y a pas de module IO à cet endroit, c'est la liaison entre les deux premiers noeuds qui est ouverte). Les liaisons internes ainsi ouvertes, représentées en pointillés, sont remplacées par des liaisons externes Lel et Le2, assurant une jonction d'une rangée de la matrice PA1 avec une rangée homologue de la matrice PA2 de sorte à former une rangée étendue de même topologie que les rangées internes. Pour cela, la liaison Lel relie l'avant dernier noeud de la rangée de la matrice PA1 au premier noeud de la rangée de la matrice PA2, et la liaison Le2 relie le dernier noeud de la rangée de la matrice PA1 au deuxième noeud de la rangée de la matrice PA2. Dans une réalisation pratique, chaque liaison interne ainsi « remplacée » par une liaison externe est coupée en deux segments rendus accessibles de l'extérieur de manière indépendante Ainsi, la liaison interne entre les deux noeuds extrémaux d'une rangée, passant le cas échéant par un module d'entrée/sortie IO, est coupée en deux segments à relier aux segments homologues du circuit adjacent, respectivement par les liaisons externes Lel et Le2. On remarque que la topologie torique repliée est particulièrement bien adaptée à cette extension. En effet, les deux noeuds affectés par les liaisons externes dans chaque rangée d'une matrice s'avèrent être les noeuds les plus proches du bord. On remarque en outre que les modules IO des bords en regard des matrices PA1 et PA2 20 ne sont plus utilisés. Cela est conforme à la volonté de créer une macro-matrice de même topologie que les matrices individuelles, où les modules IO se trouvent à la périphérie. On peut ainsi étendre les rangées et les colonnes sur plusieurs circuits PA juxtaposés, selon une configuration où les rangées et colonnes étendues ont la même topologie, 25 torique repliée, que les rangées et colonnes d'un circuit PA individuel. Une macro-matrice ainsi formée peut être programmée à l'aide du même outil de développement que celui d'une matrice PA classique. En effet, compte tenu de la régularité de la matrice classique et de l'interchangeabilité des noeuds N, l'outil de développement n'a besoin de connaître que les dimensions de la matrice pour mapper 30 de manière automatisée des tâches à exécuter sur les différents noeuds et construire un schéma de communication entre les noeuds par l'intermédiaire du réseau sur puce. Dans le cas d'une macro-matrice conservant sur son ensemble la topologie d'une matrice classique, il suffit de paramétrer l'outil de développement avec les dimensions de la macro-matrice, en nombre de noeuds de calcul. La figure 4 représente un mode de réalisation détaillé d'une structure pour établir les liaisons externes Lel et Le2 entre deux rangées de deux matrices adjacentes PA1 et PA2. Habituellement les liaisons internes entre les noeuds N sont réalisées par des bus constitués de nombreux conducteurs. Il n'est pas envisageable d'étendre ces bus par des liaisons externes Lel et Le2 comportant autant de conducteurs, car les circuits intégrés incorporant les matrices ne pourraient pas disposer de suffisamment de bornes de contact externes dans la plupart des cas. Pour éviter cette complication, chaque liaison externe Lel, Le2 est prévue sous la forme d'une liaison série rapide. En fait, comme les liaisons internes sont bidirectionnelles, chaque liaison externe Lel, Le2 est formée de deux liaisons série de sens opposés, comme cela est représenté. Chaque liaison externe Lel, Le2 requiert alors seulement deux bornes 40 sur chaque circuit intégré PA. Ces bornes pourront éventuellement être empruntées aux interfaces d'entrée/sortie IO inutilisées, comme cela est représenté pour la liaison Le2. En disposant judicieusement les bornes 40, c'est-à-dire de manière que les bornes à interconnecter de deux circuits PA adjacents soient face à face, les circuits PA pourront être placés près l'un de l'autre pour raccourcir au maximum les pistes conductrices servant aux liaisons série entre les circuits PA. Du fait que les pistes sont courtes (de l'ordre du millimètre), et que l'on ne cherche pas à réaliser des interfaces série standard, on pourra atteindre des fréquences de transmissions série particulièrement élevées, de l'ordre de la dizaine de Gb/s. Par ailleurs, chaque extrémité des rangées et des colonnes d'une matrice PA est munie d'un module d'extension 42. Le module 42 comprend un convertisseur série/parallèle/série (SERDES) pour chaque liaison externe Lel, Le2 - il convertit des données parallèles internes en un flot série sur la liaison série sortante, et des données sur la liaison série entrante en un flot parallèle interne. Les flots parallèles transitent par des commutateurs S1, S2, associés respectivement aux liaisons externes Lel, Le2. Les commutateurs S1 et S2 sont commandés par un signal d'extension de réseau EXT. Lorsque le signal EXT est inactif, le module 42 est en mode normal. Les commutateurs Si et S2 relient les deux noeuds N extrémaux à leur module d'entrée/sortie IO, dans une configuration classique de matrice PA utilisée de façon isolée. Dans le cas où il n'y a pas de module IO, celui-ci est remplacé par une liaison directe entre les commutateurs S1 et S2. Lorsque le signal EXT est actif, le module 42 est en mode d'extension de réseau. Les commutateurs Si et S2 relient les noeuds extrémaux à leurs convertisseurs SERDES respectifs, mettant les circuits PA dans la configuration de la figure 3. Le signal EXT est de préférence commun à tous les modules d'extension 42 d'un même bord du circuit PA. On prévoit ainsi quatre signaux EXT par circuit PA, permettant de commander indépendamment les modules d'extension 42 de chaque bord du circuit, en fonction de l'emplacement du circuit PA dans la macro-matrice. Les états des signaux PA sont stockés, par exemple, dans un registre de configuration programmable de l'extérieur. Bien que l'on puisse réaliser des liaisons série rapides entre deux circuits PA adjacents, elles ne pourront en pratique pas atteindre le débit des liaisons parallèles internes Ainsi, le réseau étendu présente une limitation de bande passante à chaque passage entre deux circuits PA, de sorte que les performances atteintes par la macro-matrice ne sont pas proportionnelles au nombre de circuits PA. La figure 5 représente un mode de réalisation permettant d'augmenter la bande passante moyenne au passage entre deux circuits PA. Dans cette figure, les modules 42 sont représentés dans leur mode d'extension - on n'a pas représenté les éléments utilisés dans le mode normal, notamment les modules IO, pour des raisons de clarté. Ce mode de réalisation vise à optimiser l'usage des liaisons externes et est issu du principe que la bande passante utile est souvent inégalement répartie entre les liaisons, notamment entre les liaisons sortantes. On prévoit ainsi de répartir de manière dynamique la bande passante des canaux série sortants entre les transmissions sortantes. Pour chaque rangée (ou colonne), on dispose de deux canaux série sortants, associés respectivement aux liaisons externes Lel et Le2. Si un circuit PA comporte M rangées (ou colonnes), on dispose de 2M canaux série sortants. Les commutateurs S1 et S2 de tous les modules d'extension 42 d'un bord de la matrice sont remplacés par un répartiteur de charge LB qui se charge de commuter les flux parallèles sortants vers un ou plusieurs convertisseurs SERDES, selon la disponibilité des canaux série sortants. Dans l'exemple de la figure 5, une transmission sortant par la liaison Le2 de la première rangée emprunte en parallèle le canal sortant disponible de la liaison Lel. La répartition de charge s'effectue par exemple par paquets : certains paquets venant du noeud supérieur droit du circuit PA1 empruntent la liaison Lel tandis que d'autres empruntent la liaison Le2. On a représenté en outre une transmission sortant par la liaison Le2 de la quatrième rangée qui emprunte en parallèle les canaux sortants des liaisons Le2 des deuxième et 5 troisième rangées. Une transmission série s'effectue généralement par paquets. Chaque canal série comporte alors une queue de transmission dans laquelle sont empilés les paquets à transmettre. La détermination des canaux série allouables à la répartition de charge peut, par exemple, être effectuée en utilisant les niveaux de remplissage des queues des 10 canaux série : un paquet sortant sera aiguillé vers la queue la moins pleine au moment de son arrivée dans le répartiteur de charge. On vient de décrire une moitié de la fonction de répartition de charge, réalisée par le circuit PA émetteur de données (PA1). L'autre moitié de la fonction est réalisée par le répartiteur de charge LB du circuit PA récepteur des données (PA2). Le répartiteur de 15 charge du circuit émetteur, c'est-à-dire celui (PA1) qui a alloué les canaux série sortants, identifie les transmissions en cours et leurs liaisons internes d'origine. Le répartiteur de charge du circuit récepteur (PA2) reçoit l'information d'identification et redirige les canaux série entrants vers les liaisons internes identifiées. Les informations d'identification peuvent être insérées dans des entêtes à inclure dans 20 les transmissions série, conformément à des protocoles de transmission série normalisés, comme le protocole Interlaken. Si le circuit récepteur PA2 a des données à transmettre au circuit émetteur PA1, la transmission est effectuée en inversant les rôles des circuits PA1 et PA2. Les transmissions dans un sens et dans l'autre empruntant des canaux série distincts, les 25 deux transmissions peuvent être effectuées en même temps et de manière indépendante. En utilisant un répartiteur de charge LB opérant de manière dynamique comme on vient de l'expliquer, on s'aperçoit qu'on peut très bien prévoir moins de canaux série bidirectionnels que de liaisons internes. Dans certaines applications, il peut s'avérer suffisant de prévoir, par exemple, un canal série bidirectionnel pour deux ou quatre 30 liaisons internes. Cela permet de réduire le nombre de bornes externes du circuit, et surtout de réduire la surface occupée par les convertisseurs SERDES. Le répartiteur de charge opérera de la même manière que décrite ci-dessus ; il disposera seulement de moins de canaux série à allouer. Des modes de réalisation de réseaux sur puce extensibles par l'extérieur ont été présentés dans le cadre d'une extensibilité illimitée d'une matrice de processeurs tout en maintenant une compatibilité avec des outils de développement conçus pour des circuits individuels, qu'il suffit de paramétrer avec la taille de la matrice étendue. Il n'est pas exclu que les outils de développement évoluent pour prendre en compte les spécificités des liaisons externes entre circuits. Dans ce cas, plutôt que d'utiliser un répartiteur de charge pour aiguiller les paquets sortants de manière dynamique vers les canaux série, les canaux série peuvent être alloués de manière statique à la programmation, à l'aide d'informations de routage placés dans les entêtes des paquets. Le répartiteur de charge est alors remplacé par un routeur qui aiguille les paquets vers les canaux série en fonction des informations dans les entêtes. REVENDICATIONS1. Circuit intégré comprenant : - des noeuds de calcul (R) disposés en matrice ; - un réseau sur puce de topologie torique repliée interconnectant les noeuds de calcul ; caractérisé en ce qu'il comprend un module d'extension de réseau (42) à chaque extrémité de chaque rangée ou colonne de la matrice, inséré dans la liaison entre deux noeuds de calcul, le module d'extension ayant : - un mode normal établissant la continuité de la liaison entre les deux noeuds de calcul correspondants ; et - un mode d'extension où la liaison est coupée en deux segments rendus accessibles de l'extérieur de manière indépendante. 2. Circuit intégré selon la revendication 1, dans lequel la liaison est un bus à multiples conducteurs et le module d'extension comprend pour un segment : - un convertisseur parallèle/série (SERDES) formant un canal série sortant pour transmettre en série par une première borne externe (40) du circuit des données présentées en parallèle sur les conducteurs du segment, et - un convertisseur série/parallèle formant un canal série entrant pour transmettre en parallèle sur les conducteurs du segment des données arrivant en série sur une deuxième borne (40) du circuit. 3. Circuit intégré selon la revendication 1, comprenant des interfaces d'entrée/sortie (IO) disposées dans des liaisons entre noeuds de calcul aux extrémités des rangées et des colonnes, et aptes à communiquer avec l'extérieur du circuit intégré par des bornes d'entrée/sortie, les modules d'extension (42) étant configurés pour, en mode d'extension, utiliser lesdites bornes d'entrée/sortie pour rendre les segments accessibles de l'extérieur. 4. Circuit intégré selon la revendication 2, comprenant un répartiteur de charge (LB) commun aux modules d'extension d'un même bord de la matrice, configuré pour répartir les canaux série sortants disponibles entre les segments pour lesquels une transmission sortante est en cours. 5. Circuit intégré selon la revendication 4, dans lequel le répartiteur de charge est prévu pour insérer dans un entête de chaque transmission série sortante une identification du segment d'origine. 6. Circuit intégré selon la revendication 5, dans lequel le répartiteur de charge est prévu pour exploiter l'entête de chaque transmission série entrante pour rediriger le canal série correspondant vers le segment identifié dans l'entête. 7. Circuit intégré selon la revendication 4, dans lequel les canaux série transmettent des données par paquets et comprennent des queues de paquets en attente de transmission, le répartiteur de charge étant prévu pour aiguiller les paquets vers les canaux série ayant les queues les moins pleines.