Brevet FR3009466A1 — publié le 20150206

Réseau sur puce multiprocesseur La présente invention concerne un réseau sur puce multiprocesseur, utilisable notamment dans des équipements avioniques, du type ayant une pluralité de modes de fonctionnement choisis par l'utilisateur, et comprenant au moins deux processeurs propres à assurer le traitement de données reçues et produisant des données traitées sous forme des messages discrets, au moins un commutateur réseau raccordé à au moins un processeur, les commutateurs étant connectés entre eux, chaque commutateur étant propre à transmettre les messages discrets d'après des règles de routage, les règles de routage étant différentes pour différents modes de fonctionnement. Les réseaux sur puce multiprocesseur sont utilisés dans de nombreux équipements avioniques nécessitant des moyens de calcul puissants et travaillant en temps réel. Tel est surtout le cas des radars ou des sonars qui transmettent des images ou d'autres types de signaux au calculateur central qui, de son côté, fait une analyse des données reçues et envoie une réponse adaptée à la situation en temps limité. C'est pour cette raison que de plus en plus d'applications modernes sont construites sur une architecture multiprocesseur ce qui permet de diminuer considérablement le temps de calcul. Les réseaux sur puce multiprocesseur (NoC pour « Network on Chip » en anglais) assurent le transport de données entre les processeurs aux travers de commutateurs réseau et jouent un rôle important dans un tel type d'architecture. Aussi, ils doivent répondre à certains critères comme : - la prédictibilité du temps de transfert des données jusqu'à leur(s) destination(s) finale(s), - la possibilité de reconfiguration du réseau en cours de fonctionnement, - la gestion de collisions entre messages, et - l'extensibilité du réseau sur plusieurs puces. Différentes solutions permettant de satisfaire des critères précités ont déjà été proposées dans l'état de la technique. Ainsi, par exemple, Il existe des réseaux sur puce multiprocesseur du type précité, dans lesquelles la reconfiguration du réseau en cours de fonctionnement est rendue possible grâce à des règles de routage dynamiques qui peuvent être modifiées dans les commutateurs réseau et qui peuvent ainsi être adaptées aux différents modes de fonctionnement. Toutefois, cette solution ne permet ni de prédire le temps de transfert des données entre processeurs ni d'éviter les collisions possibles entre messages lors du transfert. L'invention a pour but de proposer un réseau sur puce multiprocesseur permettant de maitriser le temps de transfert en évitant les collisions entre messages tout en gardant une possibilité de reconfigurer le réseau en cours de fonctionnement. A cet effet, l'invention a pour objet un réseau sur puce multiprocesseur du type précité, caractérisé en ce que chaque processeur, pour un mode de fonctionnement donné, comporte des règles de routage pour tous les messages discrets pouvant être émis par ce processeur et des moyens de transfert d'au moins une règle de routage à au moins un commutateur avec chaque message discret émis par le processeur. Selon des modes particuliers de réalisation de l'invention, le réseau sur puce multiprocesseur comporte, l'une ou plusieurs des caractéristiques suivantes : - chaque commutateur comporte des ports pouvant recevoir ou émettre des messages discrets de ou vers les processeurs ou les commutateurs ayant une connexion directe avec ce commutateur et chaque port comprend une machine d'état propre assurant la transmission des messages discrets au sein du commutateur ou avec un processeur ou un autre commutateur ayant une connexion directe avec ce commutateur ; - chaque machine d'état associée à un port émetteur comporte des moyens d'émission d'une requête vers un port récepteur en cas de réception d'un message discret à transmettre au port récepteur, chaque machine d'état associé à un port récepteur comporte des moyens d'émission d'un acquittement vers un port émetteur après réception d'une requête si le port récepteur est en mesure de recevoir le message discret et chaque machine d'état associée à un port émetteur comporte des moyens d'émission d'un message discret seulement après réception de l'acquittement ; - les règles de routage pour chaque mode de fonctionnement sont définies de sorte à interdire les collisions entre des messages discrets ; - ledit réseau sur puce multiprocesseur comporte des moyens de configuration propre à assurer la transmission des règles de routage à tous les processeurs avant chaque lancement d'un mode de fonctionnement ; - les règles de routage propres à un message discret sont incluses en entête de ce message discret par le processeur l'ayant émis et comportent l'information sur les processeurs destinataires et sur les commutateurs assurant ce transfert ; et - les règles de routage, pour un processeur donné, sont définies sous forme d'une table de routage comportant des chemins fixés pour chaque destination. L'invention a également pour objet un équipement à plusieurs puces multiprocesseurs comportant une pluralité de réseaux sur puce multiprocesseur tels que définis ci-dessus, les différents réseaux sur puce multiprocesseur fonctionnant dans un même mode de fonctionnement étant raccordés via des ponts sans organe centralisé. L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins, sur lesquels : - la figure 1 est une vue schématique d'un radar; - la figure 2 est une vue schématique d'un réseau sur puce multiprocesseur mis en oeuvre dans le radar de la figure 1 ; - la figure 3 est une vue schématique d'un processeur du réseau de la figure 2 montrant des tables de routage ; - la figure 4 est une vue schématique d'un commutateur du réseau de la figure 2; - la figure 5 est une vue schématique illustrant le transfert des données entre deux ports ; - la figure 6 est une vue schématique de deux puces selon la figure 2 connectées ; et - la figure 7 est un organigramme illustrant la communication d'un port émetteur et d'un port récepteur lors d'un transfert des données. Le fonctionnement de l'invention sera illustré sur un exemple d'un radar 10 présenté sur la figure 1. Le radar est installé sur un avion. Le radar 10 comporte successivement une antenne 11 placée à l'avant de l'avion, un convertisseur analogique/numérique 12, une unité de traitement des signaux 13, une unité d'interprétation des données 14 et une unité de visualisation 15. L'unité de traitement des signaux 13 est apte à recevoir des signaux numériques bruts issus du convertisseur 12 relié à l'antenne 11 et à les convertir en données numériques interprétable par l'unité 14. L'unité de traitement des signaux 13 comporte un ou plusieurs, par exemple deux, réseaux sur puce multiprocesseur 16 permettant de recevoir des signaux numériques, de les traiter et de les envoyer vers l'unité d'interprétation des données 14. Les traitements des signaux mis en oeuvre par l'unité 13 sont assez répétitifs et nécessitent beaucoup de calculs réalisés en parallèle et en temps réel. Ces traitements sont propres par exemple à assurer une compression d'impulsion et un calcul de la vitesse Doppler d'un objet détecté par le radar. L'unité 13 comporte des moyens 17 de configuration propres à assurer le fonctionnement de chaque réseau sur puce multiprocesseur 16 suivant plusieurs modes de fonctionnement distincts chacun caractérisé par la mise en oeuvre sur chaque processeur d'algorithmes spécifiques au mode de fonctionnement et par des cheminements des signaux traités ou à traiter entre les processeurs propres à chaque mode. Une telle reconfiguration et donc un changement de mode de fonctionnement est nécessaire par exemple en cas d'usage de brouilleurs par les entités observées par le radar. Un réseau sur puce multiprocesseur 16 est illustré sur la figure 2. Il est formé de préférence d'un circuit FPGA pour « Field-Programmable Gate Array » en anglais. Il comporte, par exemple, huit processeurs 21A à 21H propres à recevoir, à traiter et à émettre des données numériques sous forme de messages discrets, et quatre commutateurs réseau 22A à 22D propres à assurer le transfert des messages discrets entre les processeurs 21 suivant des lois de routage prédéfinies pour chaque mode. Les commutateurs réseau 22, souvent désignés par « switch » en anglais sont propres à acheminer les messages d'un processeur à l'autre par un chemin prédéfini contenu de manière explicite dans chacun des messages. Les commutateurs réseau 22 sont reliés par des liens physiques 23 raccordant un commutateur 22 avec d'autres commutateurs 22 ou un commutateur 22 avec des processeurs 21. Ces liens 23 sont par exemple des bus 32 bits. Chaque processeur 21 est connecté au réseau via un commutateur 22 alors que chaque commutateur 22 est connecté à plusieurs processeurs 21, notamment deux et à plusieurs commutateurs 22, notamment deux. Chaque message discret représente un ensemble cohérent de données numériques. Les messages discrets circulent dans le réseau sur puce multiprocesseur 16 selon des règles de routage 40. Les règles de routage 40 sont différentes pour les différents modes de fonctionnement et sont transmises aux processeurs 21 par les moyens de configuration 17 via des liens de communication spécifiques représentés en traits pointillés sur la figure 2. Les moyens de configuration 17 comportent des algorithmes de traitement permettant pour chaque processeur 21 de mettre en oeuvre le mode de traitement retenu et des règles de routage 40 spécifiques pour chaque mode de fonctionnement du radar 10. Ils comportent en outre des moyens de chargement de ces algorithmes et règles de routage 40 dans chaque processeur 21. Suivant un exemple de réalisation, les moyens de configuration 17 sont réalisés de manière matérielle et forment un dispositif de calcul indépendant. Suivant un autre exemple de réalisation, les moyens de configuration 17 sont réalisés de manière logicielle et sont intégrés dans un ou plusieurs réseaux sur puce multiprocesseur 16. Les règles de routage 40 pour un mode de fonctionnement donné pour un processeur 21 sont mémorisées par les moyens de configuration 17 sous forme d'une table de routage 42 illustrée sur la figure 3. Chaque table de routage 42 correspond à un processeur 21 et comporte un chemin prédéfini pour chaque destination possible d'un message discret émis par ce processeur. Les chemins comprennent une suite ordonnée de commutateurs 22 à travers lesquels le message discret doit être transféré afin d'atteindre sa destination. Une table de routage 42 est chargée dans chaque processeur 21 à chaque configuration ou reconfiguration en plus des algorithmes de traitement propres à chaque processeur 21 au travers d'une entrée de configuration 43 visible sur la figure 3. Par ailleurs, chaque processeur 21 comporte une machine d'état 45 propre à initier le transfert des messages discrets dans le réseau sur puce multiprocesseur 16 ou à recevoir des messages discrets émis par d'autres processeurs 21. La machine d'état 45 comporte des moyens d'écriture des règles de routage 40 en entête de chaque message discret émis par le processeur 21. Ces règles de routage 40 définissent la destination du message discret et les commutateurs devant être empruntés. La machine d'état 45 est propre à envoyer une requête vers le commutateur réseau 22 à travers lequel le processeur 21 est raccordé au réseau 16. Seulement après réception d'un acquittement par le commutateur de cette requête, la machine d'état 45 est apte à envoyer un message discret vers ce commutateur. Pour la transmission des messages discrets, chaque commutateur réseau 22 comporte des ports d'entrée 50A et de sortie 50B. Chaque port 50 a une connexion directe vers tous les ports situés à l'intérieur du commutateur (figure 4) et, vers un processeur ou un port d'un autre commutateur. De plus, chaque port 50 comprend une machine d'état 51 propre à assurer la communication avec d'autres ports ou avec un processeur 21. Afin d'éviter toute perte de données, chaque machine d'état 51A d'un port émetteur 50A comporte des moyens d'envoi d'une requête 52 vers un port récepteur 50B ou une machine d'état 45 d'un processeur 21 dans le cas d'émission des messages discrets. La machine d'état 51B d'un port récepteur 50B comporte des moyens d'acquittement d'une requête 52 d'une machine d'état 51A d'un port émetteur 50A ou d'une machine d'état 45 d'un processeur 21 dans le cas de réception des messages discrets. La machine d'état 45 d'un processeur 22 comporte des moyens d'acquittement d'une requête d'une machine d'état 51A d'un port émetteur 50A dans le cas de réception des messages discrets. Par ailleurs, comme illustré sur la figure 5, chaque port 50 comporte des moyens 54 permettant de former une file d'attente des messages discrets si le port n'est pas disponible pour traiter un message discret immédiatement. Les moyens 54 comprennent une certaine quantité de mémoire associée à chaque machine d'état 51 apte à mémoriser un nombre de messages limité. Ils permettent ainsi à chaque machine d'état 51 de traiter chaque message discret à son tour. Cet ordre est fixé selon le principe « premier entré, premier sorti » (FIFO pour « First In, First Out » en anglais). Un ensemble de données numériques pouvant être transféré par le réseau sur puce multiprocesseur 16 à un moment (typiquement chaque coup d'horloge) s'appelle un flit. Ainsi, tous les messages discrets peuvent être divisés en flits. Les règles de routage 40 sont incluses en entête de chaque message discret par le processeur l'ayant émis. Ainsi, des flits de données propres à transférer des données numériques utiles pour les processeurs destinataires et des flits de routage propres à transférer des règles de routage et destinés uniquement aux commutateurs sont transmis. La table suivante illustre un exemple d'implémentation permettant de distinguer les deux types de flits par le premier bit significatif (MSB pour « Most Significant Bit » en anglais) et, à l'aide du deuxième bit significatif, de savoir si c'est le dernier flit dans une série de flits du type défini par le MSB. Premier bit significatif Deuxième bit significatif Flit de routage Dernier flit 1 0 Flit de routage 1 1 Dernier fit de routage 0 0 Flit de donnée 0 1 Dernier flit de donnée Une implémentation possible d'un flit de routage de 32 bits de large pour un réseau sur puce multiprocesseur, dont chaque commutateur est connecté au maximum à 4 processeurs et au maximum à 4 commutateurs, est présentée ci-dessous. Flit à 32 bits 31 130129128127126125124 23122121 120119118 17 116115 [14113 112 111101 9 1 8 1 7 1 6 5 1 4 1 3 2 1 1 1 0 Nombre de sauts Champs de Champs de routage 2 Champs de Champs de routage 0 routage 3 routage 1 Chaque flit de routage contient entre 1 et 4 champs de routage. Chacun correspond à un saut entre deux commutateurs. Le nombre de sauts encore à effectuer, et donc de champs à traiter, est contenu dans les 8 MSB du flit de routage considéré (bits 24 à 31). Ce compteur est décrémenté à chaque saut après avoir traité le champ correspondant et avant de transmettre le fin de routage au routeur suivant. Lorsqu'un flit de routage est totalement utilisé, il n'est plus transmis au commutateur suivant. Le commutateur suivant reçoit directement le flit de routage qu'il doit traiter. Chaque champ de routage contient 6 bits. Les quatre premiers bits indiquent au commutateur s'il faut transmettre les flits de donnée qui suivent à l'un ou plusieurs des processeurs connectés à ce commutateur. Un bit à 1 indique que les flits doivent être transmis au processeur correspondant. Un bit à 0 indique que le processeur correspondant ne reçoit rien. Les deux derniers bits indiquent le numéro correspondant à l'un ou plusieurs commutateurs recevant le message discret. Si le commutateur traite le dernier champ de routage du dernier flit de routage, les deux derniers bits de ce champ sont ignorés. La table suivante montre la structure d'un champ de routage : Champ de routage 5 1 4 1 3 1 2 1 I 0 Processeur(s) Commutateur La table suivante montre un exemple d'un flit de routage construit selon cette implémentation par le processeur 21A à partir de la table de routage 42 mémorisée dans celui-ci (figure 2): Fuit à 32 bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 3 Sauts à faire Commutateur 22D Commutateur 22C Commutateur 22B Commutateur 22A Ainsi, en reprenant la numérotation des ports présentée sur la figure 2 au sein de chaque commutateur 22, le message discret est transmis par le commutateur 22A vers le commutateur 22B (commutateur numéro 1 au sein de 22A). Par ailleurs, le nombre de sauts est décrémenté et égal à 2. Le commutateur 22B transmet ensuite le message discret vers le processeur 21D (processeur numéro 2 au sein de 22B) et vers le commutateur 22C (commutateur numéro 1 au sein de 22B). Par ailleurs, le nombre de sauts est décrémenté et égal à 1. Le commutateur 22C transmet ensuite le message discret vers le processeur 21F (processeur numéro 1 au sein de 22C) et vers le commutateur 22D (commutateur numéro 1 au sein de 22C). Par ailleurs, le nombre de sauts est décrémenté et égal à 0. Le commutateur 22D transmet ensuite le message discret vers le processeur 21G (processeur numéro 1 au sein de 22D) et vers le processeur 21H (processeur numéro 2 au sein de 22D). Par ailleurs, les bits 18 et 19 sont ignorés car le nombre de sauts est égal à 0 et tous les champs de routage de ce flit de routage ont été épuisés. Suivant un exemple d'implémentation, un réseau sur puce multiprocesseur 16 est étendu sur plusieurs puces multiprocesseur comme illustré sur la figure 6. Dans ce cas, chacune des puces comporte un pont 60 relié à un commutateur 22. Les ponts sont aptes à assurer le transfert des messages discrets entre deux puces distinctes. Le pont 60 appartenant à la puce émettrice est apte à communiquer avec un port émetteur 50A d'un commutateur 22 de cette puce. Le pont 60 appartenant à la puce réceptrice est apte à communiquer avec un port récepteur 50B d'un commutateur 22 de cette puce. Les deux ponts sont aptes à communiquer entre eux de façon à assurer la communication entre un port d'une puce et un port de l'autre puce comme si ces deux ports étaient sur la même puce. Comme chaque pont 60 est raccordé à une puce d'une manière indépendante, aucun autre organe de contrôle centralisé n'est demandé. En phase de développement du radar 10, les tables de routage 42 sont définies avec l'ensemble des chemins pour toutes les destinations possibles dans chaque mode de fonctionnement. Pour cela, tous les chemins possibles sont analysés. Seuls les chemins permettant d'éviter les collisions entre messages discrets sont retenus. Si après cette analyse plusieurs chemins sans collision sont possibles pour la même destination, seul le chemin ayant satisfait au mieux les critères de fonctionnement du réseau est retenu. Si après cette analyse, aucun chemin sans collision n'est possible pour une destination donnée, la topologie physique du réseau doit être revue. Ainsi, cette façon de définir des chemins permet de calculer le temps maximal (latence) de parcours de chaque message discret à sa destination. En phase de fonctionnement actif du radar 10, les moyens de configuration 17 envoient des tables de routage 42 prédéfinies et des algorithmes de traitement aux processeurs 21 selon le mode de fonctionnement choisi par l'utilisateur. Chaque message discret émis par un processeur 21 est traité d'abord par sa machine d'état 45. La machine d'état 45 inclut une règle de routage 40 en entête du message discret. Cette règle correspond à la destination du message et est choisie à partir de la table de routage 42. La machine d'état 45 envoie une requête vers le commutateur 22 correspondant à ce processeur. Si la machine d'état 45 reçoit un acquittement de sa requête, elle commence à transmettre le message discret. Sinon, la machine d'état 45 continue à envoyer des requêtes jusqu'à ce qu'elle reçoive un acquittement. Une fois reçu par le commutateur 22, le message discret est mis dans la file d'attente 54 d'un port émetteur 50A. Ensuite, comme illustré sur la figure 7, le message discret est traité à son tour par la machine d'état 51A du port 50A à l'étape 70. La machine d'état 51A lit le premier flit de routage et envoie une requête 52 vers les ports récepteurs indiqués dans le premier champ de routage à l'étape 72. Si un port récepteur 50B est en mesure de mettre le message discret dans sa file d'attente à l'étape 74, sa machine d'état 51B envoie un acquittement 53 de cette requête 52 à l'étape 76 et la machine d'état 51A commence à envoyer le message discret vers le port 50B à l'étape 78. Le message discret est ensuite mis dans la file d'attente 54 du port 50B à l'étape 80. Si la machine d'état 51A du port émetteur 50A ne reçoit pas d'acquittement d'un port récepteur 50B après l'étape 74, elle continue d'envoyer des requêtes vers ce port à l'étape 72 jusqu'à qu'elle reçoive un acquittement. Si le message discret passe dans un autre commutateur 22, le compteur du nombre de sauts de son flit de routage est décrémenté. Le transfert du message discret à travers d'autres commutateurs 22 se fait de la même manière. Le transfert du message discret à travers deux puces distinctes se fait à l'aide des ponts 60 comme si le port émetteur 50A d'une puce et le port récepteur 50B de l'autre puce étaient dans le même réseau 16. Pour transférer le message d'un commutateur 22 vers un processeur 21, une machine d'état 51A d'un port émetteur 50A envoie une requête vers la machine d'état 45 du processeur 22. Si la machine d'état 45 est en mesure de recevoir le message discret, elle envoie un acquittement vers la machine d'état 51A et commence à recevoir le message discret. Sinon, la machine d'état 51A envoie des requêtes vers la machine d'état 45 jusqu'à ce qu'elle reçoive un acquittement de celle-ci. Ainsi, une perte de données dans le réseau est exclue. Un réseau sur puce multiprocesseur avec les caractéristiques précitées peut être entendu sur d'autres puces d'une manière particulièrement simple et sans nécessiter d'avoir un organe de contrôle commun. 10 REVENDICATIONS1.- Réseau (16) sur puce multiprocesseur du type ayant une pluralité de modes de fonctionnement choisis par l'utilisateur, et comprenant au moins deux processeurs (21) propres à assurer le traitement de données reçues et produisant des données traitées sous forme des messages discrets, au moins un commutateur réseau (22) raccordé à au moins un processeur (21), les commutateurs (22) étant connectés entre eux, chaque commutateur (22) étant propre à transmettre les messages discrets d'après des règles (40) de routage, les règles de routage (40) étant différentes pour différents modes de fonctionnement, caractérisé en ce que chaque processeur (21), pour un mode de fonctionnement donné, comporte des règles de routage (40) pour tous les messages discrets pouvant être émis par ce processeur (21) et des moyens (45) de transfert d'au moins une règle de routage (40) à au moins un commutateur (22) avec chaque message discret émis par le processeur. 2.- Réseau sur puce multiprocesseur (16) selon la revendication 1, caractérisé en ce que chaque commutateur (22) comporte des ports (50A, 50B) pouvant recevoir ou émettre des messages discrets de ou vers les processeurs (21) ou les commutateurs (22) ayant une connexion directe avec ce commutateur (22) et chaque port (50A, 50B) comprend une machine d'état (51A, 51B) propre assurant la transmission des messages discrets au sein du commutateur (22) ou avec un processeur (21) ou un autre commutateur (22) ayant une connexion directe avec ce commutateur (22). 3.- Réseau sur puce multiprocesseur (16) selon la revendication 2, caractérisé en ce que chaque machine d'état (51A) associée à un port émetteur (50A) comporte des moyens d'émission d'une requête (52) vers un port récepteur (50B) en cas de réception d'un message discret à transmettre au port récepteur (50B), chaque machine d'état (51B) associé à un port récepteur (50B) comporte des moyens d'émission d'un acquittement (53) vers un port émetteur (50A) après réception d'une requête (52) si le port récepteur (50B) est en mesure de recevoir le message discret et chaque machine d'état (51A) associée à un port émetteur (50A) comporte des moyens d'émission d'un message discret seulement après réception de l'acquittement (53). 4.- Réseau sur puce multiprocesseur (16) selon l'une quelconque des revendications précédentes, caractérisé en ce que les règles de routage (40) pour chaquemode de fonctionnement sont définies de sorte à interdire les collisions entre des messages discrets. 5.- Réseau sur puce multiprocesseur (16) selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte des moyens (17) de configuration propre à assurer la transmission des règles de routage (40) à tous les processeurs (21) avant chaque lancement d'un mode de fonctionnement. 6.- Réseau sur puce multiprocesseur (16) selon l'une quelconque des revendications précédentes, caractérisé en ce que les règles de routage (40) propres à un message discret sont incluses en entête de ce message discret par le processeur (21) l'ayant émis et comportent l'information sur les processeurs (21) destinataires et sur les commutateurs (22) assurant ce transfert. 7.- Réseau sur puce multiprocesseur (16) selon l'une quelconque des revendications précédentes, caractérisé en ce que les règles de routage (40), pour un processeur (21) donné, sont définies sous forme d'une table de routage (42) comportant des chemins fixés pour chaque destination. 8.- Equipement (13) à plusieurs puces multiprocesseurs comportant une pluralité de réseaux sur puce multiprocesseur (16) selon l'une quelconque des revendications précédentes, caractérisé en ce que les différents réseaux sur puce multiprocesseur (16) fonctionnant dans un même mode de fonctionnement sont raccordés via des ponts (60) sans organe centralisé. 30