FR 2599871 A1 19871211 FR 8608378 A 19860610 Processeur microproarammé de résolution de Proarammes logiquesL'invention a pour objet un processeur micro5 programmé pour machine de traitement de données destinée à exécuter des programmes écrits dans les langages connus sous le nom "PROLOG". Elle trouve une application particulièrement importante dans les machines sur lesquelles est installé un interpréteur PROLOG et dont 10 l'architecture présente un bus unique de communication auquel sont raccordés des modules de mémoire commune, et des modules de traitement, ces derniers ayant chacun une unité de traitement dont l'accès à une mémoire locale et aux autres mémoires accessibles du système par l'inter15 médiaire d'un bus local est commandé par une unité de gestion de mémoire locale. Dans une telle architecture, le processeur comportera un bus local géré de façon similaire à celle des bus locaux des modules de traitement et le processeur 20 aura également une constitution générale similaire. On ne décrira pas ici la structure du langage PROLOG, étant donné qu'on peut se reporter à de nombreux documents, parmi lesquels "Logic for problem solving" par R. Kowalski, THE COMPUTER SCIENCE LIBRARY, 25 Artificial Intelligence, Series 7, North Holland., et, pour ce qui est de l'interpréteur PROLOG évolué réalisé par le Centre National d'Etudes des Télécommunications, à "Manuel d'utilisation de PROLOG/CNET", Septembre 1983, CNET Issy-les-Moulineaux et à l'article 'PROLOG" dans 30 "Revue Française des Télécommunications", No. 53, octobre 1984, Paris. Il est cependant utile de rappeler quelques notions de base et la terminologie utilisée. Les termes spécifiques de PROLOG sont identifiés dans ce qui suit, 35 la première fois qu'ils sont mentionnés, en les mettant en lettres capitales. Un programme PROLOG se présente sous forme d'une série de CLAUSES sous la forme dite de Horn: B ≤ (A1 & A2 &... & An) o B, A1,..., An sont des PREDICATS, fonction de TERMES, variables ou constants, & désigne l'opération logique ET ≤ est la relation d'implication. Un prédicat dans lequel une variable d'un 10 prédicat plus général a été remplacée par une constante, prend le nom d'INSTANCE de ce dernier. Enfin, on désigne par LITTERAL un prédicat appliqué à une liste de TERMES et par CLAUSE l'ensemble constitué d'un littéral de tête définissant un but à atteindre et d'une suite ordonnée 15 de littéraux définissant les conditions à satisfaire pour atteindre ce but. Le langage PROLOG doit être traité par un système, constitué par un programme écrit en langage de haut niveau, tel que PASCAL, qui, dans une première 20 étape, effectue la compilation du programme en PROLOG et le transforme en une forme interne à la machine de traitement. L'étape suivante consiste en une interprétation sur l'ensemble des clauses. La RESOLUTION du programme entré va consister à 25 trouver les valeurs des variables X1,..., Xn intervenant dans les prédicats figurant dans la demande d'interrogation. Elle fait intervenir une séquence d'opérations d'UNIFICATION de termes, qui consiste à rechercher les substitutions minimales de variables 30 (laissant un maximum de liberté aux variables) pour lesquelles les termes sont identiques. Les opérations à effectuer par la machine comportent donc l'exécution des prédicats, une compilation et une résolution. La compilation du programme, écrit 35 par exemple en PASCAL, se traduit par une analyse des - littéraux et par la génération de clauses et littéraux, en la forme interne à la machine. La résolution comprend l'affectation de variables, la recherche de termes dans des structures arborescentes, et la fonction d'accès. L'unification constitue un sous-ensemble de la résolu5 tion. La résolution est constituée par un parcours des clauses à partir d'une demande exprimée sous forme d'une suite de littéraux. La résolution implique l'utilisation respective d'un mécanisme d'unification tel que défini ci-dessus. Chaque opération élémentaire d'unification 10 fournit un résultat purement binaire, souvent appelé "réussite" ou "échec". Dans les machines existantes, un même module de traitement réalise toutes les opérations requises d'interprétation et de résolution. L'invention part de la 15 constatation que le logiciel d'application qui constitue le coeur du mécanisme de résolution de PROLOG ne représente qu'une très faible fraction du programme écrit en langage de haut niveau (quelques centaines de lignes, c'est-à-dire quelques pour cent en général) et que la 20 durée pendant laquelle ce logiciel est mis en oeuvre pour assurer la résolution représente jusqu'à 70% du temps total d'exécution. Cette constatation à elle seule est cependant complètement inutile, car le fait de reporter cette 25 partie du programme sur un organe séparé ne peut conduire & un raccourcissement du temps d'exécution; au contraire la nécessité d'échanges peut être une source d'allongement. L'invention écarte ce problème en prenant en 30 compte le caractère des opérations d'unification. Il s'agit d'une fonction répétitive et récursive (c'estàdire impliquant, lorsqu'on passe d'une exécution à la suivante, une simple modification des paramètres). Dans la pratique, le petit nombre des procédures qui sont 35 utilisées fait qu'elles peuvent être mises en oeuvre par microprogrammation câblée. L'invention propose donc un processeur microprogrammé pour machine d'exécution de programme PROLOG comprenant un bus local accessible par un interpréteur et un module de traitement; processeur caractérisé en ce qu'il comporte une unité arithmétique 5 et logique et un séquenceur de microprogrammes gérant un mécanisme d'arbitrage d'accès au bus local, couplé & un circuit de gestion des interruptions, réveillé par adressage à partir du module de traitement et comportant un programme câblé de gestion des interruptions. On obtient ainsi un gain sensible de temps d'exécution à condition de prévoir: - une procédure d'arbitrage rapide des demandes d'accès à l'espace mémoire des données communes de la machine d'exécution par le bus local; - une synchronisation qui n'impose qu'un couplage réduit entre le processeur de la machine d'exécution et le processeur microprogrammé. Le processeur microprogrammé est "appelé" ou "réveillé" par un signal émis par le module de traite20 ment de la machine d'exécution. Dans une réalisation avantageuse, le signal, de constitution variable, est envoyé à une adresse fixe qui indique la procédure que doit entreprendre le processeur microprogrammé. Le nombre de signaux à échanger entre le processeur micro25 programmé et le module de traitement est très faible et se limite à des signaux de commande. L'interpréteur n'a pas à générer le code d'ordre vers le processeur microprogrammé: celui-ci reçoit directement et exécute la version microprogrammée de la procédure qui, dans une 30 machine de constitution classique, est programmée en PASCAL, ce qui se traduit par un gain de temps important. Le processeur sera en général prévu pour être au repos en attente de demande de service et être réveillé 35 par le module de traitement en réponse à une demande formulée par l'interpréteur ou à l'acquittement d'une demande de service par le processeur. L'invention sera mieux comprise à la lecture de la description qui suit d'un mode particulier d'exécution, donné à titre d'exemple non limitatif. La 5 description se réfère aux dessins qui l'accompagnent, dans lesquels: - la Figure 1 est un synoptique de principe, montrant l'incorporation d'un processeur suivant l'invention dans une machine multiprocesseur à structure 10 modulaire; - les Figures 2, 3 et 4 sont des schémas fonctionnels montrant respectivement des constitutions possibles d'un ensemble d'exécution de microprogrammes, d'un système de gestion des interruptions et d'un système d'arbitrage d'accès au bus local. La Figure 1 montre, d'une part, l'architecture générale d'une machine multiprocesseur sur laquelle l'invention peut être mise en oeuvre et, d'autre part, celle du processeur suivant l'invention. La machine peut 20 être du type SM 90, dont une description est donnée dans l'Echo des Recherches, No. 105, Juillet 1981, pp. 15-22 auquel on pourra se reporter. Cette machine peut notamment être munie d'un système d'arbitrage d'accès des différents processeurs à des ressources communes par le 25 bus du type décrit dans la demande de brevet EP n' 82 401 691 (EP-A-0076 196). La machine montrée en Figure 1 peut être regardée comme comprenant un bus de communication 10 auquel sont reliés des modules de traitement 12, des 30 modules d'échange 14 et des modules de mémoire commune 16. Un seul module de chaque type a été représenté pour plus de simplicité. Les modules de traitement ont essentiellement pour fonction d'effectuer des traitements sur données en mémoire, tandis que les modules d'échange ont 35 pour fonction d'effectuer les opérations d'entrée-sortie volumineuses au profit des modules de traitement 12, et éventuellement de faire des prétraitements pour alléger le travail des modules de traitement. Chaque module de traitement 12 comporte une unité de traitement 16, constituée par un micropro5 cesseur, reliée à un bus privé 18 qui, comme son nom l'indique, est prévu pour les échanges internes au module 12 correspondant. Une mémoire privée 20 est reliée au bus privé et est prévue pour qu'aucune unité de traitement autre que l'unité 16 du même module 12 ne 10 puisse y accéder. Sur le bus privé peut également être monté un interface 22 de raccordement de périphérique (prise V 24 par exemple). Chaque module de traitement 12 comporte une 15 unité de gestion de la mémoire 24, qui permet à l'unité de traitement 16 d'accéder, par l'intermédiaire d'un adressage logique, d'une part, à une mémoire locale 26, d'autre part, à des mémoires externes (mémoires communes 16 et mémoires locales d'autres modules). Les liaisons 20 internes à un module 12 s'effectuent par un bus local 28 qui, dans le cas de la machine SM90, comporte seize fils de données, vingt-quatre fils d'adresse, huit bits de commande et trois fils destinés aux signaux d'arbitrage. La mémoire locale 26 est reliée au bus local 28, auquel 25 l'unité de gestion de mémoire 24 accède par l'intermédiaire d'un contrôleur de bus local 30. Les liaisons entre le module 12 et le bus de communication 10 s'effectuent par l'intermédiaire d'éléments qui, dans le cas illustré en Figure 1, 30 comprennent: - un contrôleur 32 de bus de communication 10, permettant à l'unité de gestion de mémoire 24 d'accéder au bus 10, - un arbitre 34 de bus de communication qui 35 règle les conflits d'accès au bus 10 et qui intervient pour autoriser le contrôleur 32 à provoquer un transfert sur ce bus 10 lorsqu'il a reçu l'autorisation d'accès, permettant un arbitrage totalement décentralisé, - un superviseur local 36, remplissant les fonctions habituelles de gestion et de détection d'anomalies, - un contrôleur 38 d'appel externe, utilisé notamment pour gérer les interruptions de l'unité de traitement par une autre unité de traitement ou une unité d'échange. Les modules d'échange 14 comportent un bus interne d'échange 40 auquel sont reliées une unité d'échange 44, constituée par un microprocesseur, une mémoire privée 46 (accessible uniquement par l'unité d'échange 44 du module auquel elle appartient) et une 15 mémoire d'échange 42 permettant à l'unité d'échange 44 de communiquer avec les unités de traitement 16. La machine est dotée d'un système d'exécution en temps réel dont la partie centrale ou "noyau" figure dans chacune des mémoires privées 20 de façon à préser20 ver le taux de disponibilité de la structure. Les structures de données gérées par la machine figurent en mémoire commune 16 de façon à être accessibles par toutes les unités de traitement 12. La mémoire commune 16 peut être doublée de façon à disposer en permanence 25 d'une mémoire de sauvegarde. Dans une configuration'représentative, le bus de communication 10 comporte soixante-quatre fils et peut être regardé comme comportant un bus d'adresses (vingtcinq fils), un bus de données (seize fils) et des 30 conducteurs remplissant des fonctions directes. Le processeur 48 selon l'invention est associé à celui des modules 12 qui est consacré à l'exécution des programmes PROLOG, par l'intermédiaire du bus local de ce dernier, et présente une constitution telle qu'il 35 soit couplé en mode esclave au module de traitement 12. Il comporte le micrologiciel d'application correspondant à la résolution de l'interprète PROLOG qui, dans le cas envisagé plus loin de la version PROLOG/CNET, occupe 16 koctets de mémoire. On verra plus loin que le processeur 48 est comparable à un module d'échange 14, mais est 5 totalement transparent pour le système d'exploitation de la machine, système en général prévu pour des applications beaucoup plus générales que la simple mise en oeuvre de programmes PROLOG. La mise en oeuvre de l'invention implique, d'une 10 part, la présence du processeur 48, d'autre part, un aménagement de la mémoire locale du module 12 associé au processeur 48: une partie de cette mémoire locale devra constituer une mémoire d'échange avec le processeur microprogrammé. ToDoloaie de la mémoire d'échange La Figure 1 montre qu'une fraction de la mémoire locale 26 du module de traitement 12 est constituée par une mémoire d'échange 26a destinée à la gestion des 20 données communes de résolution. Dans le cas d'applications exigeant plusieurs milliers de clauses PROLOG, il est nécessaire de prévoir un espace mémoire de 2 Moctets pour cette fonction, avec un interpréteur PASCAL. La mémoire d'échange 26â sera donc une carte de mémoire 25 rapide directement reliée au bus local 28. Sa présence ne pose pas de problème sur une machine de type SM 90, o la mémoire locale peut aller jusqu'à 16 Moctets. L'espace mémoire utilisé par la mémoire d'échange 26k doit assurer la visibilité des données par 30 le processeur 48 et le microprocesseur 20 du module de traitement. Par contre, cet espace ne doit pas être utilisé par le système général d'exploitation de la machine. Dans l'espace mémoire, la mémoire d'échange peut 35 être regardée comme une zone physique -réservée à l'application PROLOG et protégée contre l'utilisation par le système; plusieurs segments de cette zone physique de mémoire doivent être allouées par une primitive du système (PHYS dans le cas spécifique d'un système d'exploitation UNIX sur SM 90). La fonction 5 "CONVERT" accessible en PASCAL, ou la fonction correspondante sur d'autres systèmes, permet de convertir une adresse physique en un pointeur, au sens PASCAL du terme. La mémoire d'échange 26â présente une topologie 10 liée à la description des espaces d'objet de l'interpréteur PROLOG, constituée par les paquets de clauses, les clauses, les littéraux et les termes au sens défini cidessus, ainsi que les chaînes de caractères et les espaces liés au contexte de résolution. Ces espaces 15 d'objet sont traduits sous forme de tableaux de structures, dans le cas de PASCAL. Dans le cas particulier qui sera envisagé ici, les données nécessaires à la résolution conduisent à dix espaces ayant les mêmes dimensions. Dans le cas o le processeur 48, qui sera décrit plus loin, utilise des mots de 16 bits, donc est capable de gérer un registre d'index variant de O à 216-1, les espaces d'objets auront une taille maximum de 64 kmots de 16 bits, c'est-à-dire seront des blocs de 128 25 koctets. Les dix espaces consécutifs nécessaires aux objets sont alors une suite continue de blocs de 128 koctets, dont chacune représente l'occupation maximale d'un espace d'objet PROLOG. Un pointeur est attaché à 30 chacun de ces espaces objet. L'origine physique d'un type dépend uniquement des déclarations faites sur l'appel de la fonction primitive (PHYS). Les espaces physiques associés aux objets PROLOG sont alors créés dans un ordre déterminé par une procé35 dure d'initialisation. Il suffit, pour assurer une complète visibilité des données, de créer une cartographie de référence vers ces espaces physiques lors de l'assemblage des microprogrammes du processeur 48. Une affectation possible des espaces physiques est la suivante: H200000: H220000: H240000: H260000: H280000: H2aOOOO: H2cOOOO: H2eOOOO: H300000: H320000: H340000: espace du type des termes espace de la partie gauche des termes espace de la partie droite des termes espace des variables affectées espace des variables substituées espace des chaînes de caractères espace des paramètres des signaux espace des noeuds espace des littéraux espace des clauses espace des paquets de clauses. Fonctions et architecture du processeur microproarammé Dans l'architecture montrée en Figure 1 de façon simplifiée, le processeur 48 peut être regardé comme comprenant plusieurs sous-ensembles: - un interface 50 de bus local, destiné à assurer les liaisons entre le bus local 28 et les bus 25 internes au processeur (bus privé 52, dont le rôle est analogue à celui du bus privé 18 d'un module de traitement, et bus de:commande 54), - une unité arithmétique et logique 56, couplée au bus privé 52 et au bus de commande 54, - une mémoire privée 58, couplée uniquement aux bus 52 et 54, contenant la pile d'unification et permettant la sauvegarde temporaire des registres (mémoire rapide de 8 koctets par exemple), - un ensemble d'exécution de microprogramme 35 comprenant un sélecteur de conditions 68, un séquenceur de microprogramme 60, une mémoire de commande 62 et une 2.599871 mémoire de micro-instruction 64, cette dernière comprenant essentiellement un jeu de registres de capacité égale au nombre de bits d'une micro-instruction (64 bits par exemple), - enfin, un système de gestion des interruptions, que l'on peut regarder comme comprenant un circuit d'interruption à horloge 66 et le séquenceur 60. L'interface 50 doit être compatible avec l'interpréteur PROLOG utilisé. Deux prédicats supplé10 mentaires sont à prévoir si l'on souhaite conserver la possibilité de travailler en mode de résolution PASCAL et donc provoquer à volonté l'activation et la désactivation du processeur 48. Les prédicats supplémentaires à introduire peuvent être: COPROCESSOR_ON, faisant passer en mode résolution sur le processeur 48, COPROCESSOR_OFF, faisant passer en mode résolution PASCAL sans intervention du processeur. Avantageusement, l'initialisation est prévue 20 pour que l'interprète soit alors en mode résolution sur le processeur 48 sauf en cas de défaillance de ce dernier. L'interface 50 peut avoir une constitution classique, en portes commandant les liaisons entre les fils 25 du bus local 28 d'une part, ceux du bus privé 52 (bus de données de 16 bits et bus d'adresse de 24 bits) et du bus de commande 54 du processeur 48, d'autre part. Il est sous le contrôle du système de gestion des interruptions qui sera décrit plus loin. Il peut maintenant être utile, avant de décrire en détail les composants du processeur, de faire ressortir les mécanismes choisis pour l'arbitrage et la synchronisation, car ils jouent un rôle important dans le gain de temps obtenu. Arbitrage d'accès au bus local Seul un mécanisme d'arbitrage câblé permet de réduire le temps de réponse entre demande d'accès au bus local et autorisation d'accès. Le protocole câblé peut 5 être celui implanté sur l'unité de traitement 16, qui utilise trois fils du bus local pour gérer les requêtes suivant la séquence de signaux: - demande d'accès au bus 28 par le processeur 48 (BUS REQ), - autorisation d'accès au bus 28 fournie par le module 12 (BUS GRANT), confirmation d'accès au bus 28 fournie par le processeur 48 (BUS ACK). La fin de l'échange de données est indiquée par 15 relâchement du signal de confirmation d'accès au bus local. La partie de ce protocole implantée sur le processeur 48 peut être implémentée à l'aide d'une matrice programmable à registres appartenant au circuit 20 de contrôle de microcyçle du processeur directement liée à l'horloge (Figure 3). Chaque appel en mémoire locale 26à par le processeur se traduit par une requête d'accès au bus local 28. L'accès mémoire intervient dès réception de l'autorisation d'accès. Dans une situation représentative, le temps moyen de réponse du mécanisme d'arbitrage pourra être de 500 ns, de sorte que le temps moyen d'un accès en mémoire locale 26. sera de l'ordre de 1 ps, par un mécanisme complètement transparent pour le logiciel exécuté 30 par le microprocesseur 20 du module de traitement 12. On verra plus loin que le temps d'accès en mémoire privée 58 est inférieur d'au moins un ordre de grandeur à ce temps d'accès au bus, ce qui fait immédiatement apparaitre le gain de temps qui peut être 35 obtenu du fait que la pile d'unification est contenue dans cette mémoire privée. Mécanisme de synchronisation logiciel Le noyau du mécanisme de synchronisation du processeur 48 est réalisé par le séquenceur de microprogrammes 60 couplé au circuit de gestion des interruptions 66. Le processeur est prévu pour se mettre en attente de demande de service dès qu'une tâche est terminée et pour être réveillé lorsque le module de traitement envoie en mémoire d'échange 26A un numéro de 10 signal à une adresse déterminée. Le contenu de cette adresse déterminée provoquera une interruption câblée, transmise par le bus local 28 et reçue par le processeur 48. Le décodage du numéro du signal enregistré à l'adresse déterminée 15 provoque le branchement au microprogramme de traitement de la demande de service associé au signal reçu. A partir de cette phase, il y a échange d'informations bidirectionnel entre le module 12 et le processeur 48. Le processeur 48 peut également formuler une demande de service au module de traitement 12: pour permettre ce transfert d'activité, le module de traitement 12 est maintenu en attente de signaux pendant que le processeur 48 est en phase active, jusqu'à ce que la 25 demande de service initiale reçue par le processeur 48 ait été acquittée. Il existe une seule demande de service initiale vers le processeur 48, constituée par l'appel de la résolution. Par contre, les demandes de service intermédiaires formulées par le processeur 48 peuvent être de divers types. Il peut s'agir d'appels de fonctions ou d'appels de procédures complexes et qui, pour cette raison, ne sont pas traités par le processeur 48. Les 35 demandes de service adressées par le processeur peuvent être également nécessités par des contraintes sur la visibilité des données requises: certains objets (dictionnaire des symboles par exemple) ne sont pas dans les segments visibles de la mémoire d'échange 26A sur la machine SM 90. Les demandes de service peuvent être au nombre de huit et être les suivantes, dans un cas représentatif: appel au-traitement des prédicats évaluables, accès au dictionnaire des symboles, 10. appel à la gestion des liens entre modules, appel à la recherche d'un noeud de l'arbre de résolution, appel au test d'occurence dans l'unification, appel à la gestion des interruptions PROLOG, 15. appel aux procédures de traces, appel aux procédures de gestion des erreurs. Le taux de couplage entre le processeur 48 et le module 12 va être très faible, car le nombre des signaux 20 échangés est limité et il est dû essentiellement à l'appel de prédicats évaluables non traités par le processeur 48. Mais ces appels sont en petit nombre car la majeure partie du temps de résolution est consacrée à l'unification des termes, réalisée par microprogramme et 25 sans interruptions. Au surplus, certains prédicats de contrôle de la résolution sont directement implémentés par microprogrammation sur les registres de l'unité 56. On décrira maintenant une constitution possible des sous-ensembles qui apparaissent sur la Figure 1; L'unité loaiaue et arithmétique 56 peut être constituée de microprocesseurs 2901 en technologie C-MOS et traiter des données en mots de seize bits. Toutes les données à traiter transitent par l'unité 56 qui comporte seize registres internes banalisés. Un contexte particulier de ces seize registres est attribué à chaque procédure et l'unité est structurée de façon que chaque appel de procédure aménage le contexte correspondant, capable de gérer tous les paramètres et données locales dans ce contexte. On 5 diminue ainsi notablement les appels à des mémoires externes au processeur. Inversement, sur appel de demande de service, le contexte doit être restitué en mémoire d'change 26A pour réactualiser les données utilisées par les procédures externes. L'adresse physique, comportant vingt-quatre bits, nécessaire pour accéder à la mémoire d'échange 26a peut être obtenue par association de deux registres d'adresses ayant respectivement huit bits et seize bits. Le registre à huit bits mémorise l'adresse haute 15 du bloc utilisé pour accéder à un espace physique de mémoire d'échange. Le registre à seize bits mémorise le résultat de l'indexation spécifique à l'accès d'un élément dans l'espace, ce résultat étant fourni par décalages logi20 ques de l'index. Le circuit de décalage peut être réalisé sous forme d'une matrice programmable incorporée à l'unité 56 et commandée par un champ spécialisé de la micro-instruction de soixante-quatre bits contenue dans 25 la mémoire de micro-instruction 64 (champ 6 de la micro-instruction de commande, qui sera décrite plus loin). Les communications internes au processeur sont assurées par le bus privé 52, qui n'est pas accessible 30 par les éléments externes au processeur. Ce bus aura un nombre de lignes correspondant au nombre de bits des données échangées (seize dans le cas envisagé plus haut). La mémoire privée 58 (mémoire rapide de 8 35 koctets par exemple), contenant la pile d'unification et permettant la sauvegarde temporaire des registres de l'unité 56, est reliée uniquement au bus privé 52 et au bus de commande 54. La taille de cette mémoire privée 58 sera fixée par la taille nécessaire & l'unification par voie récursive. Toutes les données doivent en effet être présentes et valides dans cette mémoire jusqu'à fin d'exécution de l'opération d'unification. L'ensemble d'exécution de micro-proaramme peut avoir la constitution fonctionnelle montrée en figure 2. Le sélecteur de condition 68 se compose d'un registre d'entrée 70 qui reçoit d'une part un signal provenant de 10 du système d'interruption 66, d'autre part un code de condition provenant de l'unité 56 sous forme d'un mot de huit bits. Ce registre 70 est couplé à un multiplexeur 72 qui reçoit uniquement les trois bits de poids fort de la micro-instruction provenant, par le bus 54, de la 15 mémoire de micro-instruction 64. Le multiplexeur fournit, à une mémoire morte 73 et suivant la valeur des bits de tête de la micro-instruction, l'une ou l'autre de deux valeurs binaires, un ou zéro, provoquant l'une la poursuite en séquence, l'autre un branchement. La mémoire morte 73 contient le jeu d'instructions de commande du séquenceur 60, constitué de seize instructions dont chacune est constituée de deux mots de huit bits. L'adressage est effectué à l'aide de bits de commande (constituant le code d'ordre du séquenceur) A1, 25 A2, A3,et A4provenant du traitement de la microinstruction contenue dans la mémoire 64, mais, pour une des valeurs un et zéro de AO, il n'y aura pas nécessité d'un nouvel adressage mais simple exécution en séquence. L'instruction à exécuter au cours du microcycle 30 suivant est présentée sur l'entrée 74 du séquenceur 60 sous forme de huit bits. Le séquenceur lui-même peut être constitué en circuits 2911A d'AMD. Il est prévu pour gérer la mémoire de commande 62. La mémoire de commande 62 contient un micro35 programme, réparti en 2048 mots de soixante-quatre bits. Elle est suivie de la mémoire de micro-instruction 64, constituée par huit registres de huit bits chacun à bascules D et mémorisation sur front montant du signal provenant de l'horloge unique du processeur. Le processeur dans son ensemble fonctionne en mode pipeliné à un seul niveau. Les décisions de branchement à une adresse dans la mémoire 68 de microprogramme sont liées au code de condition issu de la dernière microinstruction exécutée. L'accès à des 10 données successives en mémoire d'échange 26a est également pipeliné: pendant chaque microcycle d'accès en mémoire, la machine calcule l'adresse de l'élément suivant et charge le registre d'adresses. Le système de gestion des interruptions peut 15 avoir la constitution montrée en figure 3. A réception d'un ordre de lecture en mémoire provenant des fils de commande du bus local 28, un comparateur 76 appartenant au circuit de gestion d'interruption 66 compare l'adresse présente sur les fils d'adresse du bus local 20 28 à une adresse de référence inscrite dans une mémoire morte 78. En cas de coïncidence des adresses, le comparateur 76 émet un signal d'interruption vers le séquenceur 60. L'interprétation de ce signal par le séquenceur, à la première exploration sous la commande 25 du sélecteur 68, provoque le transfert de la mémoire de commande 62 vers la mémoire de microinstruction de la première instruction du programme à exécuter. L'ordre d'interruption constitue un des huit codes de condition applicables au séquenceur. Les autres codes sont clas30 siquement des résultats d'opérations effectuées par l'UAL 56. Les micro-instructions de commande présentes dans la mémoire 64 ont un format qui est directement lié à l'architecture globale de la machine. Dans le cas 35 d'une machine SM 90, la micro-instruction se décompose en huit champs d'application, dont chacun contrôle un sous-ensemble fonctionnel. La distribution des champs de commande peut notamment être la suivante: - Champ 0 5 - Champ 1 (4 bits): (4 bits): - Champ 2 (16 bits) Champ 10 - Champ 3 (8 bits): 4 (8 bits): fonction du séquenceur 60 sélection d'un code de condition parmi huit : fourniture d'un opérande ou d'une adresse immédiate sélection des chemins de données sélection de l'un des seize registres de l'unité 56 et rechargement d'un autre registre, par ouverture et fermeture de registre commande de la fonction (logique ou arithmétique) de l'unité 56 commande du circuit de décalage de l'unité 56 signaux de commande du bus local 28 Champ 5 (12 bits) - Champ 6 (4 bits) Champ 7 (8 bits) Une des champs cas, toutes 25 instruction cycle. micro-instruction peut utiliser la totalité ou seulement certains, mais dans tous les les commandes-présentes dans une même microsont exécutées au cours d'un même micro- Le mécanisme d'arbitrage peut être implémenté sous la forme montrée en Figure 4 et être du type mentionné plus haut. Une matrice programmable 80 apparte30 nant au générateur de signaux d'horloge 82 du processeur muni d'une base de temps incorporée permet l'asservissement et fournit les différents signaux d'horloge nécessaires. Chaque appel en mémoire MEM REQ provenant du champ 7 est traduit par une matrice 80 en une requête 35 d'accès BUS REQ émise sur une sortie 84 vers les fils d'arbitrage du bus 28. Le signal d'autorisation d'accès BUS GRANT revient par les fils d'arbitrage sur une entrée 88. La matrice est prévue pour émettre alors, simultanément: - un signal 86 de confirmation d'accès vers les fils d'arbitrage, - le signal d'horloge CLK vers le séquenceur 60. L'accès mémoire est immédiatement consécutif à la réponse autorisant l'accès au bus local et peut être matérialisé par un circuit provenant des fils de 10 commande du bus local vers une entrée 90 de la matrice. Le signal de confirmation d'accès peut n'occuper que la fraction finale d'un cycle complet d'arbitrage, dont la durée est d'environ 1 ps. On voit que le contrôle d'accès au bus local 28 15 est obtenu par asservissement de l'horloge 82 du processeur au moyen de la matrice programmable ou PAL qui reçoit et émet les signaux du protocole d'arbitrage lors d'un accès mémoire. REVENDICATIONS 1. Processeur microprogrammé pour machine d'exécution de programme PROLOG comprenant un bus local 5 (28) accessible par un interpréteur et un module de traitement (12), caractérisé en ce qu'il comporte une unité arithmétique et logique (56) et un séquenceur de microprogrammes (60) gérant un mécanisme d'arbitrage d'accès au bus local, couplé à un circuit de gestion des 10 interruptions (66), réveillé par adressage à partir du module de traitement (12) et comportant un programme câblé de gestion des interruptions. 2. Processeur selon la revendication 1, caractérisé en ce qu'il comprend un bus privé (52) auquel 15 sont reliés l'unité arithmétique et logique (56), une mémoire privée (58) contenant la pile d'unification PROLOG et un interface (50) de jonction avec le bus local (28). 3. Processeur selon la revendication 1 ou 2, 20 caractérisé en ce que le mécanisme câblé de gestion des interruptions comporte un comparateur (67) destiné à comparer l'adresse fournie sur les fils d'adresse du bus local (28) à une adresse de référence inscrite dans une mémoire morte associée (78) et à transmettre au séquen25 ceur de microprogrammes (60), en cas de coïncidence, un signal, et en ce que ledit séquenceur est prévu pour, en réponse, provoquer le transfert de la première instruction du programme à exécuter, d'une mémoire de commande (62) vers une mémoire de micro-instruction (64) assurant 30 l'adressage en mémoire morte du séquenceur. 4. Processeur selon la revendication 1, 2 ou 3, caractérisé en ce qu'il comprend un mécanisme câblé d'arbitrage d'accès au bus local (28), utilisant trois fils du bus local et une matrice programmable à regis35 tres (80) appartenant à un générateur unique de signaux d'horloge du processeur, assurant l'asservissement des signaux d'horloge du processeur pour effectuer la synchronisation du processeur au module de traitement. 5. Processeur selon la revendication 3, caractérisé en ce qu'il est prévu pour être en attente de 5 demandes de service lorsqu'il est & l'état libre et être réveillé par le module de traitement en réponse à une demande formulée par l'interpréteur ou à l'acquittement d'une demande de service par le processeur. 6. Processeur selon l'une quelconque des reven10 dications précédentes, caractérisé en ce qu'il comporte un sélecteur de conditions (68) comprenant un registre d'entrée (70) de réception d'un signal provenant du système d'interruption (66) et un code de condition provenant de l'unité arithmétique et logique (56), 15 couplé à un multiplexeur (72) recevant certains seulement des bits de micro-instructions provenant des mémoires de microinstruction (64), ledit multiplexeur fournissant à une mémoire morte (73), suivant la valeur desdits bits, l'une ou l'autre de deux valeurs binaires 20 provoquant, l'une, la poursuite en séquence des microinstructions, l'autre, un branchement vers une instruction identifiée par les autres bits de la micro-instruction provenant de la mémoire de microinstruction (64). 7. Processeur selon la revendication 6, caractérisé en ce que ladite mémoire morte contient le jeu d'instructions de commande du séquenceur (60). 8. Processeur selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il est prévu 30 pour coopérer par l'intermédiaire du bus local (28) avec une mémoire rapide d'échange (26A) de gestion des données communes de résolution PROLOG. 9. Processeur selon la revendication 8, caractérisé en ce que ladite mémoire d'échange contient 35 plusieurs espaces consécutifs de réception d'objet PROLOG, affectés chacun d'un pointeur obtenu par conversion d'adresse logique par voie logicielle. 10. Processeur selon l'une quelconque des revendications précédentes, caractérisé en ce que l'unité 5 arithmétique et logique (56) comporte des registres internes banalisés, présentant plusieurs contextes chacun affecté à une procédure et capable de gérer tous les paramètres et données locales, et en ce que des moyens sont prévus pour, en réponse à chaque appel de 10 procédure, aménager le contexte correspondant.