Brevet FR2440030A1 — publié le 19800523

La présente invention concerne un système à microprocesseur constitué d'une unité de commande comprenant une mémoire de microprogramme et une unité de gestion des microprogrammes, une unité arithmétique câblée et une mémoire de programme qui sont interconnectéss par des lignes d'adresses, des lignes de données et des lignes de commande. Ce système à microprocesseur est un système microprogrammable. Les microprocesseurs classiques comprennent une unité centrale de traitement constituée d'une unité arithmétique et logique et d'une unité de commande dont toutes les fonctions sont câblées. Les instructions lues dans la mémoire de programme sont exécutées suivant une table de fonctions et une séquence d'opérations élémentaires qui sont établies par l'unité de commande et prédéterminées par le constructeur du micro système. L'utilisateur du microprocesseur n'a pas la possibilité d'intervenir dans la séquence des opérations déterminée par l'unité de commande. Au contraire, un microsystème microprogrammable possède une té de commande dont le cycle d'exécution des instructions n'est pas câblé, ce qui permet à l'utilisateur de déterminer la séquence des opérations internes du microprocesseur, grâce à ce qu'on appelle la technique de microprogrammation. Dans ce cas, l'unité de commande est séparée de l'unité arithmétique et logique à fonctions câblées et contient une mémoire à accès rapide, la mémoire de microprogramme et une unité de gestion des microprogrammes, appelée également "séquenceur de microprogramme". Le programme qui est écrit par l'utilisateur du microprocesseur et dont les instructions doivent être exécutées par ce dernier sera appelé ici "macroprogramme", alors que ses instructions seront désignées par le terme "macroinstructions". Pour exécuter une macroinstruction, le microprocesseur microprogrammable doit effectuer des opérations particulières qui sont spécifiées par des instructions spéciales du microprogramme, c 'est-à-dire par des microinstructions. Chaque microinstruction est divisée en une séquence de microinstructions et se traduit par l'exécution de ces microinstructions. ainsi, la microprogrammation permet à l'utilisateur de déterminer à volonté les macroinstructions nécessaires. L'utilisateur peut donc déterminer luimême le répertoire d'instructions du système à microprocesseur. Le nombre de bits disponibles pour le codage des instructions du macroprogramme est généralement limité par suite de la place réduite dans la mémoire. Il en est particulièrement ainsi en cas d'utilisation de langages de programmation évolués où des instructions individuelles peuvent comprendre une séquence de parties d'instructions. La présente invention a pour objet de réduire la taille de la mémoire de programme et d'accroître simultanément le nombre de macroinstructions pouvant être utilisées dans le microsystème. L'objet de la présente invention est atteint, dans un microprocesseur du type indiqué précédemment, par le fait que des bascules, qui sont commandées par des signaux de la mémoire de microprogramme et dont les états déterminent la signification fonctionnelle de chaque partie d'une macroinstruction en fonction de sa position à l'intérieur de la macroinstruction, sont insérées entre la mémoire de microprogramme et l'unité de gestion des microprogrammes. Le nombre d'instructions pouvant être acceptées par la mémoire de programme sous forme binaire et, par conséquent, le répertoire d'instructions d'un microsystème sont limités par le nombre de bits disponibles. Avec un nombre de bits possibles de n, on peut n coder au maximum 2n instructions (avec, par exemple, six bits, on obtient au maximum 64 parties d'instructions). Selon la présente invention, m bits sont ajoutés aux n bits des parties d'instructions, ce qui permet de porter le nombre maximum de macroinstructions à 2n+m Des suites de bits semblables des 2n parties d'instructions ont alors une signification fonctionnelle différente qui dépend de leur position dans une séquence. L'invention sera mieux comprise à la lecture de la description détaillée qui va suivre, faite à titre d'exemple non limitatif, en se reportant aux figures annexées qui représentent - La figure 1, un schéma fonctionnel d'un système à microprocesseur selon l'invention - La figure 2, un exemple de macroinstruction et sa mise en oeuvre suivant une séquence de parties de l'instruction dont l'ordre est déterminé par les états de deux bascules, et - La figure 3, une mémoire de -microprogramme du microprocesseur de la figure 1. Une unité de commande du microprocesseur microprogrammable de la figure 1 comprend une unité de gestion des microprogrammes MCU, appelée également "séquenceur", et une mémoire de microprogramme XPS. La mémoire TRIPS est une mémoire morte à accès rapide ou un module de mémoire morte programmable, et contient les microprogrammes. L'unité de gestion des microprogrammes MCU détermine l'adresse de la microinstruction suivante à exécuter. Cette adresse est transférée à la mémoire de microprogramme MPS par la ligne d'adresses Asti. Toutes les lignes d'adresses et les lignes d'instructions du microsystème sont des lignes ou des canaux à plusieurs fils, comme cela est indiqué dans la figure par des tirets obliques. Les liaisons des séquences respectives entre la mémoire MPS et l'unité de commande NCU sont effectuées par une ligne d'adresses AL2.La partie de la micro- instruction à exécuter qui commande la micro-opération ou fonction élémentaire à effectuer est transmise à une unité arithmétique et logique ALU par une ligne de microinstructions MBL. En dehors de cette unité ALU, le microsystème peut comprendre des circuits câblés supplémentaires de calcul (matériel) qui ne sont pas représentés dans la figure, mais qui sont également commandés par l'intermédiaire de la ligne de microinstructions NBL. L'unité arithmétique et logique ALU est connectée, par l'intermédiaire d'une ligne de données de sortie OL et d'une ligne de données d'entrée IL, à une unité d'entrée/sortie (non représentée) qui relie le microsystème à ses unités périphériques. Une mémoire de programme PS contient le macroprogramme à exécuter par le microsystème ou micro-ordinateur. Les instructions de ce programme, qui sont constituées de séquences de parties d'instructions si un langage évolué est utilisé, sont transmises, par l'intermédiaire d'une ligne d'instructions BL, à l'unité de gestion des microprogrammes MCU. La ligne d'instructions BL comprend un certain nombre de fils n correspondant au format des parties d'instructions du macroprogramme.Des sorties supplémentaires ZA de la mémoire de microprogramme HPS sont connectées à des entrées supplémentaires ZE de l'unité de commande NCU par l'intermédiaire d'une ligne de commande SL. Cette ligne SL comprend m fils, contenant chacun une bascule FF1, ..., FFm.Ces lignes de commande transmettent des bits supplémentaires à partir de la mémoire MPS, qui commandent les bascules individuelles Fw1 à FFm et, par conséquent, déterminent la signification fonctionnelle des instructions individuelles à l'intérieur de la séquence d'instructions du macroprogramme. Ainsi, m bits sont ajoutés aux n bits de la macroinstruction, ce qui a pour effet d'augmenter le nombre maximum de macroinstructions d'un facteur 2m, c'est-à-dire que le répertoire de macroinstructions est étendu. Dans les exemples des figures 2 et 3, le nombre m de bits supplémentaires est 2. Une ligne d'adresses AL3 va de l'unité arithmétique et logique ALU à la mémoire de microprogramme PS, alors qu'une ligne de données DL connectant l'unité ALU à la mémoire Ps permet un échange de sigr#ux de données et de commande entre l'unité ALU et la mémoire PS. La figure 2 représente un exemple de l'exécution de 1'instruction suivante selon la présente invention : addition d'une variable lA adressée dans le mode d'adressage relatif à une variable DX adressée directement, et transfert du résultat à une position D adressée directement de la mémoire de données. La colonne à gauche de la figure 2 indique l'instruction écrite dans un langage évolué. Dans la colonne du milieu, cette instruction a été divisée en une séquence de parties qui sont écrites dans la mémoire de programme PS sous forme binaire. Les parties de l'instruction commandent les opérations à exécuter par l'unité arithmétique et logique ALU ou par un autre équipement. La colonne à droite de la figure 2 montre les bits supplémentaires indiquant l'état des bascules.Dans cet exemple, deux bits supplémentaires sont utilisés, c'est-à-dire que la ligne de commande SL comporte deux fils contenant respectivement une première bascule FT1 et une seconde bascule FF2. A la fin de chaque séquence des parties d'une instruction, les bascules emmagasinant les bits supplémentaires du microprogramme qui résultent de l'extension du répertoire de macroinstructions sont, par exemple, remises à "00,1. Cela permet d'identifier sans ambiguité la zone des adresses de départ de la séquence suivante de macroinstruction.Le microprogramme correspondant à la première partie de la macroinstruction provoque le chargement de la variable, adressée dans le mode d'adressage relatif, dans un registre interne R du microprocesseur, et au cours de ce microprogramme, les bascules passent b "01,'. L'adresse de départ pour la seconde partie de la (macro) instruction est maintenant contenue dans la section de mémoire qui est déterminée par la combinaison de bits "01". Dans le microprogramme suivant, qui est déclenché par la seconde partie de l'instruction, la seconde variable est adressée, et les bascules passent à "10". teia détermine la zone de l'adresse de départ de la troisième partie de l'instruction, qui provoque l'addition des deux variables, le transfert du résultat à R, et le passage des bascules à "11". Ces bits supplémentaires "11 n spécifient la zone pour le départ du quatrième microprogramme de cette séquence de parties d'instruction, microprogramme qui provoque le transfert du résultat de l'addition du registre interne R b la mémoire de données, et la remise à "00" des bascules, étant donné que l'exécution de la macroinstruction est maintenant terminée. La mémoire de micrcprogramme #IPS représentée dans la figure 3 est organisée en quatre zones de 64 mots chacune. Ces quatre zones sont identifiées par les bits supplémentaires de In mémoire de microprogramme, et les adresses de chaque zone sont spécifiées par le code d'adresse de la macroinstruction. Il est bien évident que la description qui précède n'a été donnée qu'à titre d'exemple non limitatif et que d'autres variantes peuvent êtres envisagées sans sortir pour autant du cadre de l'invention. REVENDICATIONS 1 - Système à microprocesseur comprenant une unité de commande incorporant une mémoire de microprogramme et une unité de gestion des microprogrammes, une unité arithmétique et logique k fonctions câblées et une mémoire de programme qui sont interconnectées par des lignes d'adresses, des lignes de données et des lignes de commande, caractérisé en ce que des bascules (FF1 à FFm) qui peuvent entre commandées par des signaux de la mémoire de microprogramme (MPS) et dont les états déterminent la signification fonctionnelle des parties individuelles d'une macroinstruction en fonction de leur position à l'intérieur de la macroinstruction, sont insérées entre la mémoire de microprogramme (MPS) et l'unité de gestion des microprogrammes (HCU). 2 - Système à microprocesseur selon la revendication 1, caractérisé en ce que des sorties supplémentaires (Z & de la mémoire de microprogramme (MPS) sont connectées à des entrées supplémentaires (ZE) de l'unité de gestion des microprogrammes (NCU) par des lignes de commande (SL) contenant chacune l'une desdites bascules (FFî à FFm). 3 - Procédé d'exécution, dans un système à microprocesseur selon les revendications 1 ou 2, de macroinstructions constituées de plusieurs parties à nombres prédéterminés de bits, caractérisé en ce que le nombre de bits des parties des instructions sont augmentés de bits supplémentaires au moyen de signaux de sortie provenant de le mémoire de microprogramme, augmentant ainsi le nombre de parties d'instructions possibles, et en ce que ces bits supplémentaires sont un facteur contribuant à la détermination de la signification fonctionnelle des parties des instructions lues dans la mémoire de programme.