FR 2472782 A1 19810703 FR 7931794 A 19791227 La présente invention concerne un procédé de gestion des adresses de retour dans une série de branchements vers des sous-microprogrammes, dans un microprogramme, ainsi qu'un dispositif pour la mise en oeuvre de ce procédé. Elle s'applique aux unités de traitement de l'information qui comprennent des mémoires d'enregistrement de microprogrammes et de sous-micropro- grammes et elle permet de simplifier et d'accélérer la gestion des adresses de retour au cours des bran- chements d'un ou plusieurs sous-microprogrammes dans un microprogramme. On sait, en programmation classique, que pour gérer des adresses de retour de sous-programmes vers un programme, le moyen le plus simple est que chaque sous-programme appelé range le contenu du compteur adresses du programme au moment du bran- chement dans une mémoire connue du sous-programme Chaque instruction de retour dans un sous-programme remet en place l'adresse sauvegardée du programme. Cotte disposition n'est envisageable que si le programme et les sous-programme sont inscrits dans une même zone de mémoire. Dans le cas de microprogrammes, cette disposition ne peut être du fait que les mémoires ne sont pas inscriptibles et que les adresses de retour des microprogrammes vers le programme ne peuvent être inscrites au cours du déroulement des microprogrammes dans cette mémoire. Il est connu de ranger les adresses de retour des microprogrammes dans des registres qui sont respectivement affectés à chaque sous-micro- programme. Ces registres ont une adresse flZe et chacun dieux est affecté à un sous-microprogramme particulier. Cette dispostion est donc très rigide puisqu'elle nécessite un registre déterminé pour chaque adresse de retour de sous-microprogramme. La présente invention a pour but de remédier à ces inconvénients et notamment de disposer d'un procécé ainsi que d'un dispositif pour sa mise en oeuvre qui permettent une gestion facile et rapide des adresses de retour, dans une série de branchements vers des sous-microprogrammes successifs, dans un microprogramme, sans que ces adresses soient figées dans des registres dont l'adresse est fixe. L'invention vise tout d'abord un procédé de gestion des adresses de retour dans une série de branchements vers des sous-microprogrammes successifs, dans un microprogramme, caractérisé en ce qu'il consiste à empiler successivement dans une pile, les adresses de retour des sous-microprogrammes vers le microprogramme, puis à extraire ces adresses de retour de la pile selon le mode LIFO : dernier adresse de retour empilée-première adresse de retour extraite de la pilet. Selon une autre caractéristique de l'invention, chaque dernière adresse de retour empilée est extraite de la pile à chaque fois que le sous-microprogramme en cours d'exécution est terminé. L'invention a aussi pour objet un dispositif de gestion des adresses de retour dans une série de branchements vers des sous-microprogrammes successifs, dans un microprogramme, caractérisé en ce qu'il comprend des moyens de mémorisation des adresses de retour, des moyens d'inscription de ces adresses de retour, dans les moyens de mémorisation, par empilement au cours des branchements successifs, et des moyens d'extraction de ces adresses empilées dans les moyens de mémorisation, à la fin du dernier sousmicroprogramme de la série considérée, selon le mode LIFO "dernière adresse de retour empilée-première adresse de retour extraite de l'empilement". Selon une autre caractéristique, les moyens de mémorisation des adresses de retour sont constitués par un banc de registres classés par rangs croissants, les moyens d'inscription des adresses de retour au cours des branchements comprenant un registre de pointage des registres du banc, ce registre de pointage contenant le rang du registre à pointer dans le banc, et un circuit d'incrémentation du rang contenu dans le registre de pointage, d'une valeur correspondant au pointage du registre de rang immédiatement supérieur, de sorte que la première adresse de retour soit enregistrée dans le registre de rang le plus faible et que les adresses de retour successives soient enregistrées respectivement dans les registres de rangs successifs suivants, jusqu'à la fin du dernier sous-microprogramme de la série. Selon une autre caractéristique, les moyens d'extraction d'adresses comprennent des moyens de décrémentation du rang contenu dans le registre de pointage, d'une valeur correspondant au pointage du registre de rang immédiatement inférieur, de sorte que la dernière adresse de retour enregistrée soit extraite la première du banc de registres à la fin du-dernier sous-microprogramme de la série et que l'extraction des adresses de retour contenues dans les registres du banc soit opérée selon les rangs décroissants successifs de ces registres, jusqu'au registre de rang le plus faible contenant la première adresse de retour enregistrée. Selon une autre caractéristique, les registres du banc sont reliés par des entrées et des sorties à un compteur d'adresses de la mémoire, lui-même relié à cette mémoire par l'intermédiaire d'un registre d'adressage et d'un registre de lecture de cette mémoire. D'autres caractéristiques et avantages de l'invention ressortiront encore de la description qui va suivre, donnée en référence aux dessins annexés dans lesquels - la figure 1 est un diagramme représentant schématiquement un exemple de branchements de sousmicroprogrammes dans un microprogramme, - la figure 2 représente, au début de chaque branchement, le contenu des registres d'un banc de registres permettant de gérer les adresses de retour des sous-microprogrammes, - la figure 3 représente schématiquement un dispositif de gestion d'adresses de retour, conforme à l'invention. La figure 1 est un diagramme représentant schématiquement un exemple d'une série de branchements successifs de sous-microprogrammes SMP1, SMP2, SMP3, au cours du déroulement d'un microprogramme MP1. On suppose sur ce diagramme que le microprogramme MP1 commence à-se dérouler à l'adresse AMP11, lorsque sur une instruction ou une microinstruction DEPART, il est-nécessaire de dérouler le microprogramme MP1 contenu dans la mémoire morte, par exemple d'une unité de traitement de l'information. Sur ce diagramme, le microprogramme MP1 qui a débuté sur l'instruction ou la microinstruction DEPART à l'adresse AMPll, se déroule sans branchement sur un sous-microprogramme, jusqu'à l'adresse AMP12 ; cette première phase du déroulement du microprogramme MP1 porte la référence 1 sur la figure. A l'adresse AMP12 le microprogramme contient une instruction de branchement BR1, vers un sous-microprogramme SMP1 dont l'adresse de départ est référencée SMPll. On suppose, dans l'exemple considéré que le sous-microprogramme SMP1 se déroule en 2, jusqu a l'adresse SMP12 où il comporte une microinstruction de branchement BR2, vers un autre sous-microprogramme SMP2 qui débute à l'adresse Le sous-microprogramme SMP2 se déroule en 3 jusqu'à l'adresse SMP22 où se trouve la microinstruction de branchement BR3, vers un sous-microprogramme SMP3 qui débute à l'adresse SMP31. On suppose que le sousmicroprogramme SMP3 se déroule en 4 jusqu'à l'adresse SMP32 où se trouve la microinstruction RETOUR 3. Cette microinstruction permet, après les branchements successifs du microprogramme MP1 vers les différents sous-microprogrammes, d'effectuer un retour vers le microprogramme MP1. On revient alors au sous=micro- programme SMP2 à l'adresse de RETOUR SMP22+1 qui, comme on le verra par la suite, a été enregistrée par des moyens appropriés du dispositif de l'invention. Cette adresse de retour correspond à l'adresse qui suit l'adresse SMP22 à laquelle se trouvait la micro instruction de branchement BR3 qui avait commandé le branchement sur le sous-microprogramme SMP3. Le sous-microprogramme SMP2 qui avait été provisoirement interrompu à l'adresse SMP22 recommence alors à se dérouler en 5 depuis l'adresse SMP22+1 jusqu'à l'adres- se SMP23 où se trouve la microinstruction RETOUR 2.Sur cette microinstruction, le sous-microprogramme SMP2 est achevé et on effectue alors un retour vers le sous-microprogramme SMP1 à l'adresse SMP12+l ; ce sous-microprogramme avait été interrompu par le branchement BR2 à l'adresse SMP12. te sous-micro- programme SMP1 achève alors de se dérouler en 6 à partir de l'adresse SMP12+1 jusqu'à l'adresse SMP13 où se trouve la microinstruction RETOUR le A cet instant, le sous-microprogramme SMP1 est terminé et un retour est effectué vers le microprogramme MP1 qui avait été interrompu à l'adresse AMP12. Ce microprogramme se déroule alors en 7 depuis l'adresse AMP12+1 jusqu'à l'adresse AMP13 où il se termine sur la microinstruction FIN. En référence à la figure 2, on a représenté en exemple, les contenus des différents registres d'un banc de registres BP au cours des étapes successives du déroulement du microprogramme MP1 et des divers branchements vers les sous-microprogrammes décrits plus haut, ainsi qu'au cours du retour vers le microprogramme MP1 à la fin du dernier microprogramme SMP3. Ce banc de registres permet, selon le procédé de l'invention, d'empiler successivement sous forme de pile, les adresses de retour des sousmicroprogrammes SMP1, SMP2, SMP3 vers le microprogramme MP1 et à la fin du sous-microprogramme SMP3 d'extraire ces adresses de retour de la pile selon le mode LIFO : "dernière adresse de retour empilée-première adresse de retour extraite de la pile En A, tous les registres du banc sont vides. Cet état des registres correspond à l'instant où la microinstruction DEPART commande l'exécution du déroulement du microprogramme MP1, à l'adresse aMPll. En B, on a représenté l'état des registres du banc BP au moment où est effectué à l'adresse SMP12, le branchement du sous-microprogramme SMP1, à l'adresse SMP11 grâce à la microinstruction BR1. A cet instant, on enregistre dans le premier registre RPO du banc BP l'adresse de retour AMP12+l vers le microprogramme Piu1. En effet, le microprogramme MP1 étant provisoirement interrompu à l'adresse AMP12 par suite du branchement BR1, sa reprise devra être effectuée à l'adresse suivante, c'est-à-dire à l'adresse AMP12+1. En C, on a représenté l'état des registres au moment où est effectué à l'adresse SMP12 le branchement BR2 sur le sous-microprogramme SMP2 à l'adresse SMP21. A cet instant, le registre RPo contient toujours l'adresse AMP12+l de retour vers le microprogramme MP1, tandis que le registre suivant RP1 est chargé par l'adresse de retour SMP12+1 vers le sous microprogramme SMP1. On remarquera que les moyens de mémori sation des adresses de retour, constitués par le banc de registre BP, sont organisés de manière que ces registres soient classés par rangs croissants. En D, on a représenté l'état des registres au moment où est effectué le branchement BR3 à l'adresse SMP22 vers le sousomicroprogramme SMP3 à l'adresse SMP31. A cet instant, les registres RPot RP1 contiennent les adresses de retour AMP12+l et SMP12+1 tandis que le registre suivant RP2 est chargé par l'adresse de retour SMP22+1 vers le sous-microprogramme SMP2. On remarquera que ces registres sont chargés de manière qu'il y ait empilement des adresses successives de retour, rencontrées au cours des divers branchements. La dernière adresse de retour empilée SMP22+1 dans le registre RP2 est enregistrée dans le registre de rang le plus élevé. Le branchement BR3 étant effectué, le dernier sous-microprogramme SMP3 se déroule depuis l'adresse SMP31 jusqu'à -l'adresse SMP32 où se trouve la microinstruction RETOUR 3. En E, on a représenté l'état des registres du banc BP lorsque le sous-microprogramme SMP2, interrompu à l'adresse SNP22 a été repris à l'adresse de retour SMP22+1* Cette reprise à cette adresse peut entre réalisée grâce à l'enregistrement de celleci dans le registre BP2 On remarquera qu'à la fin du dernier sous-microprogramme, l'adresse de retour est extraite de la pile selon le mode LIFO 5-ce mode de lecture d'adresse dans une pile consiste à choisir constamment comme première adresse à extraire de la pile, la dernière adresse de retour empilée. Le sous-microprogramme SMP2 dont le déroulement a été repris à l'adresse SMP22+1 se termine à l'adresse SMP23 où se trouve la microinstruction RETOUR 2. A cet instant, &num; un retour est effectué vers le sous- microprogramme SMP1 qui avait été interrompu lors du branchement BR2 à l'adresse SMP12. Ce retour est effectué à l'adresse de retour SMP12+1 contenue dans le registre RP1. On a représenté en F l'état des registres du banc BP lorsque le retour à l'adresse SMP12+1 du sous-microprogramme SMP1 a été réalisé. Le sousmicroprogramme SMP1 achève alors de se dérouler à l'adresse SMP12 où se trouve la microinstruction RETOUR 1. A cet instant, un retour est effectué vers le microprogramme MP1 qui avait été interrompu à l'adresse AMP12. Ce retour est effectué à l'adresse AMP12+1 contenue dans le registre RPO On a représenté en G l'état des registres du banc BP, lorsque le retour vers le microprogramme MP1 a été réalisé ; on voit que l'on est revenu à l'état initial des registres.Le microprogramme MP achève alors de se dérouler à l'adresse AMP13 où se trouve la microinstruction FIN ; on remarquera que conformément au procédé de l'invention, chaque adresse de retour empilée est extraite de la pile à chaque fois que. le sous-microprogramme en cours d'exécution est terminé. On remarquera également que les adresses de retour dans la pile sont bien extraites de celles-ci, selon le mode LIFO : dernière adresse de retour emrilée-première adresse de retour extraite de la pile". En référence à la figure 3, on a représenté schématiquement un dispositif de gestion des adresses de retour conforme à l'invention. Ce dispositif comprend des moyens de mémorisation des adresses de retour, constitués par le banc de registre BP qui a été décrit précédemment et qui comprend des registres RPO, RP1, RP2... RPns Le dispositif comprend également des moyens d'inscription des adresses de retour des sous-microprogrammes vers le microprogramme par empilement dans les registres du banc BP au cours des branchements successifs.Ces moyens d'inscription comprennent notamment un registre ARP de pointage des registres du banc BP g ce registre de pointage contient successivement au cours des différents branchements, des informations BRP ou RP concernant le rang du registre à pointer soit pour un branchement vers un sous-microprogramme, soit pour un retour vers le microprogramme, dans le banc BP. Ce registre de pointage permet, comme on le verra par la suite, de commander au cours des branchements successifs l'empilement des adresses de retour dans les registres du banc BP.I1 est associé à un circuit d'incrémen- tation-décrémentation ID des informations relatives au rang du registre à pointer contenues dans le regis- tre ARP Ce circuit permet, lors de chaque branchement vers un sous-microprogramme, d'incrémenter d'une unité la valeur du rang contenu dans le registre ARP de manière à commander le pointage par les signas BRP t il permet aussi de dêcrémenter diune unité les informations relatives au rang du registre à pointer, contenues dans le registre BWP, lors du retour vers le microprogramme.Le pointage est alors commandé par les signau RP ; les registres du banc BP sont ainsi pointés successivement par rangs crois- sants pour enregistrer les adresses de retour succes- vivement rencontrées, de sorte que ces adresses ssaccu mulent dans ces registres sous forme de pile. Ils sont ensuite pointés successivement par rangs décrois- sants, lors du retour vers le microprogramme principal. Conformément à l'exemple décrit plus haut, ce sont les registres RP; RP1, RPz qui seront successivement pointés au cours des branchements successifs, de manière que ces registres contiennent respects vement, au moment du dernier branchement, les adresses de retour AMP12+1, SMP12+l, SMP22+l. Ainsi, le circuit d'incrémentation du rang enregistré dans le registre de pointage ARP permet d'incrémenter le contenu de ce registre d'une valeur qui correspond au pointage du registre de rang immédiatement supérieur dans le banc de registres.La première adresse de retour est ainsi enregistrée dans le registre de rang le plus faible tandis que les adresses de retour successives suivantes sont enregistrées respectivement dans les registres de rangs successifs suivants, jusqu'à la fin du dernier sous-microprogramme de la série. L'ordre d'incrémentation du contenu du registre ARP par le circuit ID provient d'un registre de lecture RMR de la mémoire M ; cette mémoire contient les microprogrammes ainsi que les divers sous-microprogrammes de branchement. Cet ordre d'incrémentation est fourni par une microinstruction BR parvenant au registre de lecture RMR au moment de chaque branchement.La microinstruction BR commande également un compteur d'adresse MPC de la mémoire M de manière qu'à chaque microinstruction de branchement BR, l'adresse de retour de sous-microprogramme au moment du branchement soit enregistrée dans l'un des registres du banc BP pointé grace au registre ARP. Cette adresse est obtenue sur la sortie S du compteur MPC au moment du branchement. En fait, en se référant au diagramme de la figure 1, si l'on considère le sous-microprogramme SMP1 au moment du branchement BR2 ce sous-micropro- gramme est interrompu au moment du branchement à l'adresse SMP12 et l'adresse effective de retour est l'adresse SMP12+1. A cet instant, le registre de pointage ARP contient des informations RP qui permettent de pointer le registre RP1 tandis que le compteur MPC qui contient l'adresse SMP12 est incrémentée de une unité grâce à un circuit d'incrémentation IC de manière que sur les sorties S du compteur apparaissent des informations correspondant à l'adresse SMP12+l ; ces informations sont alors enregistrées dans le registre RP1. Il est bien évident qu'en dehors de l'enregistrement des adresses de retour dans les registres du banc BP, les différents branchements sont effectués grâce aux informations contenues dans le registre de lecture RMR ; ces informations agissent sur le compteur MPC de manière que celui-ci commande le branchement d'un sous-microprogramme à l'adresse voulue par l'intermédiaire du registre d'adressage MAR de la mémoire M. Les entrées I du registre MAR sont reliées par exemple à une unité de traitement de l'information ; ces entrées permettent d'appliquer au registre MAR l'instruction ou la microinstruction DEPART qui déclenche le déroulement du microprogramme principal ; les adresses de retour après branchements vers des sous-microprogrammes sont bien entendu gérées grâce au dispositif de l'invention.Les sorties O du registre de lecture de la mémoire M sont elles aussi reliées à des éléments non représentés de l'unité de traitement de l'information qui utilise le dispositif. tes microinstructions qui apparaissent sur les sorties 0 commandent par exemple les opérations internes de cette unité de traitement. Lorsque les différents branchements sont achevés et que le dernier sous-microprogramme est en cours de déroulement, les adresses de retour des divers sous-microprogrammes sont empilées dans les registres du banc BP (diagramme D figure 2). Lorsque la microinstruction RETOUR apparat à la sortie du registre de lecture RKRR les adresses de retour empilées dans les registres du banc BP vont être extraites de ces registres grâce à des moyens d'extraction d'adresses qui comprennent notamment les mEms ID pour décrémenter le rang contenu dans le registre de pointage ARP, d'une valeur qui correspond au pointage du rang immédiatement inférieur. Ces moyens de décrémentation, dans l'exemple décrit, permettent de décrémenter le contenu du registre ARP d'une unité ; sur la figure-ils sont confondus avec les moyens d'incrémentation ID. Les microinstructions RETOUR permettent de commander cette décrémentation du contenu du registre ARP. Le pointage des registres du banc BP est alors effectué grâce à cette décreméntation de manière que la dernière adresse de retour enregistrée soit extraite la première du banc de registres à la fin du dernier sous-microprogramme de la série de branchements ; cette extraction est opérée selon les rangs décroissants successifs de ces registres jusqu'au registre de rang le plus faible qui contient la première adresse RETOUR. Dans l'exemple décrit à l'aide du diagramme de la figure 1, à l'instant où apparaît par exemple la microinstruction RETOUR 3, le registre de pointage ARP permet de pointer le registre RP2 qui contient 11 adresse de retour SMP22+1 vers le sous-microprogramme SMP2. Lorsque ce pointage est effectué, le contenu du registre ARP est décrémenté d'une unité grâce au circuit ID, de manière que le pointage suivant soit effectué sur le registre RP1 lorsque survient la microinstruction RETOUR 2. Enfin, après une nouvelle décrémentation du contenu du registre ARP dans l'exemple considéré, le resistre EPO est pointé de manière que le retour soit effectué à l'adresse AMP12+l du microprogramme MP1. Le sous-microprogramme SMP1 achève alors de se dérouler jusqu'à l'adresse AMP13 (figure 1) où est contenue la microinstruction FIN. Les différentes adresses de retour sélectionnées grâce au registre de pointage ARP sont bien entendu transmises à la mémoire M par l'intermédiaire du compteur d'adresses MPC qui reçoit les informations concernant les adresses de retour sur ses entrées E. Ces informations sont transmises à la mémoire M par l'intermédiaire du registre d'adressage MAR. Il est bien évident que dans le dispositif qui vient d'être décrit, les moyens utilisés auraient pu être remplacés par des moyens équivalents sans sortir du cadre de l'invention. REEENDICATIONS 1. Procédé de gestion des adresses de retour dans une série de branchements vers des sousmicroprogrammes successifs dans un microprogramme, caractérisé en ce qu'il consiste à empiler succes- sivement dans une pile (BP) les adresses de retour des sous-microprogrammes (SMP1, SMP2...) vers le microprogramme (MP1), puis à extraire ces adresses de retour de la pile selon le mode LIFO : Dernière adresse de retour empileepremière adresse de retour extraite de la pile 2. Procédé selon la revendication 1, caraco térisé en ce que chaque dernière adresse de retour empilée est extraite de la pile à chaque fois que le sous-microprogramme en cours d'exécution est terminé. 3 Dispositif de gestion des adresses de retour dans une serie de branchements vers des sous-microprogrammes (SMP1, SMP2...) successifs dans un microprogramme (MP1), caractérisé en ce qu'il comprend des moyens de mémorisation (BP) des adresses de retour, des moyens d'inscription (ARPr ID) de ces adresses de retour dans les moyens de mémorisation (BP) par empilement au cours des branchements successifs et des moyens d'extraction (ARP, ID) de ces adresses empilées dans les moyens de mémorisation gBP) à la fin du dernier sous-micro- programme de la série considérée selon le mode LIFO "dernière adresse de retour empilée-première adresse de retour extraite de l'empilement" 4. Dispositif selon la revendication 3, caractérisé en ce que les moyens de mémorisation des adresses de retour sont constitués par un banc (BP) de registres (RP0, RPî..) classés par rangs croissants, les moyens d'inscription des adresses au cours des branchement comprenant un registre de pointage (ARP) des registres du banc (BP), ce registre de pointage contenant le rang du registre à pointer dans le banc, et un circuit d'incrémentation (ID) du rang contenu dans le registre de pointage (ARP) d'une valeur correspondant au pointage du registre de rang immédiatement supérieur, de sorte que la première adresse de retour soit enregistrée dans le registre (RPo) de rang le plus faible et que les adresses de retour successives soient enregistrées respectivement dans les registres (RP1, Ru2.. RPn) de rangs successifs suivants, jusqu'à la fin du dernier sous-microprogramme de la série. 5. Dispositif selon la revendication 4, caractérisé en ce que les moyens d'extraction d'adresses comprennent des moyens de décrémentation (ID) du rang contenu dans le registre de pointage (ARP), d'une valeur correspondant au pointage du registre de rang immédiatement inférieur, de sorte que la dernière adresse de retour enregistrée soit extraite la première du banc de registres (BP) à la fin du dernier sous-microprogramme de la série et que l'extraction des adresses de retour contenues dans les registres du banc soit opérée selon les rangs décroissants successifs de ces registres, jusqu'au registre (RPo) de rang le plus faible contenant la première adresse de retour enregistrée. 6. Dispositif selon la revendication 5, caractérisé en ce que les registres du banc (BP) sont reliés par des entrées et des sorties à un compteur d'adresses (MPC) de la mémoire (M), où sont enregistrés le microprogramme et les sousmicroprogrammes, lui-même relié à cette mémoire par l'intermédiaire d'un registre d'adressage (MAR) et d'un registre de lecture (RMR) de cette mémoire.