FR2645663A1 - Procedes et circuits pour gerer une pile en memoire - Google Patents

Procedes et circuits pour gerer une pile en memoire Download PDF

Info

Publication number
FR2645663A1
FR2645663A1 FR9004374A FR9004374A FR2645663A1 FR 2645663 A1 FR2645663 A1 FR 2645663A1 FR 9004374 A FR9004374 A FR 9004374A FR 9004374 A FR9004374 A FR 9004374A FR 2645663 A1 FR2645663 A1 FR 2645663A1
Authority
FR
France
Prior art keywords
stack
stack pointer
bus
register
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9004374A
Other languages
English (en)
Other versions
FR2645663B1 (fr
Inventor
Avtar Saini
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of FR2645663A1 publication Critical patent/FR2645663A1/fr
Application granted granted Critical
Publication of FR2645663B1 publication Critical patent/FR2645663B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Lors d'un premier cycle d'horloge, on décode une instruction nécessitant une opération de sauvegarde en pile. On génère un indicateur de commande appelant une opération de sauvegarde en pile. Lors d'un second cycle a on inscrit sur un premier bus 90 une valeur de pointeur de pile mémorisée dans un premier registre 122 et b on inscrit ladite valeur de pointeur de pile dans un verrou d'entrée 118 d'un additionneur 114. Puis 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'entrée, pour former une valeur mise à jour de pointeur de pile que c l'on mémorise dans un verrou de sortie 112. Lors d'un troisième cycle a on inscrit sur un second bus 147 ladite valeur mise à jour du pointeur de pile et b on inscrit dans un second registre, pour mémorisation, la valeur mise à jour du pointeur de pile se trouvant sur le second bus. Puis a on inscrit la donnée en un emplacement mémoire indiqué par l'adresse mémoire de pile et b on inscrit dans le premier registre, pour mémorisation, la valeur mise à jour du pointeur de pile provenant du second registre.

Description

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

Claims (16)

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 -. - <(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 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.
FR9004374A 1989-04-07 1990-04-05 Procedes et circuits pour gerer une pile en memoire Expired - Fee Related FR2645663B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/334,920 US5142635A (en) 1989-04-07 1989-04-07 Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer

Publications (2)

Publication Number Publication Date
FR2645663A1 true FR2645663A1 (fr) 1990-10-12
FR2645663B1 FR2645663B1 (fr) 1994-04-15

Family

ID=23309448

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9004374A Expired - Fee Related FR2645663B1 (fr) 1989-04-07 1990-04-05 Procedes et circuits pour gerer une pile en memoire

Country Status (6)

Country Link
US (1) US5142635A (fr)
JP (1) JPH03206523A (fr)
FR (1) FR2645663B1 (fr)
GB (1) GB2231181B (fr)
HK (1) HK56395A (fr)
IE (1) IE63907B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0401745A2 (fr) * 1989-06-05 1990-12-12 Matsushita Electric Industrial Co., Ltd. Processeur de données pour accès rapide aux données dans une pile de données

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2504235B2 (ja) * 1989-11-16 1996-06-05 三菱電機株式会社 デ―タ処理装置
JPH0546407A (ja) * 1991-08-12 1993-02-26 Toshiba Corp スタツク管理システム
US5283874A (en) * 1991-10-21 1994-02-01 Intel Corporation Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
US5412782A (en) * 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5564023A (en) * 1994-06-30 1996-10-08 Adaptec, Inc. Method for accessing a sequencer control block by a host adapter integrated circuit
US5625800A (en) * 1994-06-30 1997-04-29 Adaptec, Inc. SCB array external to a host adapter integrated circuit
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US6256041B1 (en) 1995-08-04 2001-07-03 Sun Microsystems, Inc. Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US6215500B1 (en) 1995-08-04 2001-04-10 Sun Microsystems, Inc. Compression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US6747644B1 (en) 1995-08-04 2004-06-08 Sun Microsystems, Inc. Decompression of surface normals in three-dimensional graphics data
WO1997015001A2 (fr) * 1995-10-06 1997-04-24 Patriot Scientific Corporation Architecture de microprocesseur risc
US5687336A (en) * 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
JP3634379B2 (ja) * 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US6009499A (en) * 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
US6289418B1 (en) * 1997-03-31 2001-09-11 Sun Microsystems, Inc. Address pipelined stack caching method
US6167488A (en) * 1997-03-31 2000-12-26 Sun Microsystems, Inc. Stack caching circuit with overflow/underflow unit
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US6092152A (en) * 1997-06-23 2000-07-18 Sun Microsystems, Inc. Method for stack-caching method frames
US6067602A (en) * 1997-06-23 2000-05-23 Sun Microsystems, Inc. Multi-stack-caching memory architecture
US6058457A (en) * 1997-06-23 2000-05-02 Sun Microsystems, Inc. Method for storing method frames in multiple stacks
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
US5958039A (en) * 1997-10-28 1999-09-28 Microchip Technology Incorporated Master-slave latches and post increment/decrement operations
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6275903B1 (en) 1998-04-22 2001-08-14 Sun Microsystems, Inc. Stack cache miss handling
US6170050B1 (en) 1998-04-22 2001-01-02 Sun Microsystems, Inc. Length decoder for variable length data
US6108768A (en) * 1998-04-22 2000-08-22 Sun Microsystems, Inc. Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
US6237086B1 (en) 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US7028163B2 (en) * 1998-06-22 2006-04-11 Samsung Electronics, Co., Ltd. Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors
US6253312B1 (en) * 1998-08-07 2001-06-26 Ip First, L.L.C. Method and apparatus for double operand load
US6349383B1 (en) * 1998-09-10 2002-02-19 Ip-First, L.L.C. System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution
US6418518B1 (en) * 1998-09-18 2002-07-09 National Semiconductor Corporation Decoupled address and data access to an SDRAM
US6209082B1 (en) 1998-11-17 2001-03-27 Ip First, L.L.C. Apparatus and method for optimizing execution of push all/pop all instructions
US6654871B1 (en) 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
AU766816B2 (en) * 2000-03-29 2003-10-23 Canon Kabushiki Kaisha Apparatus for stack capable of multiple push or pop operations in one clock cycle
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US7496734B1 (en) * 2000-04-28 2009-02-24 Stmicroelectronics, Inc. System and method for handling register dependency in a stack-based pipelined processor
US7472259B2 (en) * 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US6961803B1 (en) * 2001-08-08 2005-11-01 Pasternak Solutions Llc Sliced crossbar architecture with no inter-slice communication
US7080236B2 (en) * 2002-09-30 2006-07-18 Intel Corporation Updating stack pointer based on instruction bit indicator without executing an update microinstruction
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7290153B2 (en) * 2004-11-08 2007-10-30 Via Technologies, Inc. System, method, and apparatus for reducing power consumption in a microprocessor
US7685406B2 (en) * 2007-03-22 2010-03-23 Advanced Micro Devices, Inc. Determination of current stack pointer value using architectural and speculative stack pointer delta values
JP2008299501A (ja) * 2007-05-30 2008-12-11 Sanyo Electric Co Ltd プロセッサ
CA2690599A1 (fr) * 2009-01-16 2010-07-16 Plastpro 2000, Inc. Porte composite ajustable
CN114816566B (zh) * 2022-04-08 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 一种指令搬移方法、系统、设备以及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3786432A (en) * 1972-06-20 1974-01-15 Honeywell Inf Systems Push-pop memory stack having reach down mode and improved means for processing double-word items

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3889243A (en) * 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
US4524416A (en) * 1980-04-15 1985-06-18 Honeywell Information Systems Inc. Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
US4890221A (en) * 1988-04-01 1989-12-26 Digital Equipment Corporation Apparatus and method for reconstructing a microstack
US5006980A (en) * 1988-07-20 1991-04-09 Digital Equipment Corporation Pipelined digital CPU with deadlock resolution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3786432A (en) * 1972-06-20 1974-01-15 Honeywell Inf Systems Push-pop memory stack having reach down mode and improved means for processing double-word items

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0401745A2 (fr) * 1989-06-05 1990-12-12 Matsushita Electric Industrial Co., Ltd. Processeur de données pour accès rapide aux données dans une pile de données
EP0401745A3 (fr) * 1989-06-05 1991-10-30 Matsushita Electric Industrial Co., Ltd. Processeur de données pour accès rapide aux données dans une pile de données

Also Published As

Publication number Publication date
IE63907B1 (en) 1995-06-14
IE901209L (en) 1990-10-07
FR2645663B1 (fr) 1994-04-15
GB2231181B (en) 1993-04-21
GB9003475D0 (en) 1990-04-11
GB2231181A (en) 1990-11-07
HK56395A (en) 1995-04-21
JPH03206523A (ja) 1991-09-09
US5142635A (en) 1992-08-25

Similar Documents

Publication Publication Date Title
FR2645663A1 (fr) Procedes et circuits pour gerer une pile en memoire
FR2489578A1 (fr) Structure d&#39;organisation pour memoire tampon
AU608921B2 (en) Jump prediction
US11797473B2 (en) Accelerator architecture on a programmable platform
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
EP1736887A2 (fr) Repertoire de pages memoire
FR2474721A1 (fr) Dispositif de memoire d&#39;antememoire
EP0434483A1 (fr) Processeur à plusieurs unités de traitement microprogrammées
FR2667706A1 (fr) Antememoire hierarchique a circuits integres.
FR2682506A1 (fr) Processeur a memoire cache utilisant des adresses a zone de repere et zone de decalage ainsi que memoire cache pour processeurs de ce type.
TW201709052A (zh) 微處理器的前端以及執行零空泡條件分支預測的電腦實施方法
EP1617335A1 (fr) Procédé de programmation d&#39;un contrôleur de DMA dans un système sur puce et système sur puce associé
TW200525354A (en) Microprocessor and apparatus for performing fast speculative pop operation from a stack memory
CN101356487B (zh) 动态自行衰变装置架构
EP0006478B1 (fr) Dispositif programmable de verrouillage de signaux de commande dans un système de traitement de données
FR2800482A1 (fr) Procede de traitement des instructions dans un processeur et processeur le mettant en oeuvre
EP1607878A1 (fr) Procédé et programme d&#39;ordinateur de traitement d&#39;une adresse virtuelle pour la programmation d&#39;un contrôleur de DMA et système sur puce associé
CN101657803A (zh) 具有内部位fifo电路的计算单元
FR2764716A1 (fr) Procede de modification de sequences de code et dispositif associe
EP0515238B1 (fr) Dispositif et méthode pour la gestion de plusieurs files d&#39;attente indépendantes dans un espace mémoire commun et banalisé
JP2006155374A (ja) 分岐予測装置および分岐予測方法
FR2805368A1 (fr) Systeme et procede utilisant l&#39;acces speculatif a l&#39;antememoire pour des performances ameliorees
EP0435718B1 (fr) Processeur à plusieurs unités microprogrammées avec mécanisme d&#39;exécution anticipée des instructions
WO1990001736A1 (fr) Procede et dispositif de protection et d&#39;universalisation d&#39;un logiciel
EP1748355B1 (fr) Dispositif d&#39;interfaçage unidirectionnel de type FIFO entre un bloc maître et un bloc esclave et bloc esclave correspondant

Legal Events

Date Code Title Description
ST Notification of lapse