FR 2298140 A1 19760813 FR 7501325 A 19750116 La présente invention concerne une unité de micro-programme estinxe un processeur de données. Les unités de micro-programme3 destinées à des processeurs de données fonctionnent avec une mémoire de micro-programme pour accéder à des séries de micro-instructions de base afin d'exécuter différentes instructions dans le processeur. Les micro-instructions extraites commandent l'état des différentes unités du processeur de manière à exécuter chaque instruction voulue. La mémoire de micro-programme consiste souvent en une mémoire modifiable, ce qui permet à l'ensemble du micro-programme de dépasser la capacité immédiate de la mémoire de microprogramme dans la mesure on une possibilité appropriée de recouvrement est prévue pour introduire le contenu du microprogramme dans la mémoire à accès direct lorsque cela est nécessaire.Le brevet britannique n0 34 213/73 décrit un procddé de recouvrement qui convient. Le fait que la mémoire de micro-programme soit modifiable signifie également que le contenu du miceo-programme lui-mtme peut etre modifié facilement. Cela est particulièrement utile dans les premières phases de réalis.ation d'un processeur et également par la suite car la plupart des calculateurs sont développés continuellement pendant toute leur existence. ~lais il est plus commode que le micro-programme soit disposé sdquen- tiellement par rapport aux adresses de mémoire de manière que la procédure normale d'accès (c'est-à-dire en dehors des sauts entre des séries de micro-instructions sp4cifiques) consiste à augmenter d'une unité 1'adressed'accès entre les cycles. Ainsi, toute modification du contenu du micro-programme qui conduit à une adjonction ou une suppression de micro-instructions ou à une remise en ordre de la totalitd des séries de micro-instructions oblige à rentinéroter les adresses de départ des séries de micro-instructions. En général1 cela conduit à des modifications importantes de l'unité de micro-progrxmme. Une unité de micro-programme selon l'invention, destinée à un processeur de données, comporte une mémoire de microprogramme qui contient plusieurs séries de micro-instructions, chaque série comprenant une ou plusieurs micro-instructions à des adresses successives dans la mémoire de micro-programme une mémoire d'adresses modifiable destinée A conserver une table d'adresses de départ des séries de micro-instructions dans la mémoire de micro-programme ; et un dispositif destiné à extraire une adresse d'index d'une instruction d'entrée et à l'appliquer à la moire d'index de manière à obtenir l'adresse de départ d'une série de micro-instructions pour exécuter l'instruction entrée. il apparatt donc que la mémoire d'index a pour fonction de traduire les adresses d'index extraites des instructions d'entrée en des adresses de départ dans la mémoire de microprogramme. Ainsi, toute modification des adresses de départ des séries de micro-instructions n'impose qu'une modification de la table dans la mémoire d'index et ne concerne pas le reste de l'unité de micro-programme. Un avantage de cette unité de micro-programme réside dans le fait que la longueur des mots du contenu de la mémoire d'index peut btre supérieure à celle nécessaire pour adresser la mémoire de micro-programme, le complément tant utilisé comme un prolongement de la micro-instruction à l'adresse spécifiée. Cette instruction peut concerner le positionnement de marqueurs, d'états ou d'indicateurs qui doivent titre utilisés au cours de l'exécution de l'ordre du micro-processeur par la série de micro-instructions considérée . En variante, le prolongement peut ventre utilisé comme une adresse de mémoire bloc-notes. Selon un mode particulier de réalisation d'une unité selon l'invention, les adresses d'index peuvent également titre extraites d'un registre descripteur contenant des informations qui concernent un opérande indirect. Une autre source d'adresses d'index peut 6tre une unité d'interruption. De préférence, l'extraction d'une adresse d'index pour qu'elle soit appliquée à la mémoire d'index a lieu simultanément avec l'application à cette mémoire d'une adresse extraite précddemment. Cette disposition assure un certain degré de recouvrement dans l'unité de micro-programme, ce qui compense au moins partiellement le retard nécessaire pour l'accès à la mémoire d'index. Ces opérations d'extraction ##d'adresses de départ peuvent à leur tour se dérouler simultanément avec l'exécution des micro-instructions provenant de la mémoire de micro-programme, ce qui apporte un autre degré de recouvrement. D'autres caractéristiques et avantages de l'invention seront mieux compris h la lecture de la description qui va suivre d'un exemple de réalisation et en se référant aux de#- sins annexés sur lesquels la figure 1 est un diagramme synoptique représentant schématiquement l'unité de micro-programmc et, la figure 2 est un schéma détaillé d'une unité de production d'adresses de départ faisant partie de l'unit de microprogramme. Le mode particulier de réalisation de l'invention qui sera maintenant décrit consiste en une unité de micro-programme destinée à commander le fonctionnement d'un calculateur comportant une unité arithmétique et logique et une mémoire centrale. J'unité de micro-programme est destinée à recevoIr un courant d'instructions extraites de la mémoire centrale par une unité appropriée d'extraction d'instructions, et à traduire chacune de ces instructions en un certain nombre de séries de micro-instructions constituant chacune un micro-programme de manière à commander les transferts nécessaires de données et les opérations effectuées par le calculateur pour de l'instruction. Selon la figure 1, les instructions d'entrée destinées à l'unité de micro-programme apparaissent dans un tampon d'instructions 100. Chaque instruction comporte deux parties La première partie est une partie de fonction F qui sp6- cifie une fonction logique ou arithmétique particulière qui doit autre remplie. Cette fonction peut consister en une fonction de lecture impliquant la lecture d'un opérande, puis l'exécution de ltopération spécifiée sur cet opérande, ou peut consister en une fonction d'écriture qui implique l'exécution de l'opération spécifiée, puis l'écriture du résultat dans une position d'opérande de manière que la valeur de ce dernier soit mise à jour. La seconde partie consiste en une partie d'opdrande K qui contient dos informations concernant l'opérande sur lequel l'opération doit titre exécutée, ou qui doit autre mis à jour par le résultat de cette opération. L'opérande peut titre spécifié directement ou indirectement. Dans le cas d'un opérande direct, l'adresse de l'opérande dans la mémoire centrale est calculée directement à partir de la partie K de l'instruction. Mais dans le cas d'un opérande indirect, la partie K donne l'adresse d'un descripteur qui indlqe la position de l'opdrande Ainsi, pour evecuter une instruction faisant intervenir un opérande indirect, un accts 8 la mémoire centrale doit d'abord titre donné pour obtenir le descripteur, puis un autre accès doit etre donné pour obtenir 1'opérande lui-m#me. Les instructions peuvent donc être classées en quatre types : lecture directe, écriture directe, lecture indirecte et écriture indirecte. Lorsqu'un descripteur est obtenu, il est placé dans un registre 101 de descripteur spécial. Chaque descripteur conl- prend devx parties. Une première partie DT de type de données qui contient des informations nécessaires pour calculer l'adresse de la mémoire centrale de ltopérande voulu Une seconde partie DZ de format de données qui contient des informations concernant la longueur de l'opérande (par exemple 32 bits, 64 bits ou 128 bits). L'unité de micro-programme comporte une mémoire de microprogramme 10 dans laquelle sont conservées les séries de micro-instructions nécessaires et qui est adressée au moyen d'un registre d'adresse 11. Chaque micro-instruction lue dans la mémoire 10 est appliquée à une unité d'exécution 102 qui produit des signaux de commande correspondants pour qu'ils soient appliqués aux différentes parties du calculateur. Le contenu du registre d'adresse 11 est normalement augmenté d'une unité par l'unité d'exécution 102 après l'exécution de chaque micro-instructions, bien que certaines de ces microinstructions puissent spécifier des sauts (conditionnels ou inconditionnels) pouvant entratner une sortie de cette séquence normale. Quand une série de micro-instructions a été exécutée, une nouvelle série est introduite par l'unité d'execution en ap- pliquant un signal de "branchement" vers une unité 103 de production d'adresse de départ qui réagit en chargeant une nouvelle adresse de départ dans le registre d'adresse 11 de manière à effectuer un branchement vers le début do la nouvelle série de micro-instructions. Comme cela sera décrit par la suite, cette adresse de départ est extraite des parties F et K de l'instruction, ou de la partie F seule, ou de la partie DT ou DZ du descripteur. Les branchements sont donc appelés des branchements nu F, DT ou DZ selon la source de 1'adresse de départ. Chaque type différent d'instruction impose une sequence différente de séries de micro-instructions : les instructions de lecture et d'écriture directe impliquent chacune deux séries de micro-instructions introduites respectivement par des branchements du type FK et F, les instructions de lecture indirecte impliquent cinq séries de micro-instructions introduites respectivement par des branchements du type Fi, F, DT, DZ et F et les instructions dtderiture indirecte impliquent six séries de micro-instructions introduites respectivement par des branchements du type FK, F, DT, DZ, Fet DZ. Les détails des séries de micro-instructions no sont pas concernés par la présente invention et ne sont pas essentiels pour sa compréhension ; elles ne seront donc pas expliqués plus avant dans la présente description. Il apparat que les branchements sont toujours exécutés dans une séquence fixe prédéterminée : EY, , DT, UZ, F et DZ, bien que ltensemble de cette séquence ne soit nécessaire que pour les instructions d'écriture indirecte. Comme cela apparattra par la suite, cette séquence fixe permet d'extraire par avance l'adresse de départ de chaque branchement, simultanément avec l'exécution de la série précédente de micro-instructions, de sorte que la nouvelle adresse de départ est prote à etre appliquée au registre d'adresse 11 lorsqu'elle est sollicitée par un signal de "branchement". Il en résulte urs retard minimal entre la fin d'une série de micro-instructions et le début de la suivante. L'extraction des adresses de départ par l'unité 103 est commandée par une unité séquentiolle de repositionnement 104 qui délivre une série de signaux de commande n, n + 1... n + 6 qui sont appliqués à l'unité de production d'adresses 103. La manière selon laquelle ces signaux agissent sur 11 unité 103 sera expliquée après la description de cette unité elle-m#me. La figure 2 représente plus en détail l'unité 103 de production d'adresses de départ de la figure 1. Cette unité 103 comporte une mémoire d'index modifiable 40 dont la capacité est par exemple de 256 mots de 17 bits. Cette mémoire contient une table d'adresses de départ de microprogramme (Jussquti 256 de ces adresses). La mémoire est adressée par une adresse d'index à lluit bits provenant d'une po-te OU 46 et elle traduit cette adresse d'index en une adresse de départ correspondante délivrée sur le circuit de sortie 59. 1'adresse de départ est mémorisée dans l'un des registres 60 et 61 à 17 bits suivant celle des deux portes ET 62 et 63 qui est ouverte.Selon le présent mode de réalisation, les adresses de micro-programme n'ont en fait qutune longueur de dix bits, de sorte que les dix bitsde moindre poids de chaque registre 60 et G1 suffisent pour l'adresse de départ. Les sept autres bits remplissent des fonctions variées : ils peuvent astre utilisés comme des prolongements d'une ou plusieurs zones d'une microinstruction, ou pour positionner des marqueurs ou des indicateurs ou pour fournir une adresse de mémoire bloc-notes locale. L'adresse d'index destinée à adresser la mémoire 40 est normalement (c'est-à-dire en dehors des conditions d'interruption) extraite d'une de quatre sources, selon le type de branchement. Premièrement, dans le cas d'un branchement du type Fli, l'adresse de départ est extraite d'un registre 13 d'instruction suivante qui contient les deux parties F et K da l'instruction suivante qui doit autre exécutée et qui est chargée depuis le tampon d'instructions 100 de la figure 1 par une porte ET 77. Le contenu de la partie F du registre 13 est appliqué à un décodeur 34 par l'intermédiaire dtwle porte ET 23 et d'une porte OU 33. Le contenu de la partie K est appliqué d'une manière similaire à un autre décodeur 38 par d'une porte ET 24. Les sorties 41 et 42 des décodeurs et 38 sont combinées dans un circuit logique 35 de manière à produire l'adresse d'index voulue qui est appliquée à la mémoire d'index 40 par l'intermédiaire des portes ET 43 et 58 et de la porte OU 46. La sortie de la mémoire d'index 40 sur le circuit 59 contient dans ce cas l'adresse de départ de la preixre série de micro-instructions pour l'instruction suivante, et elle est mémorisée dans le registre de sortie 60 qui est rdservé spé- cialement à cet effet, de manière qu'elle soit prote pour un usage immédiat dès que l'exécution de l'instruction en cours est terminée. Deuxièmement, pour un branchement du type F, l'adresse de départ est extraite d'un registre 14 d'instruction en cours qui ne contient que la partie F de l'instruction en cours d' exécution, et qui est chargée depuis le registre d'instruction suivante par la porte ET 17. Le contenu de ce registre 14 est appliqu~ au décodeur 34 par l'intermédiare d'use porte ET 27 et de la porte OU 33. Dans ce cas, la so-tie du décodeur 34 constitue l'adresse d'index voulue qui est appliquée à la mémoire d'index 40 par les portes ET 47 et 57 et la porte OU 46. La sortie de la mémoire d'index est mémorisée dans ce cas dels le registre 61 qui est utilisé pour conserver les adresses de départ des séries de micro-instructions* autres que la première série correspondant a une instruction. Troisièmenient, pour un branchement du type DT, l'adresse de départ est extraite de la partie DT du registre de descripteur 101. Cette partie DT est appliquée par une porte ET 49 à un décodeur 48 qui délivre l'adresse d'index voulue. Cette adresse d'index est appliquée à la mémoire d'index 4o par l'intermédiaire des portes ET 53 et 59 et de la porte OU 4o. La sortie de la mémoire d'index est appliquée dans ce cas au registre de sortie 61. Quatrièmement, pour un branchement du type DZ, l'adresse de départ est extraite de la partie DZ du registre de descrip teu 101 Cette partie DZ est appliquée par une porte ET 50 à un décodeur 51 qui délivre l'adresse d'index voulue. Cette adresse d'index est appliquée à la mémoire d'index 40 par les portes ET 54 et 60 et la porte OU 46. La sortie de la mémoire d'index est également appliquée au registre 51. Il convient que les quatre décodeurs 34, 38, 48 et 51 soient constitués par des unités de mémoire a accs direct. Cette disposition augmente la souplesse du dispositif car les opérations de décodage peuvent autre modifiées en écrivant simplement de nouvelles informations dans la mémoire a' accs direct appropriée. En plus de ces quatre sources normales une adresse d'index peut également être extraite d'une entrée d'interruption 56 par l'intermédiaire d'une porte ET 55 ouverte par un signal d'interruption FLIRT. L'inverse du signal d'interruption est appliqué aux quatre portes ET 57 à 60 de manière qu'elles soient normalement ouvertes dans le cas d'absence d'interruptien mais qu'elles soient fermées lorsqu'une interruption se présente, ce qui interdit aux quatre sources normales d'appli- quer les adresses d'index & la mémoire dindes 4o dans le cas d'une interruption. L'lité 103 de production d'adresse de départ reçoit deux types de signaux de "branchement" provenant de l'unité d'exécution 102 de la figure 1. Le premier type sur le circuit 68 (figure 2) spécifie que ltexécution d'une instruction est terminée et qu'un branchement FK est nécessaire pour le démarrage de la première série de micro-instructions de l'instruction suivante. Ce signal est ensuite applique à une porte ET 64 par laquelle l'adresse de départ qui se trouve dans le registre 60 est appliquée par l'intermédiaire d'une porte OU 70, au -egistre 11 d'adresse de mémoire de micro-programme .L'autre type de signal de "branchement" sur le circuit 69 spécifie que l*exécu- tion d'une série de micro-instructions est terminée et qu'un branchement F, DT ou DZ est nécessaire pour le ddmarrage de la série de micro-instructions suivante de l'instruction en cours. Ce signal est ensuite appliqué à une porto ET 55 par laquelle l'adresse de départ qui se trouve dans le registre 61 est appliquée au registre d'adresse 11 par l'intermédiaire de la porte OU 70. Les signaux de branchement commandent également les portes ET 73 et 74 de manière que les autres bits du registre 60 ou 61 soient appliqués par l'intermédiaire d'une porte OU 75, à un registre de marqueur ou un registre 76 d'adresse de mé- moire bloc-notes. Comme le montre la figure 2, les différentes portes ET 77, 17, 23, 24, 27, 47, 49, 50, 53, 54, 62 et 63 sont ouvertes par la séquence des signaux de commande n, n + 1, etc... que délivre le circuit séquentiel de repositionnement 104 du la ri6ure 1. Ces signaux sont produits successivement par l'unité ##exécution 103, en synchronisme avec le cycle d'exécution des micro-instructions, et ils commandent le repositionnement du contenu des registres 60, 61 de la figure 2 lorsque le contenu do l'un d'entre eux est chargé dans le registre d'adresse 11. Les effets de ces signaux de commande sont résumes dans le Tableau ci-apr#s, qui montre les effets des signaux successifs n, n + 1, etc... dans des rangées horizontales successives qui doivent btre lues du haut en bas. Dans chaque rangée, les opérations supérieures sont exécutées dans le cycle avant les opérations inférieures.Par exemple, dans la rangée n + 1, la pre mibre colonne indique que la ortie du décodeur 34 est appliquée à la mémoire d'index 40 (par l'ouverture de la porte ET 47) au début du cycle et que la sortie de la mémoire d' index 40 es ensuite appliquée au registre 61 (par l'ouverture de la porte ET o3) relativement tard dans le cycle. Ceci assure ciue la sortie de la mémoire d'index 40 a le temps de se stabiliser sa valeur avant autre appliquée au registre G1.D'une manitre similaire, la seconde colonne dans la rangée n + 1 indique que le registre 13 est chargé (par l'ouverture de la porte ET 77) tôt dans le cycle et que le contenu de ce registre est appliqué aux décodeuvs F et X, 34 et 38 (par les portes ET 23 et 24) relativement tard dans le cycle. Cela assure que les nouvelles valeurs de F et de K ont le temps de se stabiliser à leurs valeurs dans le registre 13 avant d'être décodées. Lorsque le contenu du registre 60 est chargé dans le re autre d'adresse 11 pour déclencher une nouvelle instruction, les trois premiers signaux de commande n, n + 1 et n + 2 sont produits successivement. il apparatt sur le Tableau que cela entratne, au signal n + 2, le repositionnement du contenu du registre 60 avec une nouvelle adresse de branchement FE pour l'instruction suivante. Cette adresse est donc immedigtement disponible lorsque l'exécution de l'instruction en cours est terminée. En outre, le contenu du registre 61 est remplacé, au signal n + 1, par une adresse de branchement F pour 1' ins- truction en cours. Un autre signal de commande n + 3, n + 4, etc... de la séquence est délivré chaque fois qu'un autre branchement est exécuté, en utilisant le contenu du registre 61 jusqu' ce que l'exécution de l'instruction en cours soit terminée, aprcs quoi la séquence démarre à nouveau au signal n pour l'instrue- tion suivante. Le signal n + 3 entratne le remplacement du contenu du registre 61 par une adresse de branchement Dr, le signal n + 4 entratne le remplacement par une adresse dc branchement DZ, le signal n + 5 entratne le remplacement par une autre adresse de branchement F et enfin, le signal n + 6 entratne le remplacement par une autre adresse de branchement DZ. il apparat t donc que le circuit séquentiel de repositionnement assure que des adresses pour des branchements des types F, DT et DZ soient toujours disponibles dans l'ordre correct dans le registre 61 pour exécuter n'importe quelle séquence de séries de micro-instructions. En outre, cela assure que 11 adresse pour le branchement FK initial de itinstruction suivante soit dis ponible quand cela est nécessaire. Dans le Tableau, les séries d'opérations concernées par l'extraction des différentes adresses de branchements ont été groupées dans des colonnes séparées pour des raisons de clarté. Par exemple, la première colonne montre la séquence d'extraction de l'adresse de départ de branchement F tandis que la seconde colonne montre la séquence d'extraction de l'adresse de départ de branchement FK pour l'instruction suivante. Il en ressort que les différentes séquences d'extraction des différentes adresses de départ se recouvrent, ce qui réduit le temps effectif nécessaire pour 11 extraction de ces adresses de départ. Dicn entendu, diverses modifications peuvent etre apportées par l'homme de l'art au dispositif qui vient autre décrit uni quemcnt à titre d'exemple nullement limitatif sans sortir du cadre de l'invention. TABLEAU F FX DT DZ F DZ n Charg.14 Décod. F n+t 34 -- > 40 Charg.13 40 ~ 60 Décod.FK n+2 45# ~ 40 Décod.DT 40 -- > 60 n+3 | 48 - 40 Décod.DZ 40 -- > 61 n+4 51 -- > 40 Décod.F 40 -- > 61 n+5 34 -- > 40 Décod. DZ 40 -- > 61 n+6 51 -- > 40 40 -- 61 #EVEND1CATIoeT,S 1. Unité de micro-programme destinée à un processeur de données, et caractérisée en ce qu'elle comporte une mémoire de micro-programme qui contient plusieurs séries de microinstructions, chaque série comprenant une ou plusieurs microinstructions à des adresses successives dans la mémoire de micro-programme, une mémoire d'index modifiable destinée à conserver une table d'adresses de départ des séries de microinstructions dans la mémoire de micro-programme , et un dispositif destiné à éxtraire une adresse d'index dans une instruction d'entrée et à l'appliquer à la mémoire d'index de manière à obtenir l'adresse de départ d'une série de micro-instructions en vue dtexecuter cette instruction d'entriez 2.Unité selon la revendication 1, caracténsceen ce que chaque mot de la mémoire d'index contient, en plus d'une adresse d'index, plusieurs bits qui sont utilisés comme un prolongement d'une micro-instruction. 3. Unité selon la revendication 1, caractérisée en ce que chaque mot de la mémoire d'index contient, en plus d'une adresse index, plusieurs bits qui sont utilisés comme une adresse de mémoire bloc-notes. 4. Unité selon l'une quelconque des revendications 1 à 3, caractérisée en ce quelle comporte un dispositif destin à extraire une adresse d'index pour l'appliquer à la mémoire index, dans un registre de descripteur Zui contient des informations concernant un opérande indirect. 5. Unité selon l'une quelconque des revendications 1 à 4, caractérisée en ce quten fonctionnement. l'extraction d'une adresse d'index pour qu'elle soit appliquée à la mémoire d'index est effectuée simultanément avec l'application à cette mémoire d'index d'une adresse précédemment extraite. 6. Unité selon l'une quelconque des revendications 1 à 5, caractérisée en ce on ronctionnement, l'extraction d'une adresse de départ pour une série de micro instructions est ef fectuee simultanément avec l'exécution d'une série précédente de micro-instructions. 7. Unité selon la revendicatLon 6, caractérisée en ce que chaque instruction d'entrée Implique l'exécution do plusieurs séries de micro-instructiwons, la mémoire d'index comportant également deux registres de sortie t l'un destiné h conserver l'adresse de départ de la première série de micro-instructions correspondant à l'instruction suivante, et l'autre destiné à conserver l'adresse de départ de la série suivante le microinstructions correspondant à l'instruction en cours.