FR 2517442 A1 19830603 FR 8219574 A 19821123 La présente invention concerne un dispositif d'in- terruption pour un système de multitraitement. Le multitraitement est devenu une technique classi- que dans les systèmes téléphoniques et de calcul, pour permet- tre à un grand nombre de processus indépendants de se dérouler simultanément, les besoins de communication de chaque proces- sus avec les autres étant réduits au minimum Dans de tels sys- tèmes de multitraitement, des problèmes se posent du fait qu'il est souvent nécessaire qu'un processeur indépendant interrompe un autre des processeurs du réseau On utilise par exemple de telles interruptions pour changer la tache de l'autre proces- seur. Trois techniques fondamentales sont utilisées à l'heure actuelle Elles correspondent ( 1) à un réseau d'inter- ruptions entièrement interconnecté, ( 2) à un système particu- lier de cycles de bus, et ( 3) à une interrogation d'indicateurs en mémoire locale. Dans le premier dispositif, il existe un signal d'in- terruption particulier qui est émis par chaque processeur du réseau vers les autres processeurs Pour de grands systèmes, le nombre de connexions devient malcommode La seconde technique nécessite des voies de signal supplémentaires entre processeurs pour distinguer les cycles d'interruption des cycles de trans- fert de mémoire normaux La troisième technique nécessite que chaque processeur interroge régulièrement des positions de mé- moire particulières pour déterminer s'il a été interrompu ou non. Un aspect de l'invention porte sur un dispositif d'interruption destiné à Ctre utilisé avec chaque processeur d'un système multiprocesseur, et ce dispositif comporte des moyens, comprenant une première mémoire du type premier entré- premier sorti, qui sont conçus de façon à mettre en file d'at- tente des vecteurs d'interruption reçus par le système, et de façon à appliquer séquentiellement à un processeur associé un signal d'interruption pour chaque vecteur mis en file d'atten- te. Un autre aspect de l'invention porte sur un système multiprocesseur dans lequel l'information est transmise entre processeurs par un support de transmission, et chaque proces- seur comprend un dispositif d'interruption du type indiqué pré- cédemment. Un autre aspect encore de l'invention porte sur un procédé de commande d'interruptions entre des processeurs d'un système-multiprocesseur, dans lequel l'information est transmi- se entre processeurs par un support de transmission, et ce pro- cédé comprend les opérations consistant à transmettre, d'un processeur émetteur vers un processeur destinataire, par le support de transmission, un vecteur d'interruption du proces- seur émetteur, à enregistrer ce vecteur d'interruption dans une mémoire du type premier entré premier sorti, dans le pro- cesseur destinataire, et à appliquer séquentiellement un signal d'interruption au processeur destinataire, pour chaque vecteur d'interruption mis en file d'attente. L'invention propose une technique d'interruption qui traite les signaux d'interruption entre processeurs comme des données, ce qui autorise l'acheminement de l'information d'in- terruption pendant les cycles de lecture et d'écriture de don- nées du bus classique du système L'utilisation de cette tech- nique permet d'émettre des messages d'interruption vers d'au- tres processeurs sélectionnés, ces messages contenant par exem- ple l'identité de source, correspondant au processeur émetteur, ainsi que le type d'interruption. Le traitement d'interruptionsséquentielles provenant de sources multiples est rendu possible par un registre de ma- :3 tériel de type premier entré premier sorti, placé à chaque emplacement de processeur, et dont la fonction est de mettre en file d'attente les messages d'interruption reçus et d'ap- -pliquer un signal d'interruption réel au processeur local as- socié. Un processeur émetteur utilise le bus de communica- tion du système et il adresse la mémoire premier entré pre- mier sorti d'interruption qui est associée à un processeur destinataire particulier Un message d'interruption est ensui- te transmis vers la mémoire premier entré premier sorti par la voie de transmission de données normale du système Lorsque le message arrive au registre de sortie de la mémoire premier entré premier sorti, un signal est émis vers le processeur. Le processeur lit alors les données qui sont enregistrées dans le registre de sortie de la mémoire premier entré premier sorti Les données pourraient contenir toute l'information que nécessite le processeur, ou bien elles pourraient désigner une position dans une mémoire locale, cette position étant réservée selon des conditions définies à l'échelle du système global. Lorsqu'on utilise cette configuration, la position de mémoire contient les données que doit utiliser le processeur pour le traitement de l'interruption. L'invention sera mieux comprise à la lecture de la description qui va suivre d'un mode de réalisation et en se ré- férant aux dessins annexés sur lesquels: La figure 1 représente un schéma d'ensemble d'un sys- tème multiprocesseur conforme à l'invention; La figure 2 représente un schéma développé de l'un des modules de processeur représentés dans le système de la figure l; et La figure 3 montre une affectation de l'espace de mé- moire du système multiprocesseur de la figure 1. On voit sur la figure l un système multiprocesseur qui comprend un certain nombre de processeurs individuels 10, 20, 30, 40, chacun d'eux étant capable de fonctionner indépen- damment pour accomplir des opération basées sur des données d'information reçues par le bus de système 105. Avant d'entrer dans l'examen du fonctionnement de la technique d'interruption, on décrira sommairement le fonction- nement et les éléments constitutifs de chaque processeur A cet égard, la figure 2 montre l'interface de bus 11 qui a pour fonction d'échanger des données avec le bus de système, 105. -Cette interface est conçue pour résoudre les problèmes de con- flits, ce qui fait qu'il n'y a jamais plusieurs processeurs émettant simultanément des données sur le bus Une telle in- terface peut être du type représenté dans le document Intel Multibus Interfacing, publié par la firme Intel sous la réfé- rence 9800587 A On peut naturellement utiliser d'autres confi- gurations pour résoudre les conflits entre plusieurs processeurs en lutte pour s'approprier le bus commun L'interface de bus 11 assure également le décodage d'adresse, de façon que les don- nées destinées au processeur associé puissent Atre extraites du bus et enregistrées de façon appropriée. L'unité centrale 15 peut être constituée par n'impor- te quel type de processeur conçu pour effectuer n'importe quel- le fonction de traitement A titre d'exemple, ce pourrait être le microprocesseur INTEL 8086 La mémoire partagée 13 peut être n'importe quel type de mémoire vive, comme la mémoire Mostek XK 4802 Le contrôleur d'interruption programmable 14 peut être un INTEL 8259 A, ayant pour fonction de recevoir un signal d'inter- ruption et de traiter ce signal d'une manière particulière pour que l'unité centrale 15 arrête la t 1 cheen cours de traitement, dès qu'il est raisonnablement possible, et traite l'interrup- tion La file d'attente d'interruption du type premier entré - premier sorti, 12, peut être un élément Fairchild 9403 qui est une mémoire premier entré premier sorti Le processeur 10, représenté sur la figure 2, peut également etre, par exemple, un ordinateur sur une seule carte du type INTEL i SBC 86/12 A, avec l'adjonction de la file d'attente d'interruption premier entré premier sorti et avec un décodage d'adresse approprié. Dans le système multiprocesseur de la figure 1, on peut voir clairement qu'aucun moyen n'est prévu pour établir entre les divers processeurs un câblage destiné à la signali- sation d'interruption, comme c'est le cas dans l'art antérieur, comme par exemple la configuration représentée dans le document Intel Multibus Interfacing Ainsi, la configuration utilisée permet d'ajouter au bus ou de lui enlever un nombre quelconque de processeurs, par une simple affectation de l'espace de mé- moire. Comme le montre la figure 3, le système comporte un espace de mémoire qui est affecté à l'échelle du système global et qui est réservé pour le traitement des interruptions Une position d'adresse premier entré premier sorti identifiable est contenue dans la mémoire locale de chaque processeur, et tous les processeurs peuvent accéder à cet espace Un avantage d'une telle configuration consiste en ce que la mémoire locale peut être adressée par n'importe quel autre processeur et qu'il est possible de lire dans la mémoire locale une information concernant, par exemple, uniquement le processeur émetteur. Ainsi, pour émettre des messages d'interruption, le processeur émetteur n'a rien à "connaître" concernant le processeur desti- nataire, sauf le plan de mémoire du système On décrira ulté- rieurement cette opération de façon plus complète. Sur la figure 3, l'information d'interruption est re- présentée par les positions C + 1 à D dans l'espace de mémoire partagé Ainsi, la technique d'adressage implantée en mémoire qu'utilise le bus du système permet à n'importe quel processeur de partager une partie ou la totalité de ses ressources locales avec d'autres processeurs qui commandent le bus du système Cet- te technique procure un adressage uniforme des ressources dans tout le réseau, du fait que des processeurs adressent des res- sources éloignées exactement comme ilsle feraient pour leur mé- moire locale. Comme le montrent les figures 1 et 3, la file d'at- tente d'interruption premier entré premier sorti, 12, associée à chaque processeur, fait partie des ressources partagées de ce processeur, qui sont accessibles à tous les autres proces- seurs Des interruptions asynchrones créées par logiciel et par matériel sont transmises par le bus de système 105, par l'utilisation de ces mémoires premier entré premier sorti. Pour l'opération d'interruption, le processeur source écrit un vecteur d'interruption (qui décrit le type d'interruption)dans la file d'attente d'interruption premier entré premier sorti du processeur destinataire désiré Ce vecteur est mis en file d'attente derrière d'autres vecteurs d'interruption qui ont été émis précédemment vers le processeur destinataires Ces vecteurs descendent la file d'attente d'interruption premier entré premier sorti et ils interrompent le processeur desti- nataire, un par un, d'une manière déterminée premièrement par le contrôleur d'interruption de programme et secondement par le vecteur de commande présent à la sortie de la file d'atten- te d'interruption premier entré premier sorti. Le mécanisme d'arbitrage du bus de système, c'est-à- dire les interfaces de bus 11, 21, 31, 41, place en série les demandes d'interruption provenant des sources multiples et les files d'attente d'interruption premier entré premier sorti, 12, 22, 32, 42, assurent l'enregistrement intermédiaire néces- saire pour conserver les vecteurs en attente jusqu'à ce que le processeur puisse les traiter La profondeur et la largeur de chaque file d'attente d'interruption premier entré premier sortie sont une affaire de choix de conception, et la prafondeur est déterminée par le nombre d'interruptions en attente qu'il peut y avoir pour chaque processeur du système, tandis que la largeur est déterminée soit par le nombre de types d'interrup- tion distincts que doit traiter un processeur, soit par le nombre de bits d'information sur le bus de système. Cette manière de gérer les interruptions utilise les ressources disponibles du bus de système, sans nécessiter des signaux d'interruption acheminés par un bus spécial, ou des cycles de bus spéciaux Si la file d'attente d'interruption du processeur destinataire est pleine, une erreur de bus apparaît et informe la source du fait que l'interruption n'a pas été transmise De nouvelles tentatives sont gérées par le logiciel du processeur source Du fait qu'aucun c Cblage n'est nécessai- re, on peut ajouter ou enlever des processeurs sans difficulté. A titre d'illustration, on décrira en détail un exem- ple particulier dans lequel le processeur 30 (figure 1) inter- rompt le processeur 20 Cet exemple suit les lignes en pointil- lés sur la figure 1: ( 1) Le processeur 30 occupe le bus 105 ( 2) Le processeur source 30 applique N bits de don- nées (représentant le vecteur d'interruption) à la file d'at- tente d'interruption du processeur destinataire 20 Le trans- fert de données réel est effectué avec un cycle d'écriture en mémoire, sous la commande du processeur 30. ( 3) le vecteur d'interruption est enregistré dans la file d'attente d'interruption 22, du type premier entré pre- mier sorti, du processeur destinataire 20; ( 4) le vecteur d'interruption enregistré arrive en bas de la file d'attente d'interruption 22 et un signal repré- sentant ce fait est appliqué au contrôleur d'interruption pro- grammable 24 par l'intermédiaire du signal "registre de sortie non vide" (M). ( 5) En utilisant ses priorités et ses masques pré- programmés, le contrôleur d'interruption programmable applique un signal de sortie à l'unité centrale 25. ( 6) Sous la commande du signal d'interruption, l'uni- té centrale 25 lit le vecteur d'interruption provenant de la file d'attente d'interruption 22 et traite cette interruption. Une alternative à l'étape ( 6) ci-dessus consiste en ce que-le vecteur contenu dans la file d'attente d'interruption premier entré premier sorti peut ne pas contenir l'informa- tion de commande d'interruption réelle, mais désigner une po- sition particulière dans la mémoire partagée Dans une telle situation, le processeur émetteur 30 fournit une position d'adresse dans la mémoire partagée destinataire qui concerne l'information associée en propre au processeur émetteur Cette position contient alors l'information concernant l'interruption réelle. Les mémoires partagées de tous les processeurs pour- raient également contenir un ensemble commun-de messages de commande d'interruption Dans une telle situation, le proces- seur émetteur doit seulement émettre la position d'adresse du type d'interruption désiré Ensuite, sous la commande de l'in- formation placée dans la file d'attente d'interruption premier entré premier sorti, le processeur destinataire adresse la mémoire locale et exécute l'interruption conformément à l'in- formation qui a été enregistrée précédemment dans cette derniè- re à l'adresse désignée Comme on l'a envisagé précédemment, la raison pour laquelle ceci peut etre réalisé consiste en ce que l'espace d'adresse est partagé par l'ensemble du système ce qui fait que, pour une interruption donnée,-le même vecteur (message d'interruption) peut être appliqué à n'importe quel processeur. Dans le cas de l'utilisation de la configuration d'interruption décrite ci-dessus, il n'est pas nécessaire que l'unité centrale consomme continuellement du temps de traite- ment pour interroger un bit indicateur afin de déterminer si un signal d'interruption est en attente de traitement, du fait que le signal d'interruption réel n'est effectivement appliqué à l'unité centrale par la file d'attente d'interruption premier entré premier sorti que lorsqu'un vecteur d'interruption est présent Du fait que la mémoire est utilisée en commun, il est possible d'émettre des messages plus longs que ceux qui seraient par ailleurs émis pendant un seul cycle, du fait que le message émis peut contenir l'adresse de données enregistrées localement, alors que si ces données étaient émises par le processeur émet- teur, elles nécessiteraient plus d'un tel cycle. La file d'attente d'interruption premier entré pre- mier sorti fait fonction de file d'attente destinée à recevoir ,17442 et à enregistrer un grand nombre de messages d'interruption provenant de nombreux processeurs De façon caractéristique, le système est conçu de façon qu'à un instant donné, une seu- le interruption soit émise par chaque processeur émetteur, ce qui permet au processeur émetteur de traiter ensuite des in- terruptions suivantes à émettre vers le même processeur des- tinataire Dans un tel système, la file d'attente d'interrup- tion premier entré premier sorti ne doit donc avoir qu'une longueur suffisante pour accepter une interruption provenant de chaque autre processeur Cependant, il est bien entendu possible d'autoriser des interruptions multiples provenant du même processeur, en augmentant simplement la longueur de la file d'attente d'interruption premier entré premier sorti. Il est également possible de définir une priorité entre les interruptions, sous la dépendance d'un certain nombre de fac- teurs tels que le type d'interruption, le processeur émetteur, etc On peut accomplir ceci en utilisant un certain nombre de registres premier entré premier sorti et en procédant soit par l'adressage direct du message d'interruption vers un re- gistre particulier, soit par l'utilisation d'une commande à programme enregistré pour trier les interruptions au fur et à mesure de leur arrivée Une fois que le vecteur d'entrée est enregistré dans un registre premier entré premier sorti par- ticulier, les signaux de sortie des registres premier entré - premier sorti sont appliqués à l'unité centrale selon un cer- tain type de configuration de priorité, la configuration la plus simple étant de vider un registre premier entré premier sorti avant de chercher des vecteurs dans un autre registre premier entré premier sorti Une autre configuration consis- terait à utiliser conjointement la mémoire partagée et le pro- cesseur pour déterminer quelle est l'interruption qui doit entre traitée ensuite. Il est également évident que, bien que le système d'interruption multiprocesseur décrit soit représenté avec une configuration de bus locale câblée, il n'y a aucune limitation pratique sur la manière selon laquelle les processeurs peuvent 9 tre interconnectés, et cette interconnexion pourrait couvrir de grandes zones géographiques, la seule exigence étant que le processeur source soit capable de diriger l'information d'in- terruption vers la file d'attente d'interruption du processeur destinataire. Il va de soi que de nombreuses autres modifications peuvent être apportées au dispositif décrit et représenté, sans sortir du cadre de l'invention. REVENDICATIONS 1 Dispositif d'interruption destiné à 4 tre utilisé avec chaque processeur d'un système multiprocesseur, caracté- risé en ce qu'il comporte des moyens ( 12, 14), comprenant une mémoire premier entré premier sorti ( 12), conçus de façon à mettre en file d'attente des vecteurs d'interruption reçus par l'intermédiaire du système et à appliquer séquentiellement un signal d'interruption à un processeur associé ( 10), pour chaque vecteur mis en file d'attente. 2 Dispositif selon la revendication 1, caractérisé en ce que chaque vecteur est transmis par le système selon une manière identique à celle selon laquelle d'autres-données sont transmises entre les processeurs. 3 Dispositif selon la revendication 2, caractérisé en ce que les vecteurs fournis par la mémoire premier entré - premier sorti sont utilisés pour définir la tâche du processeur associé ( 10). 4 Dispositif selon la revendication 2, caractérisé en ce qu'il comporte des moyens ( 13) comprenant une mémoire ( 13) qui comporte des positions d'adresse utilisées en commun par l'ensemble des processeurs, destinés à enregistrer une in- formation relative aux t Cches d'interruption, et ces moyens sont adressables par des vecteurs qui sont mis en file d'atten- te dans la mémoire premier entré premier sorti ( 12). 5 Système multiprocesseur dans lequel de l'informa- tion est transmise entre processeurs par un support de trans- mission, caractérisé en ce que chaque processeur comporte un dispositif d'interruption tel que celui revendiqué dans l'une quelconque des revendications 1 à 4. 6 Procédé pour la commande d'interruption entre des processeurs d'un système multiprocesseur, dans lequel de l'in- formation est transmise entre processeurs par un support de transmission, caractérisé par les opérations suivantes: on transmet, d'un processeur émetteur ( 30) vers un processeur des- tinataire ( 20), par le support de transmission ( 105), un vec- teur d'interruption du processeur émetteur ( 30), on enregistre ce vecteur d'interruption dans une mémoire premier entré - -premier sorti ( 22), dans le processeur destinataire ( 20), et on applique séquentiellement un signal d'interruption au pro- cesseur destinataire ( 20) pour chaque vecteur d'interruption mis en file d'attente. 7 Procédé selon la revendication 6, caractérisé en ce qu'il comporte l'opération supplémentaire qui consiste à lire dans la mémoire premier entré premier sorti ( 12), sous la commande du processeur destinataire-( 20), le vecteur d'in- terruption enregistré dans la mémoire premier entré premier sorti ( 12) qui est associé à chaque signal d'interruption. 8 Procédé selon la revendication 6, caractérisé en ce que l'opération de transmission comprend l'opération qui consiste à résoudre les conflits dans l'appropriation du sup- port de transmission.