FR 2683344 A1 19930507 FR 9113431 A 19911030 Système mul Piorocesseur avec movens micro Droarammes Dour la réDartition des processus aux processeurs. L'invention se situe dans le domaine des systèmes nformatiques de type multiprocesseur et concerne plus articulirement les mécanismes mis en oeuvre pour assurer de façon dynamique la répartition des processus aux processeurs d'un tel système. _ UJ La répartition des processus aux processeurs (habituellement appelée " spatching"} est une opération dont la mise en oeuvre conditionne de facon importante la performance du système, en particulier pour les applications de type transactionnel L'influence du dispatching sur la performance est particulièrement sensible lorsque le nombre de processeurs du système devien important car la trquence moyenne des événements susceptibles de déclencher un dispatching s'élève proportionnellement au nombre de processeurs. Le dispatching est une opération qui est déclenchée par tout U une qu S a événement susceptible de provoquer une modification dans le choix des processus devant être exécutés Ces événements résultent le plus souvent des opérations de synchronisation entre processus, les processus pouvant être ceux qui exécutent les programmes d'application ou les programmes du système d'exploitation tels que les programmes d'entrée- sortie Il peut exister aussi d'autres types d'événements liés par exemple à un changement d'état d'un processeur ou à des instructions particulières qui introduisent ou retirent un processus du système ou qui modifient le niveau de priorité d'un des processus L'apparition d'un tel événement aura alors pour effet d'activer des microprogrammes système chargés de déterminer la nouvelle attribution des processus aux processeurs en fonction de l'événement et de divers critères tenant compte par exemple de l 'ordre de priorité des processus prêts à être exécutés. Dans le cas d'une mise en oeuvre microprogrammée, le dispatching s'effectue en deux phases Une première phase de séecti-on, correspondant à 'exécuion d'un modu e :.crcp rora appeé "SELECT", res prévue pour effectuer le choz des processus a exécuter et des processeurs qui do-ver_ les executer Cette phase de sélection s'accompagne de'en vcis 'in erp ions servant à informer les processeurs concernés des nouveaux Processus à exécuter La réception de ces interruptions par _es processeurs destinataires déclenche dans ceux-ci une phase d'exécution consistant essentiel ement à sauvegarder les contextes des processus dont l'exécution est interrompue et à charger dans les processeurs:es contextes des nouveaux processus à exécuter. Cette phase d'exécution correspond à l'exécution en parallèle car les processeurs concernés de modules microprogrammês appelés "EXEC". Afin d'améliorer le temps de réponse du système aux événements déclenchant le dispatching, il est souhaitable que l'opération de sélection puisse être effectuée de façon décentralisée, ce qui implique que tout les processeurs du système, ou du moins plusieurs d'entre eux, soient capables d'effectuer chacun l'opération de sélection Ce problème a fait l'objet du brevet américain US 4 590 550 délivré le 20 mai 1986, correspondant au brevet européen EP-B 30 504 et devant être considéré comme faisant partie de la présente description Ce brevet traitait en particulier du problème lié aux conflits possibles entre plusieurs processeurs cherchant à exécuter chacun l'opération de sélection Ces conflits doivent être absolument évités car l'opération de sélection manipule des données système, telles que état des processus et des processeurs, qui doivent conserver une valeur unique pour tout le système Dans ce but, on prévoyait notamment des verrous, c'est-à-dire des moyens indicateurs activés et maintenus par le processeur exécutant un dispatch-ng pour empêcher qu'un autre processeur effectue m nouveau une phase de sélection tant que le dispatching précédent n'es_ pas complètement terminé. L'invention a pour but de proposer une réalisation optimisée du dispatching du type précédent de facon à ce que l'augmentation du nombre de processeurs n'entraine pas une baisse relative des performances du svstème. Cette recherche d'optimisation a conduit à effectuer L'analyse statistique des différents types de dispatching a O exécutés dans un système multiprocesseur Pour les applications transactionnelles, cette analyse a permis de constater que dans environ 75 % des cas, les opérations de dispatching avaient finalement pour effet soit de n'apporter aucune modification dans le choix des processus executés, soit d'interrompre l'exécution d'un seul processus et généralement le remplacer par un autre Ces cas fréquents de dispatching sont aussi a priori les plus simples à traiter mais encore faut-il trouver les moyens pour exploiter cet état de fait de façon à conserver en toutes circonstances la cohérence du système. On distingue d'autre part deux catégories de ressources impliquées lors des opérations de sélection La première catégorie regroupe les informations relatives à l'état des processus constitués dans le système et qui sont habituellement matérialisées par des files d'attente de processus Il existe généralement des files d'attente de processus associées à des événements Chaque file d'attente contient l'identité de tous les processus dont l'exécution a été interrompue dans l'attente de l'apparition d'un événement ou d'un message associé Il existe d'autre part au moins une file d'attente regroupant les processus en cours d'exécution et les processus prêts à être exécutés, c'est-à- dire les processus qui ne peuvent pas être exécutés par manque de processeurs disponibles Une deuxième catégorie de ressources comprend des moyens de dialogue permettant la communication entre les processeurs Ces moyens sont généralement formés d'un mécanisme d'interruption associé à des zones d'échange de données, appelées boîtes aux lettres, permettant notamment au processeur qui exécute l'opérai on de sélection d'informer les processeurs destinataires des nouveaux processus à exécuter. En analysant plus en détail les circonstances qui conduisent aux cas les plus fréaquents de dispatching, on constate que très souvent seulement une partie des ressources évoquées ci-dessus est utilisée En effet, si par exemple l'événement susceptible de déclencher un dispatching consiste en la notifi cation par un processus en cours d'exécution d'un événement ou d'un message, deux cas peuvent se produire. Selon un premier cas, aucun processus n'est en attente de cet événement Le processeur générateur de l'événement peut dans la plupart des cas effectuer la mise à jour d'une structure de données du type sémaphore pour indiquer que l'événement s'est produit Ce processeur pourra ensuite poursuivre l'exécution du processus qu'il exécutait auparavant et il n'y aura aucune modification dans la répartition des processus aux processeurs du système Dans ce cas, seule la structure de données associée au sémaphore est impliquée Dans l'autre cas, un processus au moins est en attente de cet événement Le processus le plus prioritaire dans la file d'attente sera alors extrait de cette file d'attente et inséré dans la file d'attente des processus prêts et, en fonction du niveau de priorité de ce processus, il est possible qu'il devra remplacer un processus actif dans un des processeurs du système Les ressources impliquées lors de cette opération seront donc la structure de données et la file d'attente des processus associés au sémaphore, la file d'attente des processus prêts ou actifs et éventuellement les moyens de dialogue entre processeurs si le processus qui était en attente doit remplacer un processus qui était actif dans un autre processeur. Si on prend comme autre exemple le cas complémentaire o un processus actif doit s'enquérir si un événement est survenu ou si un message est present pour pouvoir continuer son execution, on distingue également deux cas Selon un premier cas, l'événement ou le message a déjà été notifié, ce qui est vérifié par le processeur en accédant aux structures de données associées au sémaphore Le processus peut donc continuer son exécution Dans l'autre cas, l'événement ou le message n'a pas été notifié et l'exécution du processus doit être interrompue Dans ce cas, le processus le plus prioritaire dans la file d'attente des processus prêts prendra la place du processus exécuté précédemment par le processeur Concernant l'utilisation des ressources, on voit que dans le premier cas seule la structure de données associée au sémaphore est impliquée alors que dans le second cas, la file d'attente des processus prêts l'est aussi Par contre, dans les deux cas, les moyens de dialogue ne sont pas utilisés. Sur la base des quelques exemples précédents dans un contexte particulier, on constate plus généralement que l'on pourrait décomposer l'opération de répartition des processus aux processeurs en plusieurs opérations plus simples correspondant chacune à une catégorie d'événements ou de situations particulières qui impliquent en fait l'utilisation d'une partie seulement de l'ensemble des ressources susceptibles d'être impliquées dans une opération de dispatching. Le but de l'invention sera donc de rechercher à exploiter les observations précédentes en vue d'augmenter les possibilités de parallélisation de certaines phases de dispatching Il conviendra cependant que les réalisations proposées présentent aussi un fonctionnement sûr et permettent une mise en oeuvre simple Ce but peut être atteint en effectuant un découpage du micrologiciel chargé du dispatching, ce découpage étant choisi de façon à définir au moins un module spécialisé répondant à une catégorie ou ensemble d'événements qui entraînent les mêmes types de modifications dans la répartition des processus aux processeurs, ce qui implique vue es mêmes types de ressources seront utilisées En prévoyant plusieurs modules de ce type, il en résulte une probabilité accrue que plusieurs modules soient exécutables simultanément, sans risques de con flits à l'égard des ressources systèmes. Il conviendra en plus de prévoir un module particuiier pour prendre en compte les événements, hors catégories, c'est-à- dire aui ne peuvent pas être traités par les modules spécialisés. Plus précisément, l'invention a pour objet un système informatique multiprocesseur dont une pluralité de processeurs sont munis chacun de moyens microprogrammés pour effectuer la répartition des processus aux processeurs du système, lesdits moyens microprogrammés étant activés dans un processeur en réponse à tout événement détecté par ledit processeur et qui est susceptible de provoquer une modification dans le choix des processus devant être exécutés et des processeurs qui les exécutent, ledit système étant caractérisé en ce que lesdits moyens microprogrammés comportent au moins un module spécialisé de microprogramme capable de déterminer ladite répartition en réponse à une catégorie d'événements particuliers et un module central de microprogramme capable de déterminer ladite répartition pour des événements autres que ceux traités par lesdits modules spécialisés. Pour exploiter au mieux l'invention du point de vue performance du système et selon une caractéristique supplémentaire de l'invention, les catégories d'événements particuliers comprennent des événements parmi ceux qui ont les plus fortes probabilités de se produire au cours de l'exploitation. Afin de renforcer les possibilités de parallélisation et selon une autre caractéristique de l'invention, chaque catégorie d'événements particuliers comprend des événements qui provoquent des modifications simples dans le choix des processus devant être exécutés et des processeurs qui les exécutent. L'invention a également pour objet une réalisation particulière du système caractérisée en ce que l'état des processus exécutables dans le système étant mémorisés soit dans une file d'atente des processus en attente d'un événement, soit dans une file d'attente des processus prêts, c'est-à-dire actifs dans un processeur ou en attente d'un processeur, lesdites catégories d'événements comprennent les événements susceptibles de provoquer respectivement un ajout, un retrait ou un déplacement d'un seul processus JP dans la file d'attente des processus prêts. Les modules spécialisés pourraient être concus de facon à effectuer complètement et en toutes circonstances le dispatching correspondant aux événements associés Or, cette solution impliquerait une augmentation de la complexité des modules et un encombrement accru des mémoires de microprogramme Pour éviter cet inconvénient et conformément à une variante de réalisation selon l'invention, chaque module spécialisé est prévu pour exécuter complètement l'opération de sélection en dehors de certains cas prédéfinis qui correspondront de préférence à des situations inhabituelles et complexes, comme par exemple en présence de conflits entre dispatchings concurrents dans plusieurs processeurs Chaque module spécialisé est prévu pour détecter ces cas et effectuer l'appel du module central Le module central sera donc aussi conçu de façon à traiter intégralement tous ces cas inhabituels exclus du traitement par les modules spécialisés. Ainsi, selon un mode de réalisation particulier, le système selon l'invention comporte des moyens de dialogue entre processeurs utilisés le cas échéant par les moyens microprogrammés d'un processeur pour émettre des requêtes notifiant à d'autres processeurs l'identité de nouveaux processus NJP à exécuter D'autre part, ces moyens de dialogue sont associés à un premier verrou de dialogue utilisé par les moyens microprogrammés pour assurer qu'un seul processeur à la fois émette lesdites requete Chaque module spécialisé est enfin conçu de façon à arrêter son exécution et à effectuer l'appel du module central dans le cas o l'exécution du module spécialisé implique un dialogue alors que ledit verrou est pris. D'autres aspects et détails de réalisation conformes à l'invention seront exposés plus en détail dans la suite de la description. La figure I représente le sous-système central d'un système informatique pour la mise en oeuvre de l'invention. La figure 2 représente le format d'un bloc de contrôle de processus utilisé dans les opérations de dispatching. La figure 3 représente le format d'un bloc de contrôle de processeurs. La figure 4 représente le format d'un lien de processus utilisé dans les différentes files d'attente de processus. La figure 5 représente le format d'un sémaphore. La figure 6 représente le format d'un lien de messages servant à former la file d'attente des messages associée à un sémaphore. La figure 7 représente le format du bloc de contrôle du système contenant les données système utilisées lors des opérations de dispatching. La figure 8 représente l'organigramme d'exécution d'une instruction de type P sur sémaphore. o La figure 9 représente i'organiaramme du microprogramme EXEC. Les figures -O et il représentent l'organigramme d'une opération de type V sur sémaphore. Le système représenté à "a figure I constitue ce qu'on appele un sous-système central d'un système informatique. Il est composé de plusieurs processeurs CPU, CP Ui reliés à un bus système SB de facon à pouvoir communiquer entre eux ainsi qu'avec une mémoire centrale MU et des unités d'entrée-sortie IOU Les unités d'entrée-sortie -OU permettent au sous-système central de communiquer avec des sous-systèmes périphériques (non représentés). La mémoire centrale MU peut être réalisée au moyen de plusieurs modules ou cartes mémoires reliées au bus système SB par l'intermédiaire d'un circuit d'interface SCU jouant à a fois le rôle de contrôleur mémoire et de contrôleur du bus SB De façon classique, le bus SB est constitué d'un bus de données DTS, d'un bus d'adresses ADS et de lignes de commande et de contrôle CDS. Chaque processeur CPU comporte essentiellement des moyens de traitement microprogrammés CP et une antémémoire CA servant d'interface avec le bus système SB L'antémémoire CA est composée de circuits mémoire DAT reliés au bus de donnée DTS et d'un contrôleur DIR relié au bus d'adresse ADS et aux lignes de contrôle CDS Les moyens de traitement CP comportent plusieurs unités fonctionnelles EAD, BDP, FPP affectées respectivement à des fonctions spécifiques En particulier l'unité EAD est une unité d'adressage reliée au contrôleur DIR par des lignes d'adresse AD Les unités EAD, BDP, FPP sont d'autre part reliées aux circuits mémoires DAT par un bus de données internes DT et au contrôleur DIR Dar des lignes de commande et de contrôle internes CD. Le contrôleur DIR commande les opérations de lecture et d'écriture des circuits memoire D T par les lignes d'adresse ADR et de contrôle CDR Il sert également à commander les operations de lecture et d'écriture de la mémoire centrale MU pour effectuer les transferts de données entre la mémoire MU es circuits mémoire DAT Enfin, selon le mode de réalisation présenté, le contrôleur DTR contient également les circuits d'interface servant aux échanges de messages {par exemple requêtes et acquittements) entre le processeur CPU et les autres processeurs CP Ui ou avec les unitées d'entrée-sortie IOU. LT.a réalisation détaillée des unités fonctionnelles du processeur CPU est décrite dans la demande de brevet européen EP-A-434 483, publiée le 26 juin 1991 et ayant pour t Itre "Processeur à plusieurs unités de traitement microgrammées". D'autre part, les moyens permettant les dialogues entre les processeurs CPU, CP Ui du système peuvent être réalisés conformément à la demande de brevet français N 90 06948, déposée le 5 juin 1990 et ayant pour titre "Procédé de dialogue entre les processeurs d'un système, système pour sa mise en oeuvre et utilisation pour la répartition des processus aux processeurs". En ce qui concerne le fonctionnement général du système de la figure 1, il conviendra de se reporter aux demandes précitées qui doivent être considérées comme faisant partie de la présente description. Dans ce contexte, l'invention pourra être mise en oeuvre au moyen de microprogrammes spécifiques faisant partie du micrologiciel système Ces microprogrammes sont prévus pour coopérer avec le module micrologiciel appelé "gestionnaire d'interruption" qui sert à sélectionner les modules à exécuter en fonction d'un certain nombre d'indicateurs représentatifs d'événements susceptibles d'être pris en compte par le système Les microprogrammes spécifiques 1-l permettant a mise en oeuvre de l'invention seront décrits en référence aux figures 8 à Il mais il convient auparavant de donner quelques précisions sur les ressources du système manipulées par ces microprogrammes. La figure 2 représente une structure de données appelée "bloc de contrôle de processus" PCB associée à chaque processus constitué dans le système Ce bloc est une zone de mémoire constituée d'un certain nombre de mots de 32 bits contenant toutes les informations concernant le processus et qui sont,uti-es au système Seules les informations intervenant dans la mise en oeuvre de l'invention ont été représentées Parmi ces informations, on trouve dans le mot PMW O un champ PRI représentant le niveau de priorité du processus et un champ STATE indicatif de l'état du processus La valeur prise par ce champ STATE indique notamment si le processus est actif ou s'il est prêt et en attente d'un processeur libre ou s'il est en attente d'un événement Le champ PMW 2 est affecté à l'adresse d'un sémaphore dans le cas o le processus est en attente d'un événement associé à ce sémaphore Le champ CPSM du mot PMW 3 est un masque dont le profil binaire définit les processeurs du système autorisé à exécuter le processus Un ensemble de mots appelé "zone registres" sert à sauvegarder le contexte du processus, c'est-à-dire le contenu des registres du processeur ayant exécuté pour la dernière fois le processus, juste avant que son exécution soit interrompue. La figure 3 représente une zone mémoire associée à chaque processeur, appelée "bloc de contrôle de processeur" CPCB et servant de boîte aux lettres pour les échanges d'information entre un processeur émetteur et le processeur destinataire associé à ce bloc. Le bloc CPCB comporte un champ CPN contenant le numéro du processeur, un champ CPS indiquant l'état du processeur, un champ CJP contenant le numéro du processus en cours d'exécution dans le processeur, un champ CPLD représentatif de l'adresse du lien de ce processus dans la file d'attente des processus prêts Q/PR/RDY, un champ NJP indiquant le numéro du nouveau processus que le processeur doit exécuter et un champ NPLD indicatif de l'adresse du lien de ce processus. Le bloc CPCB contient également un indicateur binaire DCLK servant de verrou et dont l'état logique signale si la boite aux lettres est occupée ou non. Nous allons maintenant décrire les ressources permettant de définir les files d'attente des processus Tous ces éléments ont déjà fait l'objet d'une description détaillée dans le brevet US 4,590,555 précité et dans le brevet US 4,395,757, délivré le 26 juillet 1983, et intitulé "Semaphore device for computer" Nous ne rappelerons donc que brièvement les éléments essentiels qui sont impliqués dans la présente invention. Comme nous l'avons indiqué précédemment, on distingue deux catégories de files d'attente de processus: la file d'attente des processus prêts Q/PR/RDY et la ou les files d'attente des processus en attente d'un événement Ces files d'attente sont matérialisées par un ensemble de structures de données appelées "liens", chaque lien étant associé à un processus particulier. La figure 4 représente un exemple de format d'un tel lien PL Ce lien est composé de deux mots de 32 bits comprenant plusieurs champs ayant les significations suivantes: NL est un pointeur représentatif de l'adresse du lien suivant dans la file d'attente; JP est l'identité du processus associé au lien; R est un bit représentatif de l'état du processus associé; D est un bit auxilaire qui est la ccpie du verrou DCLK pour faciliter l'exécution du dispatching; TEN est l'identité du processeur exécutant ou ayant exécuté pour la dernière fois le processus PRI correspond au niveau de pricrité du processus. 0 L'accès à une file d'attente peut être réalisé au moyen d'un pointeur représentatif de l'adresse du premier lien dans la file d'attente, c'està-dire du lien associé au processus le plus ancien dans la file d'attente Lorsqu'un lien est retiré de la file d'attente, le pointeur prend la valeur contenue dans le champ NL de ce lien Lorsqu'un lien est ajouté, le champ NL du dernier lien prend une valeur correspondant à l'adresse de ce nouveau lien. Selon le mode de réalisation particulier utilisé dans le contexte de l'invention, on prévoit une seule file d'attente Q/PR/RDY regroupant les processus prêts et actifs et les processus prêts et non actifs La valeur logique du bit R permet alors de distinguer si le processus est actif (R = 1) ou non (R = 0). Concernant les processus en attente d'événements, on utilise également des files d'attente dont les liens ont le format représenté à la figure 4 Chaque file d'attente Q/PR/S est associée à une structure de donnée, appelée "sémaphore", chaque sémaphore étant associé à un type d'événement particulier. On peut aussi prévoir que certains sémaphores puissent aussi être associés à des files d'attente de messages Q/M/S matérialisés par des liens de message tels que représentés à la figure 6. Le format d'un sémaphore SEM est représenté à la figure 5. 1 est formé de deux mots de 32 bits comprenant plusieurs champs ayant les significations suivantes: STAG indique le type de sémaphore selon qu il peut être associé ou non à une file d'attente de messages SMC indique le nombre maximum de processus ou de messages -ue peut contenir la file d'attente associée; SCT est urn nombre alaébrique dont la valeur absolue undqu Le le nombre de processus ou de messages contenus dans _a file d'attente et dont le signe indique s'il s'agit de processus ou de messages; PQHP/MQHP est un pointeur représentatif de l'adresse du premier lien de processus ou de message de la file d 'attente; MQTP est un pointeur indicatif de l'adresse du dernier lien de processus ou de messages de la file d'attente. Le format d'un lien de message ML est représenté à la figure 6 Il comprend plusieurs champs ayant les significations suivantes: NL est un pointeur représentatif de l'adresse du lien de message suivant; SENDER est l'identité du processus émetteur du message; MPL correspond au niveau de priorité du message; MTAG est un indicateur définissant le type de message; MESSAGE est la zone réservée au message proprement dit. Il existe également un sémaphore particulier permettant de gérer une file d'attente de processus en attente d'un lien de message libre ou une file d'attente des liens de message libres ainsi qu'un sémaphore gérant une file d'attente des liens de processus libres. Le brevet US 4,395,757 décrit comment sont utilisés les sémaphores pour réaliser la synchronisation des processus. Nous ne décrirons donc pas en détail ces opérations mais il convient de rappeler qu'elles sont provoquées par des instructions de typv De ? ou V ayant pour effet respectivement de décrémenter ou d'incrémenter le compteur SCT initialement à O du sémaphore Ainsi un compte SCT positif signifie qu'un événement ou un message associé au sémaphore a déjà été notifié par au moins un processus Par contre, un compte SCT négatif indique qu'au moins un processus est en attente d'un événement ou d'un message associé au sémaphore Nous verrons plus précisément en référence aux figures 8 à 11 le déroulement des instructions P et V dans le cadre de l'invention. La figure 7 représente une autre structure de données appelée "bloc de contrô 181 e du système" SCB regroupant toutes les données utiles au système pour sa gestion Il comprend notamment des champs particuliers utilisés lors des opérations de dispatching Ces champs ont les significations suivantes: RDYLK est un verrou associé à la file d'attente des processus prêts Q/PR/RDY; CST contient la valeur d'un compteur de contraintes indiquant le nombre de processus constitués dans le système aui doivent être exécutés par des processeurs particuliers MPDL est un verrou de dialogue entre processeurs; SEMLK est un ensemble de verrous associés respectivement à des sémaphores ou à des groupes de sémaphores; VLD-CPU-MSK est un masque dont le profil binaire permet de déterminer les processeurs valides du système; IDLE-CPU-MSK est un masque dont le profil binaire permet de déterminer les processeurs inacỉfs dans le système. Nous allons maintenant montrer comment l'invention peut être utilisée dans le cas des deux exemples particuliers que sont les instructions de type P et V sur sémaphores. O O L'organigramme de la figure 8 montre 'es opérations déclenchées par une instruction de type P exécutée par le processeur CPU Nous rappelons que l'apparition d'une instruction P dans un processeur signifie que leprocessus contenant cette instruction doit vérifier si un événement associé à un sémaphore particulier est survenu ou si un message a été transmis avant de pouvoir continuer son exécution L'exécution de l'instruction P correspond à l'exécution d'un microprogramme correspondant que nous allons expliquer. L'étape 1 est une opération de "TEST AND SET" du verrou SEMLK associé au sémaphore identifié dans l'instruction P. Nous rappelons que cette opération connue en soi consiste ici à accéder au verrou SEMLK contenu dans le bloc de contrôle du système SCB Si le verrou est libre (SEMLK = 0), le verrou est mis à l'état occupé (SEMLK: = 1) et le microprogramme se poursuit Si par contre le verrou est pris (SEMLK = 0), le microprogramme se met en attente jusqu'à la libération du verrou. L'étape 2 suivante consiste à accéder au sémaphore SEM, à analyser son contenu et à procéder à sa mise à jour consistant notamment à décrémenter le compte SCT d'rune unité Si le compte SCT était positif, cela signifie que l'événement ou le message sollicité par le processus a déjà été notifié Dans ce cas, le verrou SEMLK est libéré à l'étape 3 (SEMLK: = 0) et 1 'instruction suivante du _ 7 processus peut généralement s'exécuter Il est à noter que si le sémaphore est du type avec message, la mise à jour du sémaphore consistera aussi à retirer un lien de message de la file d'attente des messages De plus, le contenu du message sera chargé dans les registres de travail du processeur Dans des cas particuliers, il est également possible que cette opération entraîne la libération d'un processus en attente d'un lien libre de message, auquel cas le microprogramme fait appel à un module spécialisé pour traiter cette situation. Si le compte SCT était négatif ou nul, l'exécution du processus doit être interrompue Une opération de TEST AND SET du verrou RDYLK est alors effectuée à l'étape 4 puis, à l'étape 5,r le lien du processus CJP en cours d'exécution est déplacé de la file Q/PR/RDY vers la file Q/PR/S associée au sémaphore SEM Le verrou SEMLK est alors libéré à l'étape 6 puis, à l'étape 7, le champs CST du bloc SCB est testé Si CST est différent de 0, cela signifie qu'il existe des processus avec contraintes Le microprogramme se branche alors sur le module central CTSEL après avoir libéré le verrou RDYLK à l'étape 8 Le module CTSEL peut être réalisé conformément à la demande de brevet français déposée sous le numéro 90 06948 précitée. Si le compteur CST est nul, le microprogramme fait appel au module DQSEL spécialisé pour effectuer le choix d'un nouveau processus NJP dans le cas d'un retrait d'un processus de la file d'attente des processus prêts Q/PR/RDY. L'exécution du module DQSEL commence par l'étape 9 qui procède à l'accès à la file d'attente des processus prêts Q/PR/RDY et à son analyse Cette analyse consiste essentiellement à sélectionner celui des processus prêts NJP dans la file Q/PR/RDY (supposée non vide) qui doit passer à l'état actif Le verrou RDYLK est ensuite libéré à l'étape 10. L'étape 11 i suivante consiste à tester le verrou de boite aux lettres DCLK contenu dans le bloc de contrôle de processeur CPCB du processeur exécutant DQSEL Si le verrou DCLK est pris (DCLK = 1), cela signifie qu'un d-alogue entre processeur est déjà en cours et que l'on est par conséquent en présence d'un conflit entre dispatching Le microprogramme fait a-ors appel au module centralisé CTSEL. Si par contre le verrou DCLK est libre (DCLK = 0), le microprogramme prend ce verrou à l'étape 12 (DCLK: = 1) et force à I le bit D du lien associé au processus NJP Il procède ensuite à l'étape 13 à l'inscription du numéro du processus sélectionné NJP dans le champ correspondant du bloc CPCB L'étape 13 se termine par l'appel du module EXEC qui va maintenant être décrit en référence à la figure 9. L'organigramme de la figure 9 présente le cas général d'un processeur quelconque CP Ui exécutant le module EXEC Bien entendu, lorsque ce module est appelé par une opération DQSEL exécutée par le processeur CPU, il sera exécuté par le même processeur, donc avec CP Ui = CPU. Le module EXEC débute à l'étape 14 par un accès au bloc de contrôle de processeur CPCB du processeur CP Ui pour prendre en compte le numéro du nouveau processus à exécuter NJP Il accède ensuite à l'étape 15 au bloc de contrôle de processus PCB du processus CPJ en cours d'exécution dans CP Ui pour effectuer la sauvegarde du contexte de ce processus Il effectue ensuite à l'étape 16 une opération de TEST AND SET du verrou RDYLK puis, à l'étape 17, il accède à la file Q/PR/RDY pour effectuer sa mise à jour consistant à mettre à 0 le bit R du lien du processus CJP Il accède aussi au bloc PCB de CJP pour mettre le champs STATE à l'état "prêt et non actif" Le verrou RDYLK est ensuite libéré à l'étape 18 A l'étape 19, le bloc de contrôle de processus PCB du processus sélectionné NJP est accédé pour effectuer le chargement du contexte de ce processus dans les registres du processeur A l'étape 20, le bloc CPCB du processeur CP Ui -9 est accédé pour libérer son verrou DCL Ki Une opération de TEST AND SET du verrou RDYLK est à nouveau effectuée à l'étape 21 puis la file Q/P Rl RDY est à nouveau accédée à l'étape 22 pour la mise à jour du champs TEN et pour mettre respectivement à l et à 0 les bits R et D du lien du processus NJP De plus, le champs STATE du bloc PCB de NJP est mis à l'état "actif" Après cette opération, le verrou RDYLK est à nouveau libéré à l'étape 23. Les opérations déclenchées par une instruction de type V sont représentées sur l'organigramme de la figure 10 Une instruction V est l'instruction complémentaire d'une instruction P Elle signifie que le processus contenant cette instruction notifie un événement ou un message à un sémaphore particulier. Le microprogramme d'exécution d'une instruction V débute à l'étape 24 par une opération de TEST AND SET du verrou SEMLK associé au sémaphore SEM identifié dans l'instruction V. L'étape 25 suivante consiste à accéder au sémaphore, à analyser son contenu et à procéder à sa mise à jour consistant notamment à incrémenter le compte SCT d'une unité Si le compte SCT était positif ou nul, cela signifie qu'aucun processus n'est en attente de l'événement ou du message notifié par l'instruction V Dans ce cas, le verrou SEMLK est libéré à l'étape 26 et l'instruction suivante du processus peut normalement s'exécuter Si le sémaphore est du type avec message, la mise à jour du sémaphore consistera aussi à ajouter un lien de message dans la file d'attente des messages Dans le cas particulier o il n'y a plus aucun lien de message libre, le microprogramme fait appel à un module spécialisé non décrit pour traiter ce cas. Si le compte SCT était négatif, cela signifie qu'il y a au moins un processus en attente de l'événement ou du message dans la file d'attente Q/PR/S associée au sémaphore La file Q/PR/S est alors analysée à l'étape 27 pour sélectionner le processus NJP devant être retiré de cette file d'attente et placé dans la file Q/PR/RDY des prozessus prêts Dans ce but une opération de TEST r AND SET du verrou RKYLK est effectuée à l'étape 2 & puis, au cours de l'étape 29, le lien du processus sélectionné NJP est déplacé de la file Q/PR/S vers la file Q/PR/RDY Le verrou SEMLK est ensuite libéré à i'étape 30. Le champs CST est ensuite testé à l'étape 31 Si CST est différent de 0, le microprogramme se branche sur le module centralisé CTSEL Si par contre le compteur CST est nul, le microprogramme fait appel au module EQSEL spécialisé pour traiter le cas d'un ajout d'un processus dans la file d'attente des processus prêts Q/PR/RDY. L'exécution du module EQSEL commence par l'étape 33 qui procède à l'accès à la file d'attente des processus prêts Q/PR/RDY en vue de déterminer si le nouveau processus NJP doit devenir actif et dans ce cas sélectionner celui des processeurs CPU, CP Ui qui devra l'exécuter Cette opération peut être alors très simple si l'on a prévu un pointeur vers le lien du dernier processus actif ayant le plus bas niveau de priorité Dans ce cas, il suffit de comparer le niveau de priorité de NJP avec celui du processus désigné par le pointeur Si NJP a une priorité égale ou inférieure, il ne sera pas sélectionné Si par contre NJP est plus prioritaire, il devra remplacer ce processus dont le lien indique par son champs TEN le processeur concerné. Si le processus NJP n'est pas sélectionné, l'opération se termine par la libération du verrou RDYLK à l'étape 34. Si par contre le processus NJP est sélectionné, l'un des processeurs du système CPU, CP Ui devra interrompre l'exécution de son processus en cours pour le remplacer par le processus sélectionné NJP Si le processeur sélectionné est le processeur CPU qui exécute le module EQSEL, l'opération se poursuit par la libération du verrou RDYLK à l'étape 35 puis par le test du verrou DCLK de la boite aux lettres du processeur CPU à l'étape 37 Si le verrou est pris, le microprogramme se branche sur le module central CTSEL Si par contre le verrou DCLK est libre, le microprogramme prend ce verrou à l'étape 37 et procède ensuite à ''tape 38 à l'inscription du numéro du processus sélectionné NJP dans le champ correspondant du bloc CPCB du processeur CPU L'étape 38 se termine par l'appel du module EXEC qui a été décrit en référence à la figure 9. 0 Si l'analyse effectuée à l'étape 33 conduit à sélectionner un autre processeur CP Ui, le verrou RDYLK est libéré à l'étape 39 et le microprogramme se poursuit par les opérations A représentées à la figure 11. L'étape suivante 40 effectue le test du verrou de dialogue MPDL Si ce verrou est pris, le microprogramme se branche sur le module central CTSEL Si par contre MPDL est libre, le microprogramme prend ce verrou à l'étape 41 Il teste ensuite à l'étape 42 le verrou de boite aux lettres DCL Ki du processeur CP Ui sélectionné Si le verrou DCL Ki est pris, le microprogramme se branche sur le module central CTSEL après avoir libéré MPDL à l'étape 43 Si par contre DCL Ki est libre, il prend le verrou à l'étape 44 Il procède ensuite à l'étape 45 à l'inscription du numéro du processus sélectionné NJP dans le champ correspondant du bloc CPCB du processeur sélectionné CP Ui. Le microprogramme utilise ensuite à l'étape 46 les moyens de dialogue entre processeurs en envoyant une interruption EXE Ci au processeur CP Ui Ensuite, lors de l'étape 47, le microprogramme se met en attente de l'acquittement qui doit être émis par le processeur CP Ui Lorsque cet acquittement est reçu, le verrou de dialogue MPDL est libéré à l'étape 48 qui termine l'opération Le processeur pourra alors poursuivre l'exécution du processus qui lui est affecté. L'envoi de l'interruption EXE Ci au processeur CP Ui à l'étape 46 a pour effet d'activer dans ce processeur le gestionnaire d'interruption qui procédera à l'appel du module EXEC déjà décrit en référence à la figure 9 Ainsi, ce n'est qu'au cours de l'exécution de ce module à l'étape 20 que sera libérée le verrou de bolte aux lettres DCL Ki. Selon une particularité intéressante de la réalisation, on prévoit que l'appel du module EXEC dans un processeur par ce même processeur (étapes 13 de la figure 8 et 38 de la figure ) se fera par le mécanisme général d'interruption décrit dans la demande de brevet français n 90 06948 précitée qui permet qu'une processeur peut se notifier à soi-même des messages Bien entendu, le verrou de dialogue MPDL n'intervient pas dans un tel cas. Afin d'optimiser davantage le fonctionnement, on pourra prévoir que le champs CST du bloc SCB comporte un indicateur de conflit mis à un état différent de O chaque fois qu'un conflit est détecté lors des tests des verrous DCLK et MPDL (étape 11, 37, 40) Ainsi, le test de CST (étapes 7, 31) tiendra compte très tôt de l'existence d'un conflit entre dispatchings. La description détaillée des opérations P et V sur sémaphore qui précède montre comment utiliser les modules spécialisés EQSEL et DQSEL en coopération avec le module central CTSEL pour permettre une exécution répartie du dispatching avec des possibilités accrues de parallélisme On peut remarquer en particulier que plusieurs processeurs peuvent exécuter simultanément certaines phases de dispatchings différents, avec pour seule contrainte l'interdiction d'accès simultané à certaines ressources partagées (sémaphores, file Q/PR/RDY, mécanisme de dialogue, boîtes aux lettres) Ces interdictions sont assurées très simplement aux moyens de verrous associés à ces ressources et garantissent ainsi l'intégrité du système. Bien entendu, les modules EQSEL et DQSEL peuvent aussi intervenir en réponse à d'autres instructions que les instructions P et V C'est le cas en particulier pour l'instruction START qui a pour fonction d'introduire un nouveau processus dans le système. Conformément à l'invention, on pourra également prévoir d'autres modules spécialisés qui seront choisis en fonction du contexte d'exploitation du système On pourra par exemple prévoir un module CHSEL pour répondre au cas ou une instruction commande le déplacement d'un lien de processus dans la file Q/PR/RDY C'est le cas par exemple de instruction CHOP qui modifie le niveau de priori Lté du processus qui la contient ou de l'instruction RLQ qui provoque l'abandon du droit à exécution du processus. Les microprogrammes traitant ces autres cas pourront être réalisés en s'inspirant de la description détaillée des modules EQSEL et DQSEL exposés ci-dessus Ces réalisations sont à la portée de l'homm e du métier et ne nécessitent donc pas d'explications supplémentaires. Revendications: 1 Système informatique multiprocesseur dont une pluralité de processeurs (CPU) sont munis chacun de moyens microprogrammés (C?) pour effectuer la répartition des processus (JP) aux processeurs (CPU) du système, lesdits moyens microprogrammés (CP) étant activés dans un processeur (CPU) en réponse à tout événement détecté par ledit processeur (CPU) et qui est susceptible de provoquer une modification dans le choix des processus (JP) devant être exécutés et des processeurs (CPU) qui les exécutent, ledit système étant caractérisé en ce que lesdits moyens microprogrammés (CP) comportent au moins un module spécialisé de microprogramme (CHSEL, DQSEL, EQSEL) capable de déterminer ladite répartition en réponse à une catégorie d'événements particuliers et un module central de microprogramme (CTSEL) capable de déterminer ladite répartition pour des événéments autres que ceux traités par lesdits modules spécialisés (CHSEL, DQSEL, EQSEL). 2 Système selon la revendication 1 caractérisé en ce que chaque catégorie d'événements particuliers comprend des événements parmi ceux qui ont la plus forte probabilité de se produire au cours de l'exploitation du système. 3 Système selon l'une des revendications 1 ou 2 caractérisé en ce que chaque catégorie d'événements particuliers comprend des événements qui provoquent des modifications simples dans le choix des processus (JP) devant exécutés et des processeurs (CPU) qui les exécutent. 4 Système selon la revendication 3 caractérisé en ce que l'identité des processus (JP) exécutables dans le système étant mémorisés soit dans une file d'attente (Q/PR/S) des processus en attente d'un événement, soit dans au moins une file d'attente (Q/PR/RDY) des processus prêts, c'est-à-dire actifs dans un processeur ou en attente d'un processeur, lesdites catégories d'événements comprennent les événements susceptibles de provoquer respectivement un ajout, un retrait ou un déplacement d'un seul processus (JP) dans la fil e d'attente (Q/PR/RDY des processus prêts. Système selon la revendication 4 caractérisé en ce que la file d'attente (Q/PR/RDY) des processus prêts est associée à un verrou (RDYLK) utilisé par lesdits moyens microprogrammés (CP) pour assurer qu'un seul processeur (CPU) à la fois puisse modifier l'état de la file d'attente (Q/PR/RDY) des processus prêts. 6 Système selon l'une des revendications 4 ou 5 caractérisé en ce que les files d'attente (Q/PR/S) sont associées à au moins un verrou (SEMLK) utilisé par lesdits moyens microprogrammés (CP) pour assurer qu'un seul processeur (CPU) à la fois puisse modifier l'état de la file d'attente (Q/PR/S) des processus en attente. 7 Système selon l'une des revendications 1 à 6 caractérisé en ce que lesdits modules spécialisés (CHSEL, DQSEL, EQSEL) sont prévus pour pouvoir effectuer l'appel du module central (CTSEL). 8 Système selon la revendication 7 caractérisé en ce qu'il comporte des moyens de dialogue entre processeurs utilisés le cas échéant par lesdits moyens microprogrammés (CP) d'un processeur (CPU) pour émettre des requêtes (EXE Ci) notifiant à d'autres processeurs (CP Ui) l'identité de nouveaux processus (NJP) à exécuter, en ce que lesdits moyens de dialogue sont associés à un premier verrou de dialogue (MPDL) utilisé par lesdits moyens microprogrammés (CP) pour assurer qu'un seul processeur (CPU) à la fois émette lesdites requêtes (EXE Ci) et en ce que, chaque module spécialisé est conçu de façon à arrêter son exécution et à effectuer l'appel du module central (CTSEL) dans le cas o I'exécution dudit module spécialisé (CHSEL, DQSEL, EQSEL) implique un dialogue alors que ledit verrou (MPDL) est pris. 9 Système selon la revendication 8 caractérisé en ce que lesdits moyens de dialogue comportent une boite aux lettres (CPCB) associée à chaque processeur (CPU) et utilisée par lesdits moyens microprogrammés (CP) pour transmettre lesdites requêtes (EXE Ci),' en ce que chaque boîte aux lettres (CPCB) est associée à un verrou (DCLK) qui est mis à l'état occupé par le processeur (CPU) émetteur des requêtes (EXE Ci) et libéré par le processeur (CP Ui) après exécution de la requête qui lui était destinée et en ce que chaque module spécialisé est conçu de façon à arrêter son exécution et à effectuer l'appel dudit module central (CTSEL) dans le cas o l'exécution dudit module spécialisé (CHSEL, DQSEL, EQSEL) implique l'envoi d'une requête (EXE Ci) à un processeur (CP Ui) alors que le verrou (DCLK) de sa boîte aux lettres est pris. Système selon l'une des revendications 1 à 9 caractérisé en ce qu'il comporte un indicateur de contraintes (CST) dont l'état est indicatif de l'existence dans le système de processus (JP) avec contraintes, c'est-à-dire dont l'exécution doit être effectuée par certains processeurs (CPU) particuliers, et en ce que lesdits moyens microprogrammés (CP) sont conçus de façon à ce que la répartition des processus (JP) aux processeurs (CPU) soit effectuée par ledit module central (CTSEL) lorsque ledit indicateur (CST) signale l'existence de contraintes.