Brevet FR2645663A1 — publié le 19901012

La présente invention -concerne le domaine des opérations effectuées sur des piles dans un calculateur numérique. Plus précisément, la présente invention concerne l'amélioration des performances des opérations effectuées sur des piles dans un calculateur numérique qui utilise des instructions en pipeline. En architecture de calculateurs, une pile est une struc- ture de données o la valeur mémorisée Ia-plus récente est Ja première valeur que l'on récupère. Le sigle DEPS (Dernier Entré, Premier Sorti) décrit l'action d'une pile. - Le microprocesseur CEMOS 32 bits 80386 commercialisé par Intel Corporation à Santa Clara, Californie, USA, est un ex- emple de calculateur numérique antérieur utilisant une pile. Le microprocesseur 80386 utilise une technique d'adressage mémoire appelée "segmentation'! dans laquelle le domaine mé- moire est divisé en une ou plusieurs régions linéaires dis- tinctes appelées "segments". Une adresse mémoire est formée de deux parties, à savoir une partie de segment qui identi- fie le segment et une partie de décalage qui donne un déca-- lage en octets à l'intérieur du segment. Le segment et le décalage doivent tout deux être spécifiés pour chaque réfé- rence mémoire. Un compilateur définit l'un des segments comme étant le segment de la pile. La figure 1 illustre, sous forme simplifiée, l'organisa- tion de la pile mémoire du microprocesseur 80386 antérieur. Dans le microproceseur 80386, la pile grandit en direction des adresses inférieures, de sorte que la pile semble gran- dir vers le bas. Dans le microprocesseur 80386, I'emplace- ment des données mémorisées dans la pile est défini par l'a- dresse du registre de base + un décalage. Sur le micro- processeur 80386, la valeur de base contenue dans un regis- tre de base + le décalage contenu dans le registre ESP iden- tifient la position mémoire correspondant au dessus de la pile. Pour le microprocesseur 80386, le "dessus" de la pile est l'emplacement mémoire ayant dans la pile l'adresse la plus faible o les données sont actuellement mémorisées. Les deux opérations de base efectuées sur la pile sont la sauvegarde en pile (push) et la restitution par la pile (pop). L'opération de sauvegarde en pile ajoute un nouvel élément à la pile et l'opération de restitution par la pile retire le dernier élément ayant fait l'objet d'une sauve- garde en pile. La valeur de données la plus récemment sauve- gardée en pile réside en une position mémoire située sur le "dessus" de la pile. Dans une autre manière de procéder de l'art antérieur, un ou plusieurs registres pointent sur l'emplacement mémoire qui suit l'emplacement mémoire contenant la donnée la plus récemment sauvegardée sur la-pile. Une opération sur une pile, en réalité, comprend deux opérations distinctes en une. Une opération de sauvegarde en pile est par exemple constituée d'un transfert vers la mé- moire externe et d'une décrémentation du pointeur de pile. Une opération de restitution par la pile est constituée d'un transfert en provenance de la mémoire externe et d'une incrémentation du pointeur de pile. Dans une manière antérieure de procéder aux opérations sur la pile, une instruction de sauvegarde en pile d'un pointeur produit une décrémentation du pointeur de pile de la longueur d'un mot, puis la création d'une adresse à par- tir de la nouvelle valeur. Le contenu du registre spécifié est alors inscrit à cette nouvelle adresse. Pour une ins- truction de restitution de registre par la pile selon l'art antérieur, on va alors chercher une donnée en mémoire en utilisant la valeur se trouvant dans le pointeur de pile. La donnée arrivant de la mémoire est inscrite dans le registre et le pointeur de pile est incrémenté. Cette manière de pro- céder antérieure est celle que l'on peut trouver sur le microprocesseur 80386, et elle permet au microprocesseur d'exécuter en deux cycles d'horloge une instruction de sau- vegarde en pile d'un registre, et en quatre cycles d'horloge une instruction de restitution d'un registre par la pile. L'un des inconvénients de cette manière antérieure de procéder à des opérations sur la pile est qu'elle prend un temps relativement important, du fait que plusieurs cycles d'horloge sont nécessaires. Cette manière antérieure de pro- céder impose ainsi une pénalisation relative sur les perfor- mances, compte tenu en particulier du fait que l'on peut avoir, à l'intérieur d'un programme informatique donné, de nombreuses instructions de sauvegarde en pile et de resti- tution par la pile. - Compte tenu des limitations des systèmes et des procédés connus, l'un des buts de la présente invention est de pro- poser un procédé et des circuits permettant de réduire le nombre de cycles d'horloge nécessaires pour effectuer une opération sur la pile. Un autre but de la présente invention est de proposer un procédé et des circuits permettant d'exécuter en un seul cy- cle d'horloge une opération de sauvegarde en pile. Un autre but de la présente invention est de proposer un procédé et des circuits permettant d'exécuter en un seul cycle d'horloge une opération de restitution par la pile. Un autre but de la présente invention est de proposer un procédé et des-circuits permettant d'effectuer des opéra- tions sur pile dans un calculateur numérique avec instruc- tions en pipeline. Ces buts ainsi que d'autres de la présente invention sont atteints par un procédé et des circuits pour sauvegarder des données dans une pile en mémoire dans un calculateur numé- rique. Lors d'un premier cycle d'horloge, on décode une ins- truction nécessitant une opération de sauvegarde en pile. On génère également un indicateur de commande appelant une opé- ration de sauvegarde en pile. Lors d'une première phase d'un second cycle d'horloge, (a) on inscrit sur un premier bus une valeur de pointeur de pile mémorisée dans un premier registre de pointeur de pile et (b) on inscrit la valeur de pointeur de pile mémorisée dans le premier registre de pointeur de pile dans un verrou d'entrée d'un additionneur de pointeur de pile. Lors d'une seconde phase du second cycle d'horloge, (a) on forme une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, (b) on décrémente d'une quantité différentielle la valeur de pointeur de pile mémorisée dans -le verrou d'en- trée de l'addit-ionneur de pointeur de pile, pour former une valeur mise à jour de pointeur de pile et (c) on mémorise dans un verrou de sortie la valeur mise à jour du pointeur de pile. Lors d'une première phase d'un troisième cycle d'horloge, (a) on inscrit sur un second bus la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie et (b) on inscrit dans un second registre de pointeur de pile, pour mémorisation, la valeur mise à jour du poin- teur de pile se trouvant sur le second bus. Lors d'une seconde phase du troisième cycle d'horloge, (a) on inscrit en mémoire la donnée pour la mémoriser en un emplacement mé- moire indiqué par l'adresse mémoire de pile et (b) on inscrit dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile pro- venant du second registre de pointeur de pile. Les buts et autres buts précités de la présente invention sont également atteints par un procédé et des circuits pour restituer des données par une pile en mémoire dans un cal- culateur numérique. Lors d'un premier cycle d'horloge, (a) on décode une instruction nécessitant une opération de res- titution par la pile et (b) on génère un indicateur de commande appelant une opération de restitution par la pile. Lors d'une première phase d'un second cycle d'horloge, (a) on inscrit sur un premier bus une valeur de pointeur de pile mémorisée dans un premier registre de pointeur de pile, et (b) on inscrit la valeur de pointeur de pile mémorisée dans le premier registre de pointeur de pile dans un verrou d'en- trée d'un additionneur de pointeur de pile. Lors d'une seconde phase du second cycle d'horloge, (a) on forme une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, (b) on incrémente d'une quantité différentielle la valeur de pointeur de pile mémorisée dans le verrou d'entrée de l'additionneur de pointeur de pile, pour former une valeur mise à jour de pointeur de pile et (c) on mémorise dans un verrou de sortie la valeur mise à jour du pointeur de pile. Lors d'une pre- mière phase d'un troisième cycle d'horloge, (a) on inscrit sur un second bus la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie et (b) on inscrit dans un second registre de pointeur de pile, pour mémorisation, la ' valeur mise à jour du pointeur de pile se trouvant sur le second bus. Lors d'une seconde phase du troisième cycle d'horloge (a) on lit en mémoire la donnée en un emplacement mémoire indiqué parl'adresse mémoire de pile et (b) on inscrit dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile pro- venant du second registre de pointeur de pile. D'autres buts, caractéristiques et avantages de l'inven- tion apparaitront à la lecture de la description détaillée ci-dessous, faite en référence aux dessins annexés, d'un exemple de réalisation (qui n'est donné qu'à titre illustra- tif, sans aucun caractère limitatif). Sur les figures, des références identiques désignent des éléments semblables. La figure 1 est un diagramme d'une organisation mémoire de l'art antérieur avec une pile. La figure 2 est un schéma par blocs de l'architecture d'un microprocesseur. La figure 3 est un schéma par blocs du chemin de données pour les exécutions sur les nombres entiers du micropro- cesseur. La figure 4 est un schéma par blocs des circuits de pointeur de pile du microprocesseur. La figure 5 est un chronogramme du microprocesseur rela- tif à une séquence d'opérations sur la pile. La figure 6 est un chronogramme du microprocesseur rela- tif à une opération impliquant une écriture dans un registre de pointeur de pile, suivie de deux opérations sur la pile. La figure 2 est un schéma par blocs de l'architecture d'un microprocesseur 32 bits 60 qui inclut une unité de che- min de données 76 pour les exécutions sur les nombres en- tiers. L'unité de chemin de données 76 contient une logique de pointeur de pile, -qui sera décrite plus en détail par la suite, permettant de gérer, à une cadence d'une instruction par cycle d'horloge (s'il ne survient pas de discordance d'antémémoire ni de défaut de page), des opérations sur la pile, mises en pipeline. La logique de pointeur de pile contient un additionneur de pointeur de pile dédié pour la mise à jour d'un pointeur de pile et utilise un bus dis- tinct, appelé bus J. La logique du pointeur de pile sera dé- crite plus en détail par la suite. L'unité de chemin de données 76 contient également une unité arithmétique et logique, une batterie de registres, un décaleur circulaire, une ROM des constantes, un mot de sta- tut machine (MSW) et des drapeaux. Le microprocesseur 60 est organisé de la manière suivan- te. L'unité d'interfaçage de bus 62 est responsable de la recherche des données dans un système de mémoire externe (non représenté). L'unité d'interfaçage 62 est donc égale- ment responsable de la mise à jour du système de mémoire ex- terne en cas d'écriture en mémoire. L'unité d'interfaçage 62 réalise l'interfaçage entre le bus XA 61, le bus XD 63, l'unité d'antémémoire 66 et l'unité de pré-recherche 6. L'u- nité d'interfaçage de bus 62 est reliée à l'unité d'antémé- moire 66 via le bus KBA 65, qui est un bus d'adresses bi- directionnel, et le bus KBWR 67. L'unité d'antémémoire envoie les données à l'unité d'interfaçage de bus 62 via le bus KBWR 67. L'unité d'interfaçage de bus envoie les données à l'unité de pré-recherche 64 via le bus KBRD 69. Le bus M 138, le bus R 140 et le bus LA 89 donnent le chemin de données principal pour le microprocesseur 60. Le bus M 138 relie l'antémémoire 66 à l'unité de bus de données 76 et à l'unité à virgule flottante 78. Le bus R 140 relie l'antémémoire 66 à l'unité de segmentation 74, à l'unité de chemin de données 76 et à l'unité à virgule flottante 78. Le bus LA 89 relie l'antémémoire 66 à l'unité de pagination 72 et à l'unité de segmentation 74. L'unité de segmentation 74 est chargée de la partie segmentation du schéma général de gestion de la mémoire. Le bus I 90 relie l'unité de chemin de données 76 à l'unité de segmentation 74. Le bus K2Q 73 relie l'unité de pré- recherche 64 à l'unité de segmentation 79, et il est cons- titué d'un bus sur 32 bits. L'unité de pagination 72 met en oeuvre un système de pagination à deux niveaux du schéma général de gestion de la mémoire. Le bus PA 75 est un bus sur 22 bits qui relie l'unité de pagination 72 à l'antémémoire 66. L'unité à virgule flottante 78 contient la logique per- mettant d'exécuter le jeu d'instructions à virgule flottante associé au microprocesseur 60. L'unité de pré-recherche 64 a la responsabilité de la délivrance des données en code brut à l'unité de décodage des instructions 68, via le bus KlQ 71. L'unité de décodage des instructions 68 a la responsabi- lité du décodage des instructions incidentes pour le micro- processeur 60. L'unité de décodage des instructions 68 est relié-à la ROM de commande 70 via le bus iMOT 77 et le bus de point d'entrée 79. Le microprocesseur 60 utilise des instructions mises en pipeline. Le pipeline d'instructions comprend (1) un étage de pré-recherche, (2) un premier étage de décodage, (3) un seconde étage de décodage, (4) un étage d'exécution et (5) un étage d'écriture retardée (write-back). Grâce à la mise en pipeline, lorsqu'une instruction passe à l'étage d'exécu- tion, les étages de décodage des instructions peuvent com- mencer à traiter l'instruction suivante. L'unité de décodage des instructions 68 utilise un méca- nisme de décodage à deux étages. Le décodeur 91 du premier étage (D1) trouve le type d'opération à exécuter et les re- gistres à utiliser. Le décodeur 91 du premier étage génère également le point d'entrée pour le déclenchement de la sé- quence de microcode. Le décodeur 93 du second étage (D2) assure la capture du déplacement et de la donnée immédiate. Le décodeur 93 du second étage coordonne également les micro-instructions de départ anticipé et assure l'achèvement du calcul d'adresse linéaire approprié. Les décodeurs 91 et 92 des deux étages, avec l'horloge d'exécution, forment pour les instructions incidentes un pipeline de profondeur 3. Le premier étage décodeur 91 de l'unité de décodage des instructions 68 génère un indicateur de contrôle ISPVAL, qui est un signal de contrôle sur plusieurs bits. L'indicateur de contrôle ISPVAL est envoyé du premier étage décodeur 92 à l'unité de chemin de données 76 via les lignes 99. Le signal ISPVAL est un signal ou indicateur sur deux bits qui indique à l'unité de chemin de données 76 si la micro-instruction de départ anticipé courante est une instruction de sauvegarde en pile, une instruction de restitution par la pile, ou ni l'une ni l'autre. Un signal ou indicateur ISPVAL de '00', (en base 2) indique que la micro- instruction de départ anticipé courante n'.est ni une instruction de sauvegarde en pile ni une instruction de restitution par la pile. Un indi- cateur ISPVAL de '10' (en base 2) indique que la micro- instruction de départ anticipé est une instruction de sau- vegarde en pile. Un indicateur ISPVAL de '11' (en base 2) indique que la micro-instruction de départ anticipé est une instruction de restitution par la pile. L'unité de décodage des instructions 68 produit également un signal de commande de requête de répétition IRPTRQ sur un bit. Le signal de commande de requête de répétition IRPTRQ est envoyé de l'unité de décodage des instructions 68 à l'u- nité de chemin de données 76 via les lignes de commande 99. Le signal de commande de requête de répétition IRPTRQ signi- fie qu'il faut répéter la requête de départ anticipé. Ceci permet d'informer l'unité de chemin de données 76 que la micro-instruction courante est répétée depuis la dernière fois et que les pointeurs de pile doivent être renforcés pour les opérations sur la pile, de la manière que l'on dé- crira plus bas. L'unité de commande 70 est le moteur de microcode du microprocesseur 60. L'unité de commande 70 contient une ROM de commande microcodée 92 et une logique de commande qui dirige l'action des autres unités du microprocesseur 60, y compris de l'unité de chemin de données 76. L'unité de décodage des instructions 68 envoie l'information de point d'entrée à la ROM de commande microcodée 92 par le bus de point d'entrée 79 afin d'indiquer l'emplacement, dans la ROM de commande 92, de la première micro-instruction d'un groupe d'une ou-plusieurs micro-instructions à exécuter. Les micro- instructions donnent, par elles-mêmes, à l'unité de commande 70 les informations permettant à cette unité de commande 70 de déterminer le nombre de micro-instructions qui seront exécutées pour un point d'entrée donné. Les micro-instructions de la ROM de commande, une fois exécutées, assurent la commande du microprocesseur 60 et de l'unité de chemin de données 76. L'unité de commande 70 envoie des micro-instructions à l'unité de segmentation 74 via les bus 81 et 83. L'unité de commande 70 envoie des micro-instructions à l'unité de che- min de données 76 via les bus-81 et 85. L'unité de commande 70 envoie les micro-instructions-à l'unité à virgule flot- tante -78 via les bus 81 et 87. La figure 3 est un schéma par blocs des unités fonc- tionnelles et des circuits constituant l'unité de chemin de données 76. L'additionneur de pointeur de pile 114 et le verrou de pointeur de pile 112 sont contenus dans le bloc fonctionnel 318, pour les circuits du pointeur de pile et du compteur d'itérations DITSP. Le bloc fonctionnel DREG 316 contient une batterie de registres, la ROM des constantes 339, le décodeur de registre 314 et des dérivateurs et permutateurs 317. Le bloc fonctionnel DREG 316 contient également des registres de pointeur de pile ESP 122, SSP 120 et ASP 124 des circuits de pointeur de pile 110. Le bloc fonctionnel DBCNTR 333 est le bloc fonctionnel de commande de bus, qui contient une logique aléatoire permet- tant de générer des signaux de commande pour les dérivateurs et permutateurs de bus 317 dans le chemin de données, divers décodeurs et logiques permettant de détecter les collisions "brutales", auxquelles il ne peut être remédié au sein de l'unité de chemin de données 76. Il y a un dérivateur 184 (voir figure 4) entre le bus M et le bus I, etun dérivateur 182 (voir figure 4) entre le bus M et le bus J. L'activation d'un dérivateur entre l'un ou l'autre des deux bus rend ces deux bus logiquement équi- valents. Dans le microprocesseur 60, l'écriture retardée dans un registre de destination, peut se chevaucher avec un transfert de registres (c'està-dire une recherche en source) de l'instruction suivante. Ceci rend possible l'é- criture et la lecture du même registre au même moment. Cette écriture et cette lecture du même registre au même moment est appelée "collision de registres". Dans une situation de collision "en douceur", l'unité de chemin de données 76 empêche les bus sources d'être pilotés par la batterie de registres. Elle active le dérivateur appropriée, ce qui met la nouvelle valeur sur le bus. Le dérivateur 184 disposé entre le bus M et le bus I est un dérivateur unidirectionnel, qui ne dérive que le bus M sur le bus I. Le dérivateur 182 entre le bus M et le bus J n'est, de la même façon, qu'un dérivateur unidirectionnel, qui dérive le bus M sur le bus J. Les circuits DITSPR 310 de commande du pointeur de pile et du compteur d'itération sont reliés par les lignes 217 (1) aux circuits de pointeur de pile et de compteur d'itéra- tion 318 et (2) au bloc fonctionnel DREG 316. Le bloc fonc- tionnel de commande de bus DBCNTR 333 est relié au bloc DREG 316 via les lignes 217. Les circuits de commande DITSPR 310 et les circuits de commande de bus DBCNTR 333 produisent les signaux de commande pour la logique de pointeur de pile 110 (voir figure 4). Les signaux de commande envoyés des cir- cuits de commande DITSPR 310 aux circuits de pointeur de pile 110 via les lignes 217 commandent l'envoi de valeurs au bus I et au bus J lors des opérations sur la pile. Les signaux de commande envoyés via les lignes 217 sont utilisés pour commander l'additionneur de pointeur de pile 114 (voir figure 4) lors des opérations sur la pile. Les circuits de commande DITSPR 310 produisent également les signaux de com- mande pour les registres de pointeur de pile des circuits de pointeur de pile 110. Lors de certaines opérations sur la pile, les circuits de commande DBCNTR 333 envoient des signaux de commande aux dérivateurs 182 et 184 via les lignes 217. il - - Les circuits de commande DITSPR 310 reçoivent des signaux de commande provenant de l'unité de décodage des instruc- tions 68 (voir figure 2) via les lignes de commande 99. L'unité de. chemin de données '76 exécute toutes les opé- rations d'unité arithmétique et logique, et l'unité arith- métique et logique est contenue dans le bloc fonctionnel DALU 322. Le bloc fonctionnel DALUR 304 contient la logique de commande utilisée pour le positionnement de plusieurs des drapeaux de l'unité arithmétique et logique. Le bloc fonc- tionnel DOPR 302 contient la logique de décodage pour l'uni- té arithmétique et logique. Le bloc fonctionnel DBS 320 contient le dàcaleur circu- laire de l'unité de chemin de données 76. Le bloc fonction- nel DBSR 308 contient une logique aléatoire pour le décaleur circulaire du bloc DBS 320. Le bloc fonctionnel DFLAGR 306 contient les drapeaux visibles par l'utilisateur et les drapeaux de mot d'état de la machine. La figure 4 est un schéma par blocs des circuits logiques de pointeur de pile 110. Comme décrit plus haut, certaines parties des circuits 110 résident dans le bloc DITSP 318 (par exemple l'additionneur de pointeur de pile 114) et d'autres parties résident dans le bloc DREG 316 (par exemple les dérivateurs 182 et 184 et les registres ESP 122, ASP 124 et SSP 120). Les circuits de commande DBCNTR 33 envoient des signaux de commande aux dérivateurs 182 et 184 via -les li- gnes 217 lors de certaines opérations sur la pile. La figure 4 montre un additionneur de pointeur de pile dédié SPADDER 114 servant à mettre à jour des pointeurs de pile lors de l'exécution d'instructions d'opération sur * pile. L'additionneur de pointeur de pile 114 reçoit des si- gnaux de commande des circuits de commande du pointeur de pile et des compteurs d'itération 310 (voir figure 3) via les lignes 217. Un signal d'entrée A appliqué à l'addi- tionneur de pointeur de pile 314 provient, par les lignes 131, du verrou d'entrée de pointeur de pile 118. Un signal d'entrée B-appliqué à l'additionneur de pointeur de pile 114 provient du multiplexeur 116 via les lignes 133. Un signal de sortie de l'additionneur de pointeur de pile 114 est appliqué au verrou de sortie de pointeur de pile SPLATCH 112 via les lignes 129. Le verrou de sortie de pointeur de pile 112 reçoit, via les lignes 217, des signaux de commande-des circuits de com- mande de compteur d'itération et de pointeur de pile 310 (voir figure 3). L'une des sorties du registre de sortie du pointeur de pile 112 est reliée au bus I 90 via les lignes 127. Une autre sortie du verrou de sortie de pointeur de pile 112 est reliée au bus J 147 via les lignes 125. Le bus J 147 est un bus interne à l'unité de chemin de données 76, et il est dédié à la mise à jour des pointeurs de pile. Le bus I 90 est un bus distinct pour les données servant à la formation des adresses. Le bus I 90 va de 1'u- nité de chemin de données 76 à l'unité de segmentation 74 (voir figure 2). Comme décrit plus haut à propos de la figure 2, le bus N 138 fait partie du chemin de données principal pour le microprocesseur 60. Le dérivateur 182 est un dérivateur servant à transférer des données du bus M 138 au bus J 147. Dans un mode de réa- * lisation préféré de la présente invention, le dérivateur 182 est un dérivateur unidirectionnel qui ne transfère les don- nées que dans le sens allant du bus M 138 au bus J 147, et non du bus J 147 vers le bus M 138. Lorsque le dérivateur 182 est 'activé, le bus J 147 est rendu logiquement équi- valent au bus M 138. Le dérivateur 182 est constitué de por- tes CMOS. Le dérivateur 182 est commandé par les circuits de commande DBCNTR 333 (voir figure 3) via les lignes 217. Le dérivateur 184 est un dérivateur unidirectionnel entre le bus M 138 et le bus I 90, et permet donc un transfert de données seulement du bus M 138 au bus I 90, non du bus I 90 au bus M 138. Le dérivateur 184 est également constitué de portes CMOS, et il est commandé par les circuits de commande DBCNTR 333 via les lignes 217. Lorsque le dérivateur 182 est activé, -le bus I 90 est rendu logiquement équivalent au bus M 138. Les dérivateurs 182 et 184 résident dans le bloc fonc- tionnel des dérivateurs et permutateurs 317, qui fait partie 13. -26456'63 du bloc fonctionnel des registres 316 illustré figure 3. Le. dérivateur 182 a accès au bus M 138 et au bus J 147 dans le bloc fonctionnel 317, et le dérivateur 184 a accès au bus I et- au bus M 138 dans le bloc.fonctionnel 317. Les registres ESP 122, SSP 120 et ASP 124 sont trois re- gistres de pointeur de pile utilisés pour gérer les instructions de sauvegarde en pile et de restitution par la pile nécessitant un cycle d'horloge d'exécution. Les regis- tres ESP 122, SSP 120 et ASP 124 sont, chacun, des registres sur 32 bits. - Dans le mode de réalisation préféré de la présente in- vention, le microprocesseur 60 utilise la technique d'adres- sage par segmentation de la mémoire, dans laquelle l'espace mémoire est divisé en segments linéaires distincts. Chaque adresse mémoire consiste donc en deux éléments: un élément de segment, qui identifie le segment, et un élément de déca- lage, qui donne un décalage en octets à l'intérieur du segment. Les registres de pile ESP 122, SSP 120 et ASP 124 sont des registres servant à mémoriser divers décalages pour l'a- dresse en mémoire dé la pile. L'unité de segmentation 74 (voir figure 2) reliée au bus I 90 est utilisée pour former des adresses linéaires en fonction des valeurs de décalage reçues du bus I 90 et des adresses de base mémorisées dans un jeu de registres de descripteur dans l'unité de segmen- tation 74. Dans un mode de réalisation préféré de la présente invention, le microprocesseur 60 utilise une pile qui gran- dit en direction des adresses inférieures. L'emplacement des données mémorisées dans la pile est défini par l'adresse du registre de base + un décalage. Le registre ESP 122 est un registre de pointeur de pile visible par l'utilisateur. Pour une instruction isolée en fin de pipeline, la valeur de base contenue dans un registre de base de pile + la valeur de décalage contenue dans le registre ESP 122 identifient l'emplacement mémoire qui est le "dessus" de la pile en mémoire. Le '"dessus" de la pile est l'emplacement mémoire contenant la dernière donnée en date ayant fait l'objet d'une sauvegarde en pile. Le registre SSP 120 est le registre pointeur de pile fan- tôme utilisé pour relancer l'instruction. La valeur de déca- lage mémorisée dans le registre ESP 122 est envoyée pour mémorisation au registre SSP 120 via les lignes 137 lors de la première phase du cycle d'horloge d'exécution pour une opération de sauvegarde en pile ou de restitution par la pile. Le registre ASP 124 est le registre de pointeur de pile avancé. Le registre de pointeur de pile avancé 124 est utilisé par l'unité de chemin de données 76 comme empla- cement permettant de mémoriser la valeur mise à jour du décalage de pile jusqu'à ce que l'instruction courante atteigne son étage d'exécution et que les conditions de mise à jour du registre ESP 122 soient remplies. En tout état de cause, la valeur de décalage mise à jour conservée dans le registres ASP 124 est envoyée pour mémorisation au registre ESP 122 lors de la seconde phase du cycle d'horloge d'exécution pour une opération de sauvegarde en pile ou de restitution par la pile. Les registres ESP 122, SSP 120 et ASP 124 sont contrôlés chacun par les circuits de commande de pointeur de pile et de compteur d'itérations 310, via les lignes 317. Le registre de pointeur de pile visible par l'utilisateur ESP 122 est relié au bus I 90 via les lignes 165. Le registre ESP est relié au bus J 147 via les lignes 161. Le registre ESP 122 est également relié au bus M 138 via les lignes 167. Le registre ESP est relié au registre SSP 120 via les lignes 137. En outre, le registre ESP 122 est relié au registre ASP 124 via les lignes 139. Le registre de pointeur de pile avancé ASP 124 est relié au bus I 90 via les lignes 163. Le registre ASP est également relié au bus'J 147 via les lignes 141. Le verrou d'entrée 118 est relié au bus J 147 via les lignes 135. Le verrou 118 est commandé par les circuits de commande de pointeur de pile et de compteur d'itérations 310 via les lignes 217. Lors d'une première phase d'une seconde étape de décodage -5.- pour une opération de sauvegarde en pile ou une opération de restitution. par la pile, les données sur le bus J 147 sont verrouillées dans le verrou 118 via les lignes 135 sous le contrôle des circuits de.commande DITSPR 310. Un compte d'octets zéro est appliqué en entrée du multi- plexeur 116-via les lignes 153. Un compte d'octets de +2 ou -2 est appliqué en entrée du multiplexeur 116 via les lignes 151. Un compte d'octets de +4 ou -4 est appliqué en entrée du multiplexeur 116 via les lignes 149. La sortie du multiplexeur 116 est reliée à l'entrée B de l'additionneur de pointeur de pile 114 via les lignes 133. Le multiplexeur 116 est contrôlé par les circuits de commande DITSPR 310, via les lignes 217. Les comptes d'octets de 0, +2 ou -2, et +4 ou -4 appli- qués en entrée du multiplexeur 116 sont les comptes d'octets possibles desquels la valeur du pointeur de pile courante peut être incrémentée ou décrémentée par l'additionneur de pointeur de pile 114. Par exemple, si un compte'd'octet de -2 est transmise par le multiplexeur 116 via les lignes 133 jusqu'à l'entrée B de l'additionneur de pointeur de pile 114, ceci signifie que la valeur courante de pointeur de pile verrouillée dans le verrou d'entrée 118 et appliquée à l'entrée A de l'additionneur de pointeur de pile 114 doit être décrémentée de 2 octets. A l'opposé, si un compte d'octets +4 est transmise par le multiplexeur 116 via les lignes 133 jusqu'à l'entrée B de l'additionneur de pointeur de pile 114, ceci signifie que la valeur courante du poin- teur de pile verrouillée dans le verrou d'entrée 118 et appliquée à l'entrée A de l'additionneur de pointeur de pile 114 doit être incrémentée de 4 octets. Compte tenu du fait que la pile du microprocesseur 60 grandit en direction des adresses inférieures, il s'ensuit que l'on décrémente la valeur courante ou préexistante du pointeur de pile pour une opération de sauvegarde en pile, et que l'on décrémente la 35. valeur de pointeur de pile courante ou préexistante pour une opération de restitution par la pile. Le signal ou indicateur de commande SPDEL provenant des circuits DITSPR 310 détermine si la valeur se trouvant dans le verrou d'entrée 118 dé l'additionneur de pointeur de pile 114 sera incrémenté de zéro octet, de 2 octets ou de 4 octets, ou décrémenté de 2 octets ou de 4 octets. La valeur par défaut sera de zéro octet. Le signal ou indicateur de commande SPCYIN provenant des circuits DITSPR 310 correspond au report pour l'additionneur de pointeur de pile 114 lors- que celui-ci effectue une décrémentation de 2 ou 4 octets. La figure 5 est un chronogramme correspondant à trois opérations de sauvegarde en pile exécutées à la suite les unes des autres, et illustre la séquence des événements as- sociés à chacune de ces opérations de sauvegarde en pile. La partie gauche de chacune des colonnes 601, 602, 603, 604 et 605 illustre la première phase du cycle d'horloge respectif. De la même façon, la partie droite de chacune des colonnes 601, 602, 603, 604 et 605 illustre la seconde phase de chacun des cycles d'horloge respectifs. Pour la première instruction de sauvegarde en pile de registre, le côté gauche de la colonne 601 illustre la pre- mière phase de la première étape de décodage Dl, et le côté droit de la colonne 601 illustre la seconde phase de la pre- mière étape de décodage D1. En outre, pour la première opé- ration de sauvegarde en pile, le côté gauche de colonne 602 illustre la première phase de la seconde étape de décodage D2, le côté droit de la colonne 602 illustre la seconde phase de la seconde étape de décodage D2, le côté gauche de la colonne 603 illustre la première phase de l'étape d'exé- cution, et le côté droit de la colonne 603 illustre la seconde phase de l'étape d'exécution ou du cycle d'horloge d'exécution. Pour la seconde instruction de sauvegarde enri pile de registre, la première étape de décodage est illustrée dans la colonne 602, la seconde étape de décodage est illustrée dans la colonne 603 et le cycle d'horloge ou étape d'exé- cution est illustré dans la colonne 604. Pour la troisième instruction de sauvegarde en pile de registre, la première étape de décodage est illustrée dans la colonne 603, la seconde étape de décodage est illustrée dans la colonne 604 et l'étape d'exécution de la seconde instruction de sauvegarde en pile de registre est illustrée dans la colonne 605. L'étape de pré-recherche pour chaque instruction du pipeline d'instructions n'est pas représentée sur la figure 5. L'étape de pré=recherche a lieu avant la première étape de décodage pour chaque instruction respective du pipeline. Pour le microprocesseur 60, lors de l'étape de pré- recherche du pipeline d'instruction, on va pré-chercher une instruction dans la mémoire via l'interface de bus 62, le bus KBRD 69, l'unité de pré-recherche 64 et le bus K1Q 71. L'instruction est alors envoyée à l'unité de décodage des instructions 68 (voir figure 2). Pour une opération de sau- vegarde en pile, on va pré-chercher en mémoire, lors de l'étape de prérecherche, une instruction nécessitant une - opération de sauvegarde en pile. Lors de la première phase d'une première étape de déco- dage, la pré-recherche d'instructions depuis la mémoire est décodée dans le premier étage de décodage 91 de l'unité de décoage des instructions 68. Pour la première opération de sauvegarde en pile de registres de la figure 5, on a illustré ceci par D1PLA à la ligne 501 de la colonne 601. Lors de la seconde phase de la première étape de décodage pour la première instruction, la première unité de décodage 91 du décodeur d'instructions 68 délivre en sortie l'indi- cateur de commande ISPVAL sur les lignes 99 à l'unité de commande DITSPR 310 de l'unité de chemin de données 76. L'indicateur de commande ISPVAL est un signal sur deux bits. Pour une opération de sauvegarde en pile, l'indicateur ISPVAL vaudra '10' (en base 2), ce qui indiquera à l'unité de chemin de données 76 que la micro-instruction de départ anticipé courante est une instruction de sauvegarde en pile. L'envoi de l'indicateur de commande ISPVAL lors de la seconde phase de la première étape de décodage a été illus- trée figure 5 par "ISPVALI" à la ligne 503 de la colonne 601. Le chiffre "1" après "ISPVAL" indique sur la figure 5 qu'il s'agit de la première opération de sauvegarde en pile de la séquence des opérations de sauvegarde en pile. Les circuits de commande DITSPR 310 lisent le signal ISPVAL envoyé sur les lignes 99 et déterminent qu'une opération de sauvegarde en pile est sur le point de se présenter. Les circuits DITSPR 310 connaissent également le compte d'octets dont on doit décrémenter le pointeur de pile courant pour l'opération de sauvegarde en pile. Le compte d'octets sera décrémenté soit de 2 unités soit de 4 unités. Les circuits de commande DITSPR 310 de la figure- 3 com- portent une machine à états 392 oui décide si l'instruction de sauvegarde en pile actuelle suit immédiatement ou non une opération sur la pile antérieure (c'est-à-dire une opération de sauvegarde en pile ou une opération de restitution par la pile antérieure). La machine à états 392 des circuits de commande DITSPR 310 opère de la manière suivante. Le premier état est un état inactif. A l'apparition d'une opération sur la pile - qu'il s'agisse d'une sauvegarde en pile ou d'une restitution par la pile - la machine à états 392 passe alors à l'état n 2. La machine à état 392 reste à l'état n 2 si les opérations sur la pile continuent de se succéder juste les unes après les autres. Si aucune opération de sauvegarde en pile ou de restitution par la pile ne suit immédiatement l'opération actuelle de sauvegarde en pile ou de restitution par la pile, la machine à états 392 retourne alors à l'état n l. La machine à états 392 des circuits de commande DITSPR 310 détermine celui des registres ESP 122 ou ASP 124 qui place sa valeur sur le bus I 90 lors de la première phase de la seconde étape de décodage. La machine à états 392 des circuits de commande DISPTR 310 envoie un signal SPSEL, via les lignes 217, soit au registre ESP 122 soit au registre ASP 124 afin d'indiquer lequel de ces registres devra placer une donnée sur le bus I 90. Si la machine à états 392 est à l'état n l, on place alors sur le bus I 90 la valeur de décalage du pointeur de pile se trouvant dans le registre ESP 122. En revanche, si la machine à états 392 se trouve à l'état n 2, c'est alors la valeur de décalage de pointeur de pile se trouvant dans le registre ASP 124 que l'on place sur le bus I 90. Ceci signifie que, pour une opération sur la pile qui ne suit pas immédiatement une opération sur la pile antérieure, on place sur le bus I, lors de la première phase de la seconde étape de décodage, la valeur 'de décalage de pointeur de pile Se trouvant dans le registre ESP 122. Mais si une opération sur la pile suit immédiatement une opé- ration sur la-pile antérieure, on-place sur le bus I 90 la valeur de décalage de pointeur de pile se trouvant dans le registre ASP 124 et l'on ne place pas sur le bus I 90 la valeur de décalage se trouvant dans le registre ESP 122, lors de la première phase de la seconde étape de décodage. Les circuits de la machine à états 392 des circuits de commande DITSPR 310 déterminent que la première opération de sauvegarde en pile de la figure 5 ne suit immédiatement une opération sur la pile antérieure. Il s'ensuit que, lors de la première phase de la seconde étape de décodage, la valeur de décodage de pointeur de pile mémorisée dans le registre de pointeur de pile visible par un utilisateur ESP 122 est inscrite sur le bus I 90, via les lignes 165. Ceci a été illustré sur la figure 5 aux lignes 503 et 504 de la colonne 602 par l'indication "ESP" avec une flèche pointant sur "IBUS". Comme indiqué plus haut, le circuit de commande DITSPR 310 sait que cette opération de sauvegarde en pile ne suit pas immédiatement une opération sur la pile antérieure, de sorte que la valeur de décalage mémorisée dans le registre ESP 122 est inscrite sur le bus J 147 via les lignes 161. La valeur de décalage de pointeur de pile inscrite sur le bus J 147 depuis le registre ESP 122 est alors inscrite dans le verrou d'entrée 118, via les lignes 135, lors de cette même première phase de la seconde étape de décodage de la première instruction de sauvegarde en pile de registre. Cette valeur mémorisée dans le verrou 118 devient alors un signal d'entrée A appliqué à l'additionneur de pointeur de pile 114. Lors de la première phase de la seconde étape de décodage pour la première opération de sauvegarde en pile, le signal de commande GDEL est envoyé des circuits de commande DISTPR 310, via les lignes 217, au multiplexeur 116 des circuits logiques de pointeur de pile 110. Une valeur GDEL de '0' signifie qu'il faut effectuer une incrémentation ou une décrémentation de 2 octets, et une valeur GDEL de '1' indique qu'il faut effectuer une incrémentation ou une dé- crémentation de 4 octets. L'envoi du signal GDEL est illus- tré sur la ligne 506 de la colonne 602 de la figure 5 par l'indication "GDEL1". Lors de la seconde phase de la seconde étape de décodage de la première opération de sauvegarde en pile, l'unité de segmentation 74 (figure 2) forme une adresse linéaire qui est placée sur le bus LA 89. L'unité de segmentation 74 for- me cette adresse linéaire par réception de la valeur de dé- calage de pointeur de pile courante qui avait été placée sur le bus I 90 en provenance du registre ESP 122. L'unité de segmentation 74 contient un additionneur d'adresse linéaire (non représenté) qui décrémente la valeur de décalage reçue sur le bus I 90 de 2 ou bien de 4 octets, en fonction de la valeur du signal de commande GDEL. Si GDEL vaut '0', la valeur de décalage est alors décrémentée de 2 octets. Si GDEL vaut '1', la valeur de décalage sur le bus I 90 est alors décrémentée de 4 octets. L'unité de segmentation 74 ajoute alors la valeur de décalage décrémentée résultante à une adresse de base de la pile. L'adresse de base est mémo- risée dans un registre d'adresse de base de la pile dans l'unité de segmentation 74. Lors de cette même seconde phase de la seconde étape de décodage, l'adresse linéaire ainsi formée par l'unité de segmentation 74 est placée sur le bus LA 89 et envoyée à l'unité de pagination 72 et à l'unité d'antémémoire 66. La formation de l'adresse linéaire et son placement sur le bus LA 89 ont été représentés sur la figure 5 par l'indication "LAADD" sur la ligne 503 de la colonne 602. L'indication "RGDCD" sur la ligne 505 de la colonne 602 de la figure 5 indique que, lors de la seconde phase de la seconde étape de décodage, l'information provenant de la présente micro-instruction est en train d'être décodée pour déterminer celui des registres du microprocesseur 60 dont on devra sauvegarder en pile le contenu pour l'y mémoriser. Egalement lors de la seconde phase de la seconde étape de décodage de la première, instruction, l'additionneur de pointeur de pile 114 décrémente la valeur de décalage de pointeur de pile mémorisée dans le verrou d'entrée 118'de 2 ou de 4 octets, en fonction de la valeur transmise par le multiplexeur 116 à l'entrée B de l'additionneur de pointeur de pile 114 via les lignes 133. Le signal de commande GDEL envoyé -au multiplexeur 116, via les lignes 217, en pro- venance des circuits de commande DITSPR 310 indique si la décrémentation doit être de 2 octets ou de 4 octets comme indiqué plus haut (un signal GDEL de '0' indique qu'elle doit être de 2 octets et un signal GDEL de '1' indique qu'elle doit être-de 4 octets). Le fait que l'opération sur la pile est une opération de sauvegarde en pile indique que l'additionneur de pointeur de pile 11 doit décrémenter la valeur mémorisée dans le verrou d'entrée 118, et non incré- menter la valeur mémorisée dans le verrou 118. La valeur de décalage de pointeur de pile résultante décrémentée est transférée, pour mémorisation, de l'additionneur de pointeur de pile 114 au verrou de pointeur de pile 112 (également appelée "verrou de sortie'! 112) via les lignes 129, au cours de cette même seconde phase de la seconde étape de décodage de la premièreinstruction de pile. La décrémentation de la valeur de décalage de pointeur de pile par l'additionneur de pointeur de pile 114 et la mémorisation de la valeur résultante décrémentée dans le verrou de sortie de pointeur de pile 112 a été représentée par l'indication "SPADD'r sur la ligne 506 de la colonne 502 de la figure 5. Lors de la première phase du cycle d'horloge d'exécution de la première opération de sauvegarde en pile, l'unité de pagination 72 reçoit l'adresse linéaire sur le bus LA 89. L'unité de pagination 72 utilise un tampon formant anté- mémoire de pagination (non représenté) à l'intérieur de l'u- nité de pagination 72 afin de former-une adresse de pagina- tion sur 22 bits qui est placée sur le bus PA 75 et envoyée à l'unité d'antémémoire 66. Le tampon formant antémémoire de pagination est une antémémoire à adressage direct partiel- lement associative à quatre voies formant table de pages. Il conserve automatiquement les rubriques de table de pages les plus souvent utilisées par le microprocesseur 60. Lors de cette même première phase de l'étape d'exécution, une adres- se linéaire sur 10 bits est toujours présente sur le bus LA 89, qui est également relié à l'unité d'antémémoire 66. L'é- tape de formation de l'adresse de pagination est illustrée par l'indication TLB sur la ligne 502 de la colonne 603 de la figure 5. Les données provenant du registre dont on est en train de sauvegarder sur la pile les données sont, pour la première opération de sauvegarde en pile, transférées sur le bus R lors de cette même première phase de l'étape d'exécu- tion. Ce transfert de données est illustré par l'indication "RGXTR" sur la ligne 504 de la colonne 603 de la figure 5. Toujours lors de la première phase de l'étape d'exécution de la première opération de sauvegarde en pile, la valeur mise à jour du décalage de pointeur de pile conservée dans le verrou de sortie de pointeur de pile 112 est inscrite ou transférée du verrou de pointeur de pile 112 au bus J 147 via les lignes 125. La valeur mise à jour de décalage de pointeur de pile conservée sur le bus J 147 est alors transféré au registre de pointeur de pile avancé ASP 124 via les lignes 141. Cette étape est illustrée sur la ligne 106 de la colonne 603 de la figure 5 par l'indication "ASP", avec une flèche pointant en direction de "ASP". Lors de la première phase de l'étape d'exécution de la première instruction de sauvegarde en pile, la valeur de décalage de pointeur de pile conservée dans le registre ESP 122 est transférée ou inscrite dans le registre de pointeur de pile fantôme SSP 120 en tant qu'étape partielle d'une étape fantôme. Cette étape fantôme est utilisée au cas o surviendrait un défaut de page ou une discordance d'anté- mémoire, comme on le décrira plus bas. Le chargement du registre fantôme SSP 120 est illustré sur la ligne 507 de la colonne 603 de la figure 5 par l'indication "SSP" avec une flèche pointant vers "SSP". Lors de la seconde phase de l'étape d'exécution de la première instruction de sauvegarde en pile, les données pro- venant du registre dont on sauvegarde sur la pile les don- nées sont transférées vers l'antémémoire 66 du micropro- cesseur 60 pour mémorisation en une adresse mémoire formée par l'adresse de page sur le bus PA 75 et l'adresse linéaire sur.le bus LA 89. Les bits les plus à gauche de l'adresse mémoire sont constitués des 22 bits se trouvant sur le bus PA 75. Les 10 bits les plus à droite pour cette même adresse mémoire sont les 10 bits se trouvant sur le bus LA 89. La donnée est transférée vers la mémoire via l'unité d'anté- mémoire 66, le bus KBA 65, le bus KBWR 67, l'unité d'inter- façage de bus 62, le bus XA 61 et le bus 'XD 63. Les données sont alors sauvegardées sur la piie en mémoire. Ce transfert de données vers la mémoire est représenté par l'indication "CACHE" sur la ligne 502 de la colonne 605 de la figure 5. Lors de cette même seconde phase de l'étape d'exécution de-la première instruction de sauvegarde en pile, la valeur mise à jour de décalage de pointeur de pile mémorisée dans le registre de pointeur de pile avancé ASP 124 est trans- férée ou inscrite du registre ASP 124 au registre de poin- teur de pile visible par l'utilisateur ESP 122 via les. li- gnes 139. Cette étape est représentée sur la figure 5, sur la ligne 507 de la colonne 603, par l'indication "ESP" avec une flèche dirigée vers "ESP". Le quatrième cycle d'horloge de la colonne 604 de la figure 5 serait l'étape d'écriture retardée du pipeline pour la première opération de sauvegarde en pile. Néanmoins, à la fin de la seconde phase de l'étape d'exécution dans la co- lonne 603, la donnée a été sauvegardée sur la pile et le but de la- première opération de sauvegarde en pile a été at- teint. La figure 5 illustre également une seconde opération de sauvegarde en pile qui suit immédiatement la première opéra- tion de sauvegarde en pile. La première étape de décodage ("DI") commence, pour la seconde opération de sauvegarde en pile, au second cycle d'horloge, qui a été illustré par la colonne 602 sur la figure 5. Ainsi, la première étape de décodage de la seconde opération de sauvegarde en pile coïncide dans le temps avec la seconde étape de décodage de la première opération de sauvegarde en pile. De façon semblable, la seconde étape de décodage de la seconde opération de sauvegarde en pile a lieu au troisième cycle d'horloge, qui est le même cycle d'horloge que celui de l'étape d'exécution de la première opération de sauvegarde en pile. L'étape d'exécution de la seconde opération de sau- vegarde en pile a lieu au cours du quatrième cycle d'hor- loge, qui est le même cycle d'horloge que celui de l'étape d'écriture différée pour la première opération de sauvegarde en pile. L'étape d'écriture différée de la seconde opération de sauvegarde en pile a lieu lors du cinquième cycle d'hor- loge, qui correspond à la colonne 605. Les étapes du pipeline de la seconde opération de sau- vegarde en pile illustrée figure 5 sont semblables aux étapes de la première opération de sauvegarde en pile de la figure 5. La première'étape de décodage de la seconde opé- ration de sauvegarde en pile commence au second cycle d'hor- loge. Pour la seconde opération de sauvegarde en pile, la machine à états 392 des circuits de commande DITSPR 310 se trouve à l'état n02, car la seconde opération de sauvegarde en pile suit immédiatement une opération antérieure sur la pile. De la sorte, le signal de commande produit par les circuits de commande DITSPR 310 via les lignes 217 en direction des circuits de pointeur de pile 110 indique que la valeur de pointeur de pile à placer sur le bus I 90 lors de la première phase de la seconde étape 'de décodage doit être prise dans le registre ASP 124, au lieu de l'être dans le registre ESP 122. Ceci a été représenté par l'indication "ASP" avec une flèche tournée vers "IBUS" aux lignes 510 et 511 de la colonne 603 de la figure 5. La donnée se trouvant dans le registre ASP 124 est ainsi placée sur le bus I 90 au cours de la première phase du troisième cycle d'horloge, qui correspond également à l'instant o l'on place la valeur de pointeur de pile se trouvant dans le verrou de pointeur de pile 112 sur le bus J 147 pour la première instruction de sauvegarde en pile. En outre, lors de cette même première phase du troisième cycle d'horloge, la valeur du pointeur de pile sur le bus J 147 est, pour la première opération de sauvegarde en pile, en cours de transfert au registre ASP 124 via les lignes 141. Ainsi, pour la seconde opération de sauvegarde en pile, la valeur provenant'du registre ASP 124 que l'on est en train de placer sur le bus I 90 à la pre- mière-phase du troisième cycle d'horloge est la même valeur que celle qui avait été placée sur le bus J 147 en prove- nance du verrou de sortie de pointeur de pile 112 lors de cette même première phase du troisième cycle d'horloge. Ainsi, lorsqu'une opération sur la pile suit immédia- tement une opération sur la pile antérieure, le registre ASP 124 est utilisé pour placer une donnée sur le bus I 90 lors de la première phase de la seconde étape de décodage à la place du registre ESP 122 par la valeur du pointeur de pile mise à jour la plus récente mémorisée dans le registre ASP 124. Ceci vient du fait que, lors de la seconde phase de la. seconde -étape de décodage de la première opération de sauvegarde en pile sur la figure 5, il y a décrémentation par l'additionneur de pointeur de pile 114 de la valeur de pointeur de pile mémorisée dans le verrou d'entrée 118 et mémorisation de cette valeur dans le verrou de pointeur de pile 112. La figure 5 montre également une troisième opération de sauvegarde en pile ayant lieu immédiatement après la seconde opération de sauvegarde en pile. La première étape de décodage de la troisième opération de sauvegarde en pile a lieu lors du troisième cycle d'horloge, qui correspond à la colonne 603. La seconde étape de décodage pour la troisième opération de sauvegarde en pile a lieu lors du quatrième cycle d'horloge, qui correspond à la colonne 604. La phase d'exécution pour la troisième opération de sauvegarde en pile a lieu lors du cinquième cycle d'horloge, qui corres- pond à la colonne 605. Pour la troisième opération de sauvegarde en pile, la ma- chine à états 392 des circuits de commande DITSPR 310 sera également àl'état n 2, compte tenu du fait que la troisième opération de sauvegarde en pile suit immédiatement une opération de sauvegarde en pile antérieure. Ainsi, lors de la première phase de la seconde étape de décodage de la troisième opération de sauvegarde en pile, la valeur de - pointeur de pile placée sur le bus I 90 est prise du registre ASP 124 au lieu de l'être du registre ESP 122. Si une opération sur la pile ne suit pas immédiatement la troi- sième opération de sauvegarde en pile, la machine à états 392 des circuits de commande DITSPR 310 va retourner à l'état n l. Ceci signifie que la première opération sur pile de toute opération sur pile future prendra la valeur de pointeur de pile se trouvant dans le registre ESP 122 et la placera sur le bus I lors de la première phase de la seconde étape de décodage de cette opération sur la pile. Le diagramme de mise à jour du pointeur illustré sur les lignes 523 à 525 de la figure 5 montre celui des registres qui aura son contenu transféré sur le bus I 90 lors de la première phase suivante (du cycle d'horloge suivant). La machine à états 392 des circuits de commande DITSPR 310 dé- termine celui des registres ASP 124 ou ESP 122 qui aura son contenu transféré. Les transitions de l'état n l à l'état n 2, et de l'état n 2 à l'état n l, de la machine à états 392 ont lieu lors de la seconde phase, si elles ont lieu. L'indicateur de commande ISPVAL indique à la machine à états 392 si une autre opération sur la pile a été reçue. En cas de défaut de page ou de discordance d'antémémoire pour la première opération sur la pile lors du troisième cy- cle d'horloge, le registre ESP 122 récupère la valeur mémo- risée dans le registre SSP 120. En d'autres termes, le re- gistre ESP 122 va chercher sa valeur antérieure dans le registre SSP 120. Une discordance d'antémémoire a lieu lors- qu'une position de l'antémémoire 66 est vide. Un défaut de page a lieu lorsqu'une page n'a pas été encore chargée en mémoire depuis un disque. En cas de défaut de page ou de discordance d'antémémoire, la seconde opération sur la pile va alors être "gelée" à la fin de la seconde étape de déco- dage de la seconde instruction, jusqu'à ce que la première instruction sur la pile sorte de cette étape d'exécution de l'instruction. La troisième instruction, également, ne va pas entrer dans sa seconde étape de décodage. De la sorte, la requête de première instruction de décodage pour la troi- sième instruction est répétée au cours du quatrième cycle d'horloge, et l'unité de chemin de données 76 est informé qu'il s'agit d'une requête de répétition.- On peut voir d'après la figure 5 que, s'il n'y a ni défaut de page ni discordance d'antémémoire, chacune des instructions de sauvegarde en pile peut être exécutée juste en un cycle d'horloge. L'utilisation d'un additionneur de pointeur de pile dédié 114 en plus de l'additionneur d'a- dresse linéaire de l'unité de segmentation 74 permet d'avoir un parallélisme qui de façon générale, produit un gain de performances. :Le pipeline d'instructions pour une opération de resti- tution par la pile est semblable au pipeline d'instructions pour une opération de sauvegarde en pile. Il y a cependant des différences. Par exemple, l'une des différences a lieu à la seconde phase de la seconde étape de décodage. Lors d'une phase de la seconde étape de décodage pour une opération de restitution par la pile, une adresse linéaire est formée par l'unité de segmentation 74 et placée sur le bus LA 89. L'adresse linéaire est simplement formée par l'additionneur d'adresse linéaire de l'unité de segmentation 14 qui addi- tionne la valeur de décalage de pointeur de pile se trouvant sur le bus I 90 à une adresse de base conservée dans un registre de base de l'unité de segmentation 74. L'unité de segmentation ne décrémente ni n'incrémente la valeur de décalage de pointeur de pile mémorisée sur le bus I 90. A l'inverse, pour une opération de restitution par la pile, l'additionneur de pointeur de pile 114 incrémente, au lieu de la décrémenter, la valeur mémorisée dans le verrou 118 de la quantité d'octets transmise par le multiplexeur 116 à l'entrée B de l'additionneur de pointeur de pile. Une autre différence a lieu lors de la seconde phase du cycle d'horloge d'exécution d'une opération de restitution par la pile. Pour une opération de restitution par la pile, on lit la donnée en mémoire au lieu de l'inscrire en mémoire (on lit une donnée en une adresse mémoire avec les bits les plus à gauche formés des 22 bits de l'adresse de pagination sur le bus PA 75-et les bits les plus à droite formés des 10 bits de l'adresse linéaire se trouvant sur le bus LA 89). En outre, lors d'une étape d'écriture différée d'une opération de restitution par la pile, les données lues en mémoire sont ensuite mémorisées dans un registre de données. Le processus de mise à jour du pointeur de pile décrit plus haut en référence à la figure 5 est applicable lorsque l'on a deux ou plusieurs opérations sur la pile à la suite l'une de l'autre. Ces opérations peuvent, par exemple, être une sauvegarde en pile, une restitution par la pile, puis une sauvegarde en pile. Ce cas couvre également d'autres combinaisons d'opérations de sauvegarde en pile et de restitution par la pile, y compris un nombre d'opérations sur la pile à la suite les unes des autres plus élevé que trois. Par exemple, on peut avoir quatre opérations de res- titution par la pile les unes à la suite des autres, ou six opérations de sauvegarde en pile suivies d'une opération de restitution par la pile. Dans des variantes de réalisation de la présente invention, les opérations sur la pile pour- raient suivre, par exemple: (1) une opération "MOV ESP,X", * (2) une opération "ADD ESP,6" ou (3) une opération arith- métique ou autre o le registre ESP 122 est le registre de destination et le bus M 138 est utilisé lors de l'opération. La figure 6 illustre la situation d'une opération impli- quant une opération d'écriture dans un registre de pointeur de pile immédiatement suivie par une ou plusieurs opérations sur la pile. Plus précisément, la figure 6 illustre les pipelines d'instructions pour une opération de transfert ("MOV") immédiatement suivie de deux opérations de restitu- tion par la pile l'une à la suite de l'autre. L'opération "MOV ESP, (ESP+N)" implique de: (1) prendre la valeur mémo- risée dans le registre ESP 122, (2) y ajouter une valeur N afin de former une adresse, (3) aller chercher la donnée mé- morisée à cette adresse, puis (4) mémoriser cette donnée dans le registre ESP 122. Pour l'instruction de transfert de la figure 6, on n'a pas représenté l'étape de pré-recherche au cours de laquelle on va pré-chercher une instruction en mémoire. Lors de la première phase de la première étape de déco- dage de l'instruction de transfert illustrée figure 6, l'u- nité de décodage des instructions 68 décode l'instruction de- transfert. Ce décodage des instructions a été représenté par l'indication "D1PLA" sur la ligne 701 de la colonne 801 de la figure 6. Lors de la seconde phase de la deuxième étape de décodage de l'instruction de transfert, l'unité de déco- dage des instructions 68 envoie une requête pour une opé- ration impliquant une écriture dans le registre de pointeur de pile visible par l'utilisateur ESP 122. Ceci a été repré- senté par l'indication "IIBS" sur la ligne 702 de la colonne 801 de la figure 6. Lofs d'une première phase de la seconde étape de décodage de l'instruction de transfert, la valeur de décalage de pointeur de pile mémorisée dans le registre ESP 122 est transférée au bus I 90. La seconde étape de décodage de l'instruction de trans- fert tombe.au cours du second cycle d'horloge. La première étape de décodage, pour une instruction de restitution par la pile immédiatement consécutive, tombe également dans le second cycle d'horloge. Lors d'une première phase d'un second cycle d'horloge, l'unité de décodage des instructions 68 décode la première instruction de restitution par la pile. Ceci a été représenté par l'indication "DlPLA" sur la ligne 707 de la colonne 802 de la figure 6. Pour l'opération de transfert, la première étape de déco- dage tombe dans le premier cycle d'horloge, la seconde étape de décodage tombe dans le second cycle d'horloge, l'étape d'exécution tombe dans le troisième cycle d'horloge, et- l'étape d'écriture différée tombe dans le quatrième cycle d'horloge. Pour l'instruction de restitution par la pile immédia- tement suivante, la première étape de décodage tombe dans le second cycle d'horloge, la seconde étape de décodage tombe dans le troisième cycle d'horloge, la seconde étape de déco- dage est répétée lors du quatrième cycle d'horloge et l'éta- pe d'exécution a lieu lors du cinquième cycle d'horloge. Pour la seconde instruction de restitution par la pile, la première étape de décodage a lieu lors du troisième cycle d'horloge, la première étape de décodage est répétée lors du quatrième cycle d'horloge, la seconde étape de décodage a lieu lors du cinquième cycle d'horloge et l'étape d'exécu- tion a lieu lors du cinquième cycle d'horloge. Pour l'instruction de transfert, lors de la seconde phase du second cycle d'horloge, l'unité de segmentation 74 uti- lise la valeur du pointeur de pile se trouvant sur le bus I pour former, avec une adresse de base, une adresse liné- aire qui est placée sur le bus LA 89. Ceci a été représenté par l'indication "LAADD" sur la ligne 703 de la colonne 802 de la figure 6. Egalement lors de cette seconde phase du cycle d'horloge, l'unité de décodage des instructions 68 envoie une requête pour une opération de restitution par la pile à l'unité de chemin de données 76. Ceci a été représenté par l'indication "SPVL1" sur la ligne 708 de la colonne 802 de la figure 6. Lors de la première phase du troisième cycle d'horloge pour l'instruction de transfert, l'unité de pagination 72 reçoit l'adresse linéaire sur le bus LA 89. L'unité de pagi- nation 72 utilise alors son tampon formant antémémoire de pagination pour former une adresse de pagination qui est placée sur le bus PA 75. Ceci a été représenté par l'in- dication "TLB" sur la ligne 703 de la colonne 803 de la figure 6. CIMD est le champ de micro-instruction contenant les in- formations indiquant celui des registres qui sera inscrit lors de l'étape d'inscription différée de l'instruction. Sur la figure 6, pour l'opération de transfert, CIMD indique que l'on inscrira le registre ESP 122 lors de l'étape d'écriture différée. CIMD apparaît à la première phase du troisième cycle d'horloge de la figure 6. Egalement dans la première phase du troisième cycle d'horloge pour l'instruction de restitution par la pile, le décalage de pointeur de pile mémorisé dans le registre ESP 122 est placé sur le bus I 90. Ceci a été représenté sur les lignes 709 et 710 de la colonne 803 de la figure 6. A la première phase du troisième cycle d'horloge, le signal GDEL indiquant la taille en octets de la valeur d'in- crément nécessaire pour la restitution par la pile est en- voyé au multiplexeur 116, en provenance du circuits de commande DITSPR 310 via les lignes 217. Ceci a été représenté par l'indication "GDELt" sur la ligne 712 de la % colonne 803 de la figure 6. Egalement lors de la première phase du troisième cycle d'horloge, la valeur de décalage du pointeur de pile mémorisée dans le registre ESP 122 est inscrite sur le bus J 147 et, a son tour, inscrite dans le verrou 118 via les lignes 135. En outre, lors de cette 'première phase du troisième cycle d'horloge, qui est la seconde phase de décodage pour la première instruction de restitution par la pile, le se- cond décodeur 93 de l'unité de décodage des instructions 68 détecte une collision. La collision vient du fait que la première instruction de restitution par la pile va exécuter une opération LAADD d'addition d'adresse linéaire lors de la seconde phase du troisième cycle d'horloge, qui utiliserait la valeur pré- existante mémorisée dans le registre ESP 122 qui avait été placée sur le bus I 90 lors de la première phase du troi- sième cycle d'horloge. Mais le contenu du registre ESP 122 doit être mis à jour lors de la première phase à venir du quatrième cycle d'horloge. De la sorte, l'addition d'adres- ses linéaires LAADD serait erronée, à moins qu'elle n'uti- lise la valeur mise à jour devant être mémorisée dans le registre ESP 122. En d'autres termes, il y a collision en raison du fait que le registre source ESP 122 servant à l'addition d'adresse linéaire à exécuter lors de la seconde phase du troisième cycle d'horloge sera mis à jour lors de la première phase du quatrième cycle d'horloge. En outre, lors de la première phase du troisième cycle d'horloge, l'unité de décodage des instructions 68 décode la seconde instruction de restitution par la pile. Ceci a été illustré sur la figure 6 ligne 714 de la colonne 803. Lors de la seconde phase du troisième cycle d'horloge, on lit une donnée dans la mémoire du microprocesseur, en une position mémoire ayant une adresse mémoire formée de l'a- dresse de pagination se trouvant sur le bus PA 75 et de l'adresse linéaire se trouvant sur le bus LA 89. Ceci a été 2645.665 représenté par l'indication "CACHE" sur la ligne 703 de la colonne 803 de la figure 6. L'indication "RGDCD" sur la ligne 705 de la colonne 803 de la figure 6 indique que l'on décode CIMD lors de la se- conde phase du troisième cycle d'horloge. Le décodage de CIMD révèle que le registre ESP 122 sera le registre dans lequel on écrira lors de l'étape d'inscription différée de l'instruction de transfert. Lors de la seconde phase du troisième cycle d'horloge, l'unité de décodage des instructions 68 envoie un autre signal ISPVAL à l'unité de chemin de données 76, pour indi- quer que l'on a décodé une instruction de restitution par la pile. Ceci a été représenté par l'indication "ISPVAL1" sur la ligne 708 de la colonne 803. Lors de la seconde phase du troisième cycle d'horloge, l'unité de segmentation 74 forme une adresse linéaire basée sur la valeur de décalage du pointeur de pile placée sur le bus I 90. L'adresse linéaire formée par l'unité de segmen- tation 74 est placée sur le bus LA 89. La formation de l'adresse linéaire a lieu lors du passage en pipeline de la première instruction de restitution par la pile qui suit l'instruction de transfert. De la sorte, l'adresse linéaire est formée en faisant en sorte que l'unité de segmentation 74 utilisant un additionneur d'adresse linéaire additionne la valeur de décalage se trouvant sur le bus I 90 à une adresse de base mémorisée dans un registre d'adresse de base de l'unité de segmentation 74. Ceci a été représenté par l'indication "LAADD" sur la ligne 709 de la colonne 803 de la figure 6. Lors de la seconde phase du troisième cycle d'horloge, la seconde unité de décodage 93 du décodeur d'instructions 68 envoie un signal de commande de requête de répétition à l'u- nité de chemin de données 76 via les lignes 99. Ceci a été illustré par l'indication "RPTRQ" sur la ligne 170 de la colonne 803 de la figure 6. Ceci indique à l'unité de chemin de données 76 que l'unité de chemin de données 76 doit répéter des parties de la seconde étape de décodage de la première instruction de-restitution par la pile. L'unité de chemin de données 76 détecte une collision "en douceur" avec le champ CIMD. Lors de la seconde phase du troisième cycle d'horloge, on place une bulle dans le pipeline de la seconde instruction de restitution par la pile. En d'autres termes, le pipeline de la seconde instruction de restitution par la pile est gelé jusqu'à la seconde phase du quatrième cycle d'horloge. Le quatrième cycle d'horloge est le cycle d'horloge d'é- criture différée de l'instruction de transfert. Lors de la première phase du quatrième cycle d'horloge, la donnée appa- raissant sur le bus M 138 est inscrite dans le registre pointeur de pile visible par l'utilsateur ESP0 122 via les lighes 167. Egalement lors de la première phase du quatrième cycle d'horloge, on utilise le dérivateur 182 pour dériver le bus L 138 sur le bus J 147. Egalement lors de la première phase du quatrième cycle d'horloge, on utilise le dérivateur- 184 pour dériver le bus M 138 sur le bus I 90. Ainsi, le bus J 147 et le bus I 90 sont, chacun, rendus logiquement équiva- lents au bus M 138 et les données deviennent les mêmes sur le bus J 147, le bus M 138 et le bus I 90. La dérivation du bus M 138 sur le bus J 147 est illustrée sur la ligne 709 de la colonne 804 de la figure 6. La dérivation du bus M 138 sur le bus I 90 est illustrée sur la ligne 710 de la colonne 804 de la figure 6. Lors de la seconde phase du quatrième cycle d'horloge, on utilise l'unité de segmentation 74 pour former une adresse linéaire, qui est mise sur le bus LA 89. Ceci a lieu pour la première instruction de restitution par la pile de la figure 6, de sorte que l'adresse linéaire est formée en ajoutant la valeur de décalage se trouvant sur le bus I 90 à l'adresse de base se trouvant dans un registre de base de l'unité de segmentation 74. Egalement lors de la seconde phase du quatrième cycle -d'horloge, la valeur se trouvant dans le verrou 118 est in- crémentée par l'additionneur de pointeur de pile 114 de la quantité en octets qui a traversé le multiplexeur 116 vers l'entrée B de l'additionneur de pointeur de pile 114. Egalement lors de la seconde phase du quatrième cycle d'horloge, l'unité de décodage des instructions 68 envoie un signal à l'unité de chemin de données 76 indiquant que l'on a une seconde instruction de restitution par la pile. Lors d'une première phase du cinquième cycle d'horloge, l'unité de pagination 72 reçoit une valeur d'adresse liné- aire sur le bus LA 89. L'unité de pagination 72 utilise son tampon formant antémémoire de pagination pour former une adresse de pagination qui est placée sur le bus PA 75. Ceci a été indiqué par l'indication "TLB" sur la ligne 709 de la colonne 805 de la figure 6. La donnée est dérivée vers le bus J 147 lors de la première phase du quatrième cycle d'horloge, puis elle est verrouillée dans le registre 114 et envoyée dans l'addition- neur de pointeur de pile 114. Le contenu du verrou de poin- teur de pile est alors placé sur le bus J 147, lors la se- conde phase du quatrième cycle d'horloge. Ensuite, à la première phase du cinquième cycle d'horloge, le registre ASP 124 prend sur le bus J 147 la valeur correspondante. Lors de la première phase du cinquième cycle d'horloge, la valeur du pointeur de pile se trouvant dans le registre 122 est inscrite dans le registre de pointeur de pile fan- tôme SSP 120, via les lignes 137. Ceci a été illustré sur la ligne 713 de la colonne 805 de la figure 6. Lors de la première phase du cinquième cycle d'horloge, la valeur de décalage de pointeur de pile dans le registre ASP 124 est inscrite sur le bus I 90. On a illustré ceci sur les lignes 716 et 717 de la colonne 805 de la figure 6. Egalement lors de la première phase du cinquième cycle d'horloge, le signal GDEL est envoyé au multiplexeur 116 via la ligne 217 en provenance de l'unité DITSPR 310. Lors de la seconde phase du cinquième cycle d'horloge, on * lit en mémoire la donnée à l'adresse mémoire de la pile pour l'instruction de restitution par la pile. Ceci a été illus- tré par l'indication "CACHE" sur la ligne 709 de la colonne 805 de la figure 6. Egalement lors de la seconde phase du cinquième cycle d'horloge, la valeur de décalage du registre ASP 124 est 26456.63 inscrite dans le registre ESP 122; Lors de la seconde phase du cinquième cycle d'horloge, l'unité de segmentation 74 génère également une adresse linéaire, qui est placée sur le bus-LA 89. Cette génération d'adresse linéaire concerne la seconde instruction de resti- tution par la pile. De la sorte, l'adresse linéaire est for- mée en ajoutant la valeur de-décalage se trouvant sur le bus I 90 à l'adresse de base mémorisée dans le registre de base de l'unité de segmentation 74. Ceci a été illustré par l'in-- dication "LAADD" sur la ligne 716 de la colonne 805 de la figure 6. Lors du sixième cycle d'horloge pour la seconde instruction de restitution par la pile illustrée figure 6, l'unité de pagination 72- forme une adresse de pagination placée sur le bus PA 75. En outre, la valeur mise à jour du pointeur de pile dans le verrou de pointeur de pile 112 est inscrite sur le bus J 147 via les lignes 125. La valeur mise à jour sur le bus J 147 est alors inscrite dans le registre de pointeur de pile avancé ASP 124, via les lignes 141. En outre, la valeur de décalage se trouvant dans le registre ESP 122 est alors mémorisée dans le registre de pointeur de pile fantôme 120. Lors de la seconde phase du sixième cycle d'horloge, la donnée mémorisée dans la mémoire est lue à partir de l'a- dresse mémoire de la pile. En outre, la donnée mémorisée dans le registre ASP 124 est ensuite mémorisée dans le re- gistre ESP 122. Sur la figure 6, la mise à jour du pointeur sur les lignes 122, 123 et 724 indique par la flèche celui des re- gistres qui aura son contenu transféré sur le bus I 90 lors de la prochaine première phase, en cas d'arrivée d'une re- quête. 264566b REVENDICATIONS 1. Un procédé pour sauvegarder des données dans une pile en mémoire dans un calculateur numérique, caractérisé en ce qu'il comprend les étapes consistant à: (1) lors d'un premier cycle d'horloge, décoder une ins- truction nécessitant une opération de sauvegarde en pile et générer un indicateur de commande appelant une opération de sauvegarde en pile, (2) lors d'une première phase d'un second cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur un premier bus (90) une valeur de pointeur de pile mémorisée dans un premier regis- tre de pointeur de pile (122), et (b) inscrire la valeur de pointeur de pile mémorisée dans le premier registre de pointeur de pile dans un verrou d'entrée (118) d'un additionneur de pointeur de pile (114), (3) lors d'une seconde phase du second cycle d'horloge, exécuter les étapes consistant à: (a) former une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, (b) décrémenter d'une quantité différentielle la va- leur de pointeur de pile mémorisée dans le verrou d'entrée de l'additionneur de pointeur de pile, pour former une valeur mise à jour de pointeur de pile, et (c) mémoriser dans un verrou de sortie (112) la va- leur mise à jour du pointeur de pile, (4) lors d'une première phase d'un troisième cycle d'horloge, exécuter les étapes consistant à: (a) inscrire sur un second bus (147) la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie, et (b) inscrire dans un second registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile se trouvant sur le second bus, (5) lors d'une seconde phase du troisième cycle d'hor- loge, exécuter les étapes consistant à: -(a) inscrire en mémoire la donnée pour la mémoriser en un emplacement mémoire indiqué par l'adresse mémoire de pile, et (b) inscrire dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile provenant du second registre de pointeur de pile. 2. Le procédé de sauvegarde en pile d'une donnée selon la revendication 1, dans lequel le premier registre de pointeur de pile (122) est un registre de pointeur de pile visible par l'utilisateur. 3. Un procédé pour restituer des données par une pile en mémoire dans un calculateur numérique, caractérisé en ce qu'il comprend les étapes consistant à: (1) lors d'un premier cycle d'horloge, décoder une ins- - truction nécessitant une opération de restitution par la pile et générer un indicateur de commande appelant une opération de restitution par la pile, (2) lors d'une première phase d'un second cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur un premier bus (90) une valeur de pointeur de pile mémorisée dans un premier re- gistre de pointeur de pile (122), et (b) inscrire la valeur de pointeur de pile mémorisée dans le premier registre de pointeur de pile dans un verrou d'entrée (118) d'un additionneur de pointeur de pile (114), (3) lors d'une seconde phase du second cycle d'horloge, exécuter les étapes consistant à: (a) former une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, (b) incrémenter d'une quantité différentielle la va- leur de pointeur de pile mémorisée dans le verrou d'entrée de l'additionneur de pointeur de pile, pour former une valeur mise à jour de pointeur de pile, et (c) mémoriser dans un verrou de sortie (112) la va- leur mise à jour du pointeur de pile, (4) lors d'une première phase d'un troisième cycle d'horloge, exécuter les étapes consistant à: (a) inscrire sur un second bus (147) la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie, et (b) inscrire dans un second registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile se trouvant sur le second bus, (5) lors d'une seconde phase du troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) lire en mémoire la donnée en un emplacement mé- moire indiqué par l'adresse mémoire de pile, et (b) inscrire dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile provenant du second registre de pointeur de pile. 4. Le procédé de restitution d'une donnée par une pile selon la revendication 1, dans lequel le premier registre de pointeur de pile (122) est un registre de pointeur de pile visible par l'utilisateur. 5. Le procédé de restitution d'une donnée par une pile selon la revendication 3, comprenant en outre l'étape con- sistant à: (6) lors d'une première phase d'un quatrième cycle d'horloge, mémoriser dans un registre la donnée lue à l'emplacement mémoire indiqué par l'adresse mémoire de la pile. 6. Un procédé pour sauvegarder des données dans une pile en mémoire dans un calculateur numérique avec instructions en pipeline, caractérisé en ce qu'il comprend les étapes 39. consistant à: i(1) lors d'un premier cycle d'horloge, décoder une ins- truction nécessitant une opération de sauvegarde en pile -et générer un indicateur de commande appelant une opération de sauvegarde en pile, - (2) lors d'une première phase d'un second cycle d'hor- loge, exécuter les étapes consistant à: (a) si l'opération de sauvegarde en pile ne suit pas immédiatement une opération antérieure sur la pile: (i) inscrire sur un premier bus (90) une valeur de pointeur de pile, mémorisée dans un pre- mier registre de pointeur de pile (122), et (ii) inscrire la valeur de pointeur de pile mémorisée dans le premier registre de poin- teur de pile dans un verrou d'entrée (118) d'un additionneur de pointeur de pile (114), (b) si l'opération de sauvegarde en pile suit immé- diatement une opération antérieure sur la pile: (i) inscrire sur le premier bus une valeur de pointeur de pile mémorisée dans un second registre de pointeur de pile (124), et (ii) inscrire la valeur de pointeur de pile mémorisée dans le second registre de poin- teur de pile dans le verrou d'entrée de l'additionneur de pointeur de pile, (3) lors d'une seconde phase du second cycle d'horloge, exécuter les étapes consistant à: (a) former une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, (b) décrémenter d'une quantité différentielle la valeur de pointeur de pile mémorisée dans le ver- rou d'entrée de l'additionneur de pointeur de pile, pour former une valeur mise à jour de poin- teur de pile, et (c) mémoriser dans un verrou de sortie (112) la valeur mise à jour du pointeur de pile, (4) lors d'une première phase d'un troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur un second bus (147) la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie, et (b) inscrire dans le second registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile se trouvant sur le second bus, (5) lors d'une seconde phase du troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire en mémoire la donnée pour la mémoriser en un emplacement mémoire indiqué par l'adresse mémoire de pile, et (b) inscrire dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile provenant du second registre de pointeur de pile. 7. Le procédé de sauvegarde en pile d'une donnée selon la revendication 6, dans lequel le premier registre de pointeur de pile (122) est un registre de pointeur de pile visible par l'utilisateur. 8. Un procédé pour restituer des données par une pile en mémoire dans un calculateur numérique avec instructions en pipeline, caractérisé en ce qu'il comprend les étapes con- sistant à: (1) lors d'un premier cycle d'horloge, décoder une instruction nécessitant une opération de restitution par la pile et générer un indicateur de commande appelant une opération de restitution par la pile, (2) lors d'une première phase d'un second cycle d'hor- loge, exécuter les étapes consistant à: (a) si l'opération de restitution par la pile ne suit pas immédiatement une opération antérieure sur la pile: (i) inscrire sur un premier bus (90) une valeur de pointeur de pile mémorisée dans un pre- mier registre de pointeur de pile (122), et (ii) inscrire la valeur de pointeur de pile mémo-. risée dans le premier registre de pointeur de pile dans un verrou d'entrée (118) d'un - additionneur de pointeur de pile (114), (b) si l'opération de restitution par la pile suit immédiatement une opération antérieure sur la pile: (i) inscrire sur le premier bus une valeur de pointeur de pile mémorisée dans un second registre de pointeur de pile (124), et (ii) inscrire la valeur de pointeur de pile mémo- risée dans le second registre de pointeur de pile dans le verrou d'entrée de l'addition- neur de pointeur de pile, (3) lors d'une seconde phase du second cycle d'horloge, exécuter les étapes consistant à (a) former une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, (b) incrémenter d'une quantité différentielle la valeur de pointeur de pile mémorisée dans le ver- rou d'entrée de l'additionneur de pointeur de pile, pour former une valeur mise à jour de poin- teur de pile, et (c) mémoriser dans un verrou de sortie (112) la valeur mise à jour du pointeur de pile, (4) lors d'une première phase d'un troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur un second bus (. 147) la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie, et (b) inscrire dans le second registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile se trouvant sur le second bus, (5) lors d'une seconde phase du troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) lire en mémoire la donnée en un emplacement mé- moire indiqué par l'adresse mémoire de pile, et (b) inscrire dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile provenant du second registre de pointeur de pile. 9. Le procédé de restitution d'une donnée par une pile selon la revendication 8, dans lequel le premier registre de pointeur de pile (122) est un registre de pointeur de pile visible par l'utilisateur. 10. Le procédé de restitution d'une donnée par une pile selon la revendication 8, comprenant en outre l'étape con- sistant à: (6) lors d'une première phase d'un quatrième cycle d'hor- loge, mémoriser dans un registre la donnée lue à l'emplacement mémoire indiqué par l'adresse mémoire de la pile. 11. Un procédé pour exécuter, dans un calculateur numérique avec instructions en pipeline, une opération sur une pile suivant immédiatement une opération nécessitant l'inscription vers un premier registre de pointeur de pile (122) depuis un troisième bus (138), caractérisé en ce qu'il comprend les étapes consistant à: (1) lors d'un premier cycle d'horloge, décoder une instruction nécessitant l'inscription vers le premier registre de pointeur de pile depuis le troisième bus, (2) lors d'une première phase d'un second cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur un premier bus (90) une valeur pré- existante de pointeur de pile mémorisée dans le premier registre de pointeur de pile, et (b) décoder une instruction nécessitant l'opération sur la pile, (3) lors d'une seconde phase du second cycle, former une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le-premier bus, (4) lors d'une première-phase d'un troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur le premier bus la valeur préexis- - tante de pointeur de pile mémorisée dans le pre- mier registre de pointeur de pile, et (b) détecter que l'instruction nécessitant l'opéra- tion sur la pile fera appel à la valeur préexis- tante de pointeur de pile mémorisée dans le pre- mier registre de pointeur de pile avant qu'une -valeur mise à jour ne soit mémorisée dans le pre- mier registre de pointeur de pile, la détection indiquant-\ainsi une collision à venir, (5) lors d'une seconde phase du troisième cycle d'hor- loge, exécuter les étapes consistant à: (a) former une adresse mémoire de pile en utilisant la valeur de pointeur de pile se trouvant sur le premier bus, et - (b) générer un signal de commande de requête de répé- 20. tition pour la répétition d'une partie de l'opé- ration sur la pile, (6) lors d'une première phase d'un quatrième cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire une première valeur mise à jour du poin- teur de pile du troisième bus vers le-premier re- gistre de pointeur de pile, (b) dériver le troisième bus sur un second bus (147) de manière à inscrire sur ce second bus la pre- mière valeur mise à jour de pointeur de pile se trouvant sur le troisième bus, (c) dériver le troisième bus sur le premier bus de manière à inscrire sur le premier bus la première valeur de pointeur de pile mise à jour -se trou- vant sur le troisième bus, et (d) inscrire la première valeur de pointeur de pile mise à jour provenant du second bus vers le ver- rou d'entrée de l'additionneur de pointeur de pile, (7) lors d'une seconde phase du quatrième cycle d'hor- loge, exécuter les étapes consistant à: (a) former une adresse mémoire de pile en utilisant la première valeur de pointeur de pile mise à jour sur le premier bus, (b) si l'opération sur la pile est une opération de sauvegarde en pile, décrémenter alors d'une quantité différentielle la première valeur de pointeur de pile mise à jour se trouvant dans le verrou d'entrée de l'additionneur de pointeur de pile afin de former une seconde valeur mise à jour, et mémoriser la seconde valeur mise à jour dans un verrou de'sortie, et (c) si l'opération sur la pile est une opération de restitution par la pile, incrémenter alors d'une quantité différentielle la première valeur de pointeur de pile mise à jour se trouvant dans l'additionneur de pointeur de pile pour former une troisième valeur mise à jour, et mémoriser la troisième valeur mise'à jour dans le verrou de sortie, (8) lors d'une première phase d'un cinquième cycle d'hor- loge, exécuter les étapes consistant à: (a) inscrire sur le second bus la valeur mise à jour mémorisée dans le verrou de sortie, et (b) inscrire dans un second registre de pointeur de pile (124), pour mémorisation, la valeur mise à jour se trouvant sur le second bus, (9) lors d'une seconde phase du cinquième cycle d'hor- loge, exécuter les étapes consistant à: (a) si l'opération sur la pile est une opération de sauvegarde en pile, inscrire en mémoire la donnée, pour mémorisation, en un emplacement mé- moire indiqué par l'adresse mémoire de pile, (b) si l'opération sur la pile est une opération de restitution par la pile, lire la donnée en un emplacement mémoire indiqué par l'adresse mémoire de pile, et - (c) inscrire dans le premier registre de pointeur de pile, pour mémorisation, la valeur mise à jour provenant du second registre-de pointeur de pile-. 12. Le procédé pour exécuter une opération sur une pile suivant immédiatement une opération nécessitant l'inscrip- tion vers un premier registre de pointeur de pile depuis un troisième bus selon la revendication 11, comprenant en outre l'étape consistant à: (10) lors d'une première phase d'un sixième cycle d'hor- loge, mémoriser dans un registre la donnée lue à l'emplacement mémoire indiqué par l'adresse mémoire de la pile. 13. Un calculateur numérique à instructions en pipeline comprenant une mémoire, caractérisé par des circuits pour exécuter une opération sur une pile comprenant: (1) des circuits (68)-pour décoder une instruction né- cessitant une opération sur la pile et pour générer un indicateur de commande, (2) un premier bus (90), (3) un second bus (147), (4) un premier registre de pointeur de pile (122), relié au premier bus et au second bus, (5) un second registre de pointeur de pile (124), relié au premier bus, au second bus et au premier registre de pointeur de pile, (6) un additionneur de pointeur de pile (114), avec un verrou d'entrée (118) relié au second bus, (7) un verrou de sortie de pointeur de pile (112) avec: (a) une entrée reliée à une sortie de l'additionneur de pointeur de pile, (b) une -sortie reliée au pre- mier bus et (c) une sortie reliée au second bus, (8) une machine à états (392) recevant l'indicateur de commande en provenance des circuits décodeurs, cette machine-à états déterminant si l'opération sur la pile suit immédiatement ou non une opération sur la pile antérieure, (9) des circuits d'adressage, pour former une adresse mémoire de la pile, (10) des moyens pour inscrire une donnée en mémoire, (11) des circuits de commande (310), reliés de manière à - recevoir l'indicateur de commande en provenance des circuits de décodage et reliés de manière à recevoir un signal de sortie de la machine à états, et tels que: (a) lors d'une première phase du second cycle d'hor- loge: (i) si la machine à états indique que l'opé- ration sur la pile ne suit pas immédiate- ment une opération sur la pile antérieure, les circuits de commande produisent alors des signaux de commande pour: (A) inscrire sur le premier bus une valeur de pointeur de pile mémorisée dans le premier bus, et (B) inscrire dans le verrou d'entrée de l'additionneur de pointeur de pile la valeur de pointeur de pile mémorisée dans le premier registre de pointeur de pile, (ii) si la machine à états indique que l'opé- ration sur la pile suit immédiatement une opération sur la pile antérieure, les circuits de commande produisent alors des signaux de commande pour: (A) inscrire sur le premier bus une valeur de pointeur de pile mémorisée dans le second registre de pointeur de pile, et (B) inscrire dans le verrou d'entrée de l'additionneur de pointeur de pile la valeur de pointeur de pile mémorisée dans le second registre de pointeur de pile, (b) lors d'une seconde phase du second cycle d'hor- loge, les circuits de. commande produisent des -signaux de commande pour: (i) -faire former par les circuits d'adressage une adresse mémoire de pile en utilisant la valeur de pointeur de pile mise à jour se trouvant sur le premier bus, (iil) si l'opération sur la pile est une opéra- tion de sauvegarde en pile,-décrémenter alors d'une quantité différentielle le pointeur de pile mémorisé dans le verrou d'entrée de l'additionneur de pointeur de pile afin de former une valeur mise à jour du pointeur de pile, (iii) si l'opération sur la pile est une opération de restitution par la pile, incrémenter alors d'une quantité différen- tielle le pointeur de pile mémorisé dans le verrou d'entrée de l'additionneur de pointeur de pile afin de former une valeur mise à jour du pointeur de pile, et (iv) mémoriser la valeur mise à jour du poin- teur de pile dans le verrou de sortie de pointeur de pile, (c) lors d'une première phase d'un troisième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) inscrire sur le second bus la valeur mise à jour du pointeur de pile mémorisée dans le verrou de sortie de pointeur de pile, et (ii) inscrire dans le second registre de poin- teur de pile, pour mémorisation, la valeur mise à jour du pointeur de pile se trou- vant sur le second bus, (d) lors d'une seconde phase du troisième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) inscrire en mémoire la donnée, pour mémo- risation, en un emplacement mémoire indi- qué par l'adresse mémoire de pile si l'o- pération sur la pile est une opération de S sauvegarde en pile, (ii) lire la donnée en un emplacement mémoire indiqué par l'adresse mémoire de pile si l'opération sur la pile est une opération de restitution par la pile, et (iii) inscrire dans le premier registre de poin- teur de pile, pour mémorisation, la valeur mise à jour provenant du second registre de pointeur de pile. 14. Le calculateur numérique de la revendication 13, dans lequel, si l'opération sur la pile est une opération de res- titution par la pile, les circuits de commande produisent alors, lors d'une première phase d'un sixième cycle d'hor- loge, un signal de commande pour mémoriser dans un registre la donnée lue à l'emplacement mémoire indiqué par l'adresse mémoire de la pile. 15. Un calculateur numérique à instructions en pipeline comprenant une mémoire, caractérisé par des circuits pour exécuter une opération sur une pile suivant immédiatement une opération nécessitant l'inscription dans un premier re- gistre de pointeur de pile depuis un troisième bus (138), ces circuits comprenant: (1) des circuits (68) pour décoder une instruction et pour générer un indicateur de commande, (2) un premier bus (90), (3) un second bus (147), (4) un premier registre de pointeur de pile (122), relié au premier bus et au second bus, (5) un second registre de pointeur de pile (124), relié au premier bus, au second bus et au premier registre de pointeur de pile, (6) un additionneur de pointeur de pile (114), avec un verrou d'entrée (118) relié au second bus, (7) un verrou de sortie de pointeur de pile (112) avec -. - de pointeur de pile, (b) une sortie reliée au pre- mier bus et (c) une sortie reliée au second bus, (8) une machine à états (392) recevant l'indicateur de commande en provenance des circuits décodeurs, cette- machine à états déterminant si l'opération sur la pile suit immédiatement ou non une opération sur la pile antérieure, (9) des circuits pour détecter que l'opération sur la pile qui suit immédiatement l'opération nécessitant l'inscription dans le premier -registre de pointeur de pile depuis le troisième bus fera appel à une valeur de pointeur de pile préexistante mémorisée dans le premier registre de pointeur de pile avant qu'une valeur mise à jour ne soit mémorisée dans le premier registre de pointeur de pile, la détection indiquant ainsi une collision à venir, (10) un dérivateur (184), pour dériver le troisième bus sur le premier bus, (11) des circuits d'adressage, pour former une adresse mémoire de la pile, (12) des moyens pour inscrire une donnée en mémoire, (13) des circuits de commande (310), reliés de manière à recevoir (a) l'indicateur de commande en provenance des circuits de décodage, (b) un signal de sortie de la machine à états et (c) un signal de sortie du circuit détecteur de collision, et tels que: (a) lors d'une première phase d'un second cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) inscrire sur le premier bus la valeur pré- existante du pointeur de pile mémorisée dans le premier registre de pointeur de pile, et (ii) décoder une instruction nécessitant l'opé- ration sur la pile, (b) lors d'une seconde phase du second cycle d'hor- loge, les circuits de commande produisent des signaux de commande pour faire former par les circuits d'adressage une adresse mémoire de pile en utilisant la valeur préexistante du pointeur de pile se trouvant sur le premier bus, (c) lors d'une première phase d'un troisième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) inscrire sur le premier bus la valeur pré- existante de pointeur de pile mémorisée dans le premier registre de pointeur de pile, et (ii) détecter que l'instruction qui suit immé- diatement l'opération nécessitant l'ins- cription dans le premier registre de poin- teur de pile depuis le troisième bus fera appel à la valeur préexistante de pointeur de pile mémorisée dans le premier registre de pointeur de pile avant qu'une valeur mise à jour ne soit mémorisée dans le pre- mier registre de pointeur de pile, la dé- tection indiquant ainsi une collision à venir, (d) lors d'une seconde phase du troisième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) faire former par les circuits d'adressage une adresse mémoire de pile en utilisant la valeur préexistante du pointeur de pile se trouvant sur le premier bus, et (ii) générer un signal de commande de requête de répétition pour la répétition d'une partie de l'opération sur la pile, (e) lors d'une première phase d'un quatrième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) inscrire une première valeur de pointeur de pile mise à jour du troisième bus vers le premier registre de pointeur de pile, (ii) dériver le.troisième bus sur le second bus de manière à inscrire sur le second bus la première valeur mise à jour de pointeur de pile se trouvant sur le troisième bus, (iii) dériver le troisième bus sur le premier bus de manière à inscrire sur le premier bus la première valeur de pointeur de pile mise à jour se trouvant sur le troisième bus, et (iv) inscrire la première valeur de pointeur de pile mise à jour provenant du second bus vers le verrou d'entrée de l'additionneur de pointeur de pile, (f) lors d'une seconde phase du quatrième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) faire former par les circuits d'adressage une adresse mémoire de pile en utilisant la première valeur de pointeur de pile mise à jour sur le premier bus, (ii) si l'opération sur la pile est une opéra- - tion de sauvegarde en pile, décrémenter alors d'une quantité différentielle la va- leur de pointeur de pile mémorisée dans le verrou d'entrée de l'additionneur de poin- teur de pile afin de former une seconde - valeur mise à jour, et mémoriser la se- conde valeur mise à jour dans le verrou de sortie de pointeur de pile, et (iii) si l'opération sur la pile est une opéra- tion de restitution par la pile, incrémen- - ter alors d'une quantité différentielle la valeur de pointeur de pile se trouvant - dans l'additionneur de pointeur de pile pour former une troisième valeur mise à jour, et mémoriser la troisième valeur mise à jour dans le verrou de sortie de pointeur de pile, (g) lors d'une première phase d'un cinquième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) inscrire sur le second bus la valeur mise à jour mémorisée dans le verrou de sortie de pointeur de pile, et (ii) inscrire dans le second registre de poin- teur.de pile, pour mémorisation, la valeur mise à jour se trouvant sur le second bus, (h) lors d'une seconde phase du cinquième cycle d'horloge, les circuits de commande produisent des signaux de commande pour: (i) si l'opération sur la pile est une opéra- tion de sauvegarde en pile, inscrire en mémoire la donnée, pour mémorisation, en un emplacement mémoire indiqué par l'a- dresse mémoire de pile, (ii) si l'opération sur la pile est une opération de restitution par la pile, lire la donnée en un emplacement mémoire indi- qué par l'adresse mémoire de pile, et (iii) inscrire dans le premier registre de poin- teur de pile, pour mémorisation, la valeur mise à jour provenant du second registre de pointeur de pile. 16. Le calculateur numérique de la revendication 15, dans lequel, si l'opération sur la pile est une opération de res- titution par la pile, les circuits de commande produisent alors, lors d'une première phase d'un sixième cycle d'hor- loge, un signal de commande pour mémoriser dans un registre la donnée lue à l'emplacement mémoire indiqué par l'adresse mémoire de la pile.