FR 2607607 A1 19880603 FR 8616758 A 19861201 Machine informatique destinée à L'exécution de traitements symboliques pour les applications de l'intelligence artificielle La présente invention concerne une machine informatique destinée à l'exécution de traitements symboliques pour les applications de l'intelligence artificielle. Les progrès technologiques et la complexification des applications suscitent le besoin de machines informatiques capables non seulement de calculer rapidement, mais aussi de manipuler des symboles. L'inefficacité des machines conventionnelles pour L'exécution des traitements symboliques n'est plus à démontrer. C'est pourquoi différentes machines adaptées aux traitements symboliques ont déjà été proposées, notamment les machines de la série "3600" de la société des Etats-Unis d'Amérique "Symbolics", la machine "Explorer" de la société des Etats-Unis d'Amérique "Texas Instruments", et la machine MAIA développée en France par le Centre National d'Etudes des Télécommunications et la Compagnie Générale d'Electricité et présentée entre autres dans un article de J. P. Sansonnet (Matériels et logiciels pour la 5e génération AFCET 1985). Les principales originalités de telles machines adaptées aux traitements symboliques résident dans un processeur microprogrammable et une mémoire étiquetée permettant de discerner les objets stockés. Le fait d'attribuer à chaque mot de la mémoire une information sémantique permet de différencier, au moment de l'exécution, les types d'actions à effectuer en fonction des objets manipulés. Cette technique est à la base des langages de l'Intelligence Artificielle comme, par exemple, "Lisp" ou "Prolog". Une autre caractéristique, qui illustre le non-déterminisme de ces langages, est la nécessité d'un mécanisme d'allocation et de récupération mémoire. Ce dernier est généralement câblé ou microprogrammé pour les machines évoquées. Les machines connues mentionnées ci-dessus sont dédiées au développement et à la mise au point de programmes. Leur objectif est de fournir au programmeur un poste de développement complet, puissant et convivial. En conséquence, ces machines sont dotées de ressources informatiques (notamment mémoire et disque) importantes et ne peuvent fonctionner correctement que dans un environnement informatique ou bureautique (laboratoire, bureau) dépourvu de contraintes (vibrations, poussières,...) . Par ailleurs, ces machines sont d'un coût et d'un encombrement trop élevés pour pouvoir s'insérer dans une large part des applications potentielles. De plus, leur processeur complexe est difficilement intégrable dans un circuit VLSI (circuit à très grande densité d'intégration). Aussi, la présente invention a-t-elle pour but de fournir une machine symbolique compacte adaptée à la réalité des applications de l'intelligence artificielle, qu'elles soient industrielles, aéronautiques ou militaires. Ce but est atteint au moyen d'une machine informatique comportant au moins une processeur symbolique intégré à jeu d'instructions réduit ayant une mémoire locale et une unité arithmétique et logique reliées à un bus interne, machine dans laquelle, conformément à l'invention, la mémoire locale est organisée en bancs physiques de mémoire distincts, respectivement un premier banc de mémoire réservé au code exécutable composé d'instructions basées sur un format unique, un deuxième banc de mémoire réservé aux données et organisé en cellules, un troisième banc de mémoire organisé en pile et un quatrième banc de mémoire comprenant des fenêtres de registres accessibles par les différentes procédures d'un programme, chaque banc de mémoire étant associé à un circuit d'exploitation particulier. Par bancs physiques de mémoire distincts, on entend ici des blocs de mémoire matériellement distincts les uns des autres avec adresses propres et bus de données propres. L'utilisation d'instructions basées sur un format unique, donc facilement décodables, l'organisation spécifique de la mémoire locale du processeur et le choix, pour réaliser cette mémoire locale, de circuits mémoire rapides, permettent de limiter les temps d'accès mémoire et les temps d'exécution des instructions à des valeurs compatibles avec les contraintes de fonctionnement en temps réel des machines d'application. Une particularité du processeur symbolique dans la machine conforme à l'invention tient à ce qu'il est interruptible, OS le traitement des interruptions et exceptions étant effectué en fonction d'indicateurs contenus dans un mot d'état stocké dans un registre du processeur. Plusieurs processeurs symboliques peuvent être associés autour d'un système de communication pour réaliser une machine à hautes performances. L'invention sera mieux comprise à la lecture de la description faite ci-après, à titre indicatif, mais non limitatif, en référence aux dessins annexes sur lesquels: - la figure 1 est un schéma synoptique d'une machine informatique multiprocesseur, - la figure 2 est un schéma synoptique fonctionnel d'un processeur symbolique pour une machine informatique conforme à l'invention, - la figure 3 illustre le format d'une instruction contenue dans le segment de mémoire code du processeur de la figure 2, - la figure 4 illustre le format d'une cellule du segment de mémoire de données du processeur de la figure 2, et - la figure 5 illustre schématiquement l'organisation du segment mémoire de fenêtres de registres du processeur de la figure 4. Une machine informatique conforme à l'invention peut avoir une architecture telle que celle représentée par la figure 1. Cette architecture comprend plusieurs processeurs symboliques 10, d'autres processeurs spécialisés 12, 14 et une mémoire commune 16 organisés autour d'un système de communication constitué par un bus de communication rapide 18, par exemple du type VME 32 bits. Les processeurs symobliques 10 sont semblables et connectés en parallèLe sur le bus 18. Les autres processeurs spécialisés comprennent par exemple un processeur de calcul flottant 12 et un processeur d'entrées-sorties 14, ce dernier étant relié à un clavier et à une mémoire de masse. La mémoire commune, ou partagée, 16 est accessible par les différents processeurs. Pour réduire au maximum les accès au bus de communication o5 18, chaque processeur doit posséder la majorité des ressources qui lui sont nécessaires dans son domaine. En particulier, les programmes doivent s'exécuter en mémoire locale afin de réserver le bus de communication et la mémoire commune aux communications et aux synchronisations dans l'architecture distribuée. La figure 2 illustre de façon plus détaillée l'organisation d'un processeur symbolique 10, conformément à la présente invention. Les différents éléments fonctionnels du processeur 10 sont répartis autour d'un bus interne 106, et comprennent une mémoire locale avec ses circuits associés de contrôle et d'accès, une unité arithmétique et logique 102 avec décaleur-masqueur et une interface 104 avec le bus de communication 18. L'unité arithmétique et logique 102 avec décaleur-masqueur est un circuit classique bien connu en lui-même qu'il n'est pas nécessaire de décrire en détail. Il en est de même pour l'interface 104 assurant la liaison avec le bus de communication et la gestion des exceptions. Par contre, selon une caractéristique de l'invention, la mémoire locale est partagée en plusieurs bancs physiques de mémoire: un banc de mémoire "code" 110, un banc de mémoire de données 120, un banc de mémoire pile 130 et un banc mémoire de fenêtres de registres 140. A chaque banc de mémoire est associé un circuit de contrôle et d'accès particulier, à savoir un circuit séquenceur et de contrôle associé au banc de mémoire code 110, un circuit 125 d'accès et de gestion de liste de cellules libres associé au banc de mémoire de données 120, un circuit 135 d'accès au banc de mémoire pile 130 et un circuit 145 de gestion de fenêtres associé au banc mémoire de fenêtres de registres 140. Les différents bancs de mémoire sont constitués de circuits mémoire rapides, et les mots mémoire sont tous de même longueur, par exemple 32 bits. Le banc de mémoire code 110 est réservé à l'implantation du code exécutable. Celui-ci se présente sous forme d'une suite séquentielle d'instructions parmi un jeu réduit d'instructions ayant toutes la même taille, conformément aux principes d'une architecture "RISC" (Reduced Instruction Set Computer", ou ordinateur à jeu d'instructions réduit). Les instructions, dont le nombre peut être limité à 32, ont toutes le même format, ce qui permet de simplifier l'implantation du processeur et son utilisation. Un modèle de format unique 111 pour une instruction contenue dans le banc de mémoire code 110 est montré sur la figure 3. Il comprend un premier champ (5 bits) pour le code opération, un deuxième champ (3 bits) pour le mode d'exécution de l'instruction, un troisième champ (4 bits) pour un registre opérande (généralement la destination), un quatrième champ (4 bits) pour un registre opérande (généralement une première source) et un cinquième champ (16 bits) soit pour un registre opérande (deuxième source) identifié par les quatre derniers bits de ce cinquième champ, soit pour un opérande signé immédiat, la sélection étant fonction d'un bit du deuxième champ. Un autre bit du deuxième champ est utilisé pour, le cas échéant, masquer les exceptions (interruptions) au niveau de l'instruction. Le banc de mémoire code 110 est relié de façon bidirectionnelle au bus interne 106 pour son chargement et la lecture des instructions. L'accès au banc de mémoire code est réalisé au moyen du circuit séquenceur et de contrôle 115 commandé par des signaux d'un circuit d'horloge 116 et des signaux provenant du bus de communication 18 par l'intermédiaire de l'interface 104. De préférence, une instruction est débutée et une instruction est terminée à chaque cycle horloge, l'exécution d'une instruction se déroulant sur plsuieurs cycles, par exemple trois (architecture pipeline). Le banc de mémoire de données 120 est organisé en cellules de 64 bits (par exemple 2 mots consécutifs de 32 bits) permettant le codage des objets et des structures en listes et en arbres. La figure 4 illustre un modèLe de format d'une cellule 121 du banc de mémoire de données. Le premier mot constitutif de la cellule est composé d'un champ "tag", ou étiquette, qui est un descripteur de l'objet codé en mémoire (par exemple sur 8 bits) et d'un champ "next", indiquant l'adresse de la cellule suivante dans la liste. Le deuxième mot constitue le champ "first", indiquant l'adresse du premier élément de la liste, si l'objet codé est une structure, ou codant l'objet s'il s'agit d'un élément atomique. Ici, par un élément atomique, on désigne un petit objet codable sur un mot, par exemple un nombre entier, tandis qu'une structure est un objet complexe composé d'éléments reliés entre eux par des liens pour former des listes ou des arbres, lesdits liens étant sous forme de pointeurs au sens "first" ou "next". L'étiquetage de l'objet dans le champ "tag" permet, au moment de l'exécution d'un programme, de déduire immédiatement le traitement approprié pour cet objet. Le banc de mémoire de données 120 est relié de façon bidirectionnelle au bus interne 102, trois liaisons spécifiques étant prévues respectivement pour les champs "tag", "next" et "first". Chaque bit du champ "tag" conserve toujours la même fonction pour tous les objets codés. Ainsi, le premier bit, torsqu'il est mis à 1, provoque une exception lors de la manipulation de la cellule, le deuxième et le troisième bit sont réservés pour la récupération mémoire ("garbage collector"), le quatrième bit indique si l'objet codé est un atome ou une structure et les quatre bits restants indiquent le type de l'objet. Par ailleurs, Le codage des objets n'est pas compressé afin de simplifier au maximum l'interprétation des données. L'accès au banc de mémoire de données 120 et la gestion de liste de cellules libres sont effectués au moyen du circuit 125 sous la commande de signaux reçus du bus interne 106 et du circuit séquenceur et contrôle 115. Le banc de mémoire de pile 130 est organisé sous forme d'une pile "LIFO" (Last-In First-Out, Dernier-Entré Premier-Sorti) permettant d'empiler ou de dépiler des mots. Le banc de mémoire pile 130 est relié de façon bidirectionnelle au bus interne 106 et est associé au circuit de contrôle d'accès 135 commandé par des signaux reçus du circuit séquenceur et contrôle 15 et du bus 106. Le dernier banc de mémoire 140 correspond aux registres généraux du processeur. Son organisation est illustrée schématiquement par la figure 5. Il comprend des registres globaux inamovibles 142. Parmi ceux-ci, on trouve le pointeur de pile SD qui référence le sommet de la pile courante dans le banc de mémoire 130, ce registre étant automatiquement décrémenté ou incrémenté par une instruction "push" (empiler) ou par une instruction "pop" (dépiler). Un autre registre global stocke le mot d'état et de controle SW dont l'organisation est décrite plus loin en détail. Le banc de mémoire 140 comprend en outre des registres locaux susceptibles d'être sauvegardés dynamiquement par les appels de fonctions (instructions "appel" et "retour"). Ils correspondent aux variables locales des procédures appelées et permettent, grâce au mécanisme de recouvrement partiel de fenêtres de registres 141, des changements de contexte efficaces. En effet, les programmes mis en oeuvre dans les applications de l'intelligence artificielle comprennent généralement un grand nombre d'instructions "appel" et "retour" normalement coûteuses en temps. La procédure de recouvrement de fenêtre permet de réaliser les fonction appel" et "retour" en une seule instruction en sauvegardant la procédure appelée, ceci en décalant le pointeur de fenêtre de registres et, dans le même temps, en modifiant le compteur de programme qui référence la prochaine instruction à exécuter dans la mémoire programme. Dans l'exemple illustré, une fenêtre recouvre trois ensembles de quatre registres chacun: un ensemble de quatre registres contenant les paramètres passés par la fonction précédente, un ensemble de quatre registres de la fonction courante et un ensemble de quatre registres contenant les paramètres pour l'appel de la fonction suivante. La gestion des fenêtres de registres 141 est réalisée par recouvrement partiel lors des appels et retours de fonctions. Le banc de mémoire de fenêtres de registre est relié en écriture au bus interne 106 et en lecture à l'unité arithmétique et logique 102. Toutes les opérations sont exécutées dans les registres. La gestion des fenêtres de registres est assurée par le circuit 145 associé au banc de mémoire 140 à partir de signaux reçus du circuit séquenceur et contrôle 115 et du bus interne 106. Le mot d'état SW, donne, à la cadence d'exécution des instructions les informations nécessaires au traitement des conditions et des exceptions. Un premier champ du mot d'état contient les codes conditions de l'unité arithmétique et logique et un deuxième champ contient les indicateurs d'exceptions. La cause d'exception est codée dans le mot d'état au même endroit que le champ "tag" dans une cellule du banc de mémoire de données de sorte que le traitement des exceptions est réalisé de façon semblable au traitement de cas sur les objets codés dans le banc de mémoire de données. On notera que l'interruptibilité du processeur caractérise la machine conforme à l'invention par rapport aux machines orientées exclusivement vers le développement. Comme déjà indiqué, un des bits de chaque instruction est utilisé pour, le cas échéant, masquer les exceptions afin de rendre ininterruptibles certaines parties de programme (portions critiques). Ainsi, c'est à chaque instruction que les exceptions sont ou non prises en compte, ce qui évite d'avoir à sauvegarder le mot d'état à chaque fois. REVENDICATIONS 1. Machine informatique destinée à l'exécution de traitements symboliques pour les applications de l'inteLLigence artificielle, machine comportant au moins un processeur symbolique intégré à jeu d'instructions réduit ayant une mémoire locale et une unité arithmétique et logique reliées à un bus interne, machine caractérisée en ce que la mémoire locale est organisée en bancs physiques de mémoire distincts, respectivement un premier banc de mémoire (110) réservé au code exécutable composé d'instructions basées sur un format unique, un deuxième banc de mémoire (120) réservé aux données et organisé en cellules, un troisième banc de mémoire (130) organisé en pile et un quatrième banc de mémoire (140) comprenant des fenêtres de registres accessibles par les différentes procédures d'un programme, chaque banc de mémoire (110, 120, 130,140) étant associé à un circuit d'exploitation particulier (115, 125, 135, 145). 2. Machine selon la revendication 1, caractérisée en ce que le processeur est interruptible et chaque mot d'instructions dans le banc de mémoire code (110) contient une information de masquage éventuel des exceptions. 3. Machine selon l'une quelconque des revendications 1 et 2, caractérisée en ce que le deuxième banc de mémoire (120) est organisé en cellules étiquetées (12) formées chacune de deux mots de même longueur. 4.- Machine selon l'une quelconque des revendications 1 et 2, caractérisée en ce que le quatrième banc de mémoire (140) comprend des registres globaux inamovibles (142) et des registres locaux (141) organisés en fenêtres, une fenêtre recouvrant plusieurs ensembles de registres de maÀière à réaliser des fonctions d'appels et de retours par recouvrement partiels de fenêtres par décalage d'un pointeur de fenêtre. 5. Machine selon l'une quelconque des revendications 1 à 3, caractérisée en ce qu'elle comprend plusieurs processeurs symboliques (10) organisés autour d'un système de communication (18).