Brevet FR2598835A1 — publié le 19871120

@:L4 2598835 CACHE DE BLOCS DE DONNEES EMPILES SUR UNE PUCE DE MICROPROCESSEUR La présente invention concerne un système de traitement de données, plus particulièrement un appareil pour minimiser les références de mémoire principale initialisées pendant l'exécution d'instructions d'appel/retour. Les progrès rapides dans la technologie des circuits intégrés à haute intégration et les techniques de conception ont permis aux microordinateurs d'approcher les performances et les sophistications d'un super mini-ordinateur. Tandis que les processeurs deviennent plus rapide, le trafic entre le processeur et la 10 mémoire principale externe à la puce augmente, en provoquant un goulot d'étranglement des performances. Dans les systèmes de l'art antérieur, ce goulot d'étranglement a été réduit en utilisant une mémoire locale sur la puce (appelée cache) pour mémoriser des données de mémoire utilisées fréquemment. Si les 15 données requises par le processeur se trouvent dans le cache, une référence de mémoire externe à la puce est évitée puisque les données peuvent être recherchées directement à partir du cache. D'autres réductions dans le trafic de mémoire pourraient être atteintes si la conception du cache était étendue pour inclure 20 des recherches d'instructions. Par exemple, si des informations concernant les instructions d'appel et de retour étaient disponibles localement sur la puce, les instructions d'appel et de retour pourraient être exécutées sans référence à la mémoire externe à la puce. Le trafic de bus-mémoire réduit résultant 25 réduirait également la probabilité pour qu'une instruction de chargement ou de mémoire ait à attendre un accès au bus-rrmémoire. En conséquence, un objet de la présente invention est de prévoir un appareil pour minimiser les références de mémoire principale survenant pendant l'exécution des instructions d'ap30 pel/retour. En bref, l'objet ci-dessus est atteint selon la présente invention en prévoyant une pluralité de registres globaux sur la puce de microprocesseur. L'un des registres globaux est un registre pointeur de blocs de données contenant le 35 pointeur de bloc en cours, et le reste des registres globaux est disponible pour un processus en cours en tant que registres généraux. Un mécanisme de cache de blocs empilés est prévu comprenant un groupe d'ensembles de registres constitué d'une pluralité d'ensembles de registres, chaque ensemble de registres 5 étant constitués de plusieurs registres locaux sur la puce. Quand une instruction d'appel est décodée, un ensemble de registres parmi le groupe d'ensembles de registres est alloué à la procédure appelée, et le registre pointeur de blocs est initialisé. Quand une instruction de retour est décodée, l'ensemble de 10 registres est libéré pour être alloué à un autre processus appelé par une instruction d'appel ultérieure. Si le groupe d'ensembles de registres est vidé, les contenus d'un ensemble de registres associés à une procédure précédente sont sauvegardés dans la mémoire principale, et cet ensemble de registres est alloué à la 15 procédure en cours. Selon un aspect de l'invention, les registres locaux d'un ensemble de registres associés à une procédure contiennent des informations de liaison incluant un pointeur vers le bloc précédent et un pointeur d'instructions, validant ainsi la 20 plupart des instructions d'appel et de retour pour les exécuter sans qu'il soit nécessaire de faire des références quelconques à une mémoire externe à la puce. L'invention présente l'avantage qu'elle réduit notablement la sauvegarde et la restauration des registres qui 25 doivent être effectuée quand on traverse des frontières de sous-programmes. L'invention présente également l'avantage que, puisque les ensembles de registres locaux sont cartographiés dans les blocs empilés, les informations de liaison qui apparaissent 30 normalement dans les blocs empilés (c'est-à-dire le pointeur vers - un bloc précédent, le pointeur vers les instructions sauvegardées) sont contenues dans les registres locaux. Ceci signifie que la plupart des instructions d'appel et de retour s'exécutent sans entraîner de référence à une mémoire externe à 35 la puce. Les objets, caractéristiques et avantages ci-dessus ainsi que d'autres de l'invention apparaîtront à partir de la description plus particulière de modes de réalisation préférés de l'invention faite en relation avec les dessins joints parmi lesquels: La figure 1 est un schéma sous forme de blocs fonctionnels illustrant chacun des composants principaux du microprocesseur dans lequel l'invention est mise en oeuvre; La figure 2 est un schéma sous forme de blocs d'un environnement d'exécution quand on exécute une instruction du 10 système représenté en figure 1; La figure 3 est un schéma de la structure de blocs empilés à l'intérieur de l'espace d'adresses linéaires en cours de l'environnement d'exécution illustré en figure 2; La figure 4 est un schéma de la. structure de piles 15 d'appel dans l'espace d'adresses linéaires en cours de l'environnement d'exécution représenté en figure 2; et La figure 5 représente la cartographie des ensembles de registres du microprocesseur dans la pile de programmes en mémoire. Comme le représente la figure 1, le microprocesseur est subdivisé de façon logique en sept modules principaux: le module de recherche d'instructions (10), le décodeur d'instructions (12), le séquenceur de micro-instructions (14), le tampon de traduction externe (18), le module de virgule flottante (22), 25 le séquenceur de bus local (20) et le module d'exécution d'entiers (24). Les trajets de communication entre tous ces modules comprennent un bus de donnés à 32 bits, un bus de micro-instructions à 29 bits (26), et un signal de validation de micro30 instructions (28). Le bus de microinstructions commande et synchronise les activités des modules autonomes. Chacun des modules est décrit brièvement ci-après. Le décodeur d'instructions (ID) 12 décode et commande l'exécution d'instructions (macrocode). L'ID décode des instruc35 tions, réalise un adressage et une recherche d'opérande, traite des instructions de branchement (c'est-à-dire une manipulation de pointeur d'instructions) et, ou bien émet des micro-instructions d'exécution (pour des instructions simples) ou bien initialise des organigrammes de microprogrammes (pour des instructions complexes). Le module de recherche d'instructions (IFU) 14 recherche, pré-recherche, et cache des instructions en provenance de la mémoire pour qu'elles soient utilisées par l'ID. Le IFU maintient également six pointeurs d'instructions qui suivent les instructions en chaîne ou pipeline. Le IFU cache les blocs 10 d'instructions utilisés les plus récemment et maintient l'alimentation du décodeur (11) par un flux d'instructions. Il contient également les pointeurs d'instructions et la logique de réduction d'opérande commandée par 'ID. Le séquenceur de micro-instructions (MIS) séquentialise 15 les flux de microcodes pour traiter l'initialisation de puce, des macro-instructions qui sont trop complexes pour être traitées directement, et des états d'exception et d'interruption. Le MIS contient une ROM de microcodes de 3K x 42 bits et une logique de séquentialisation pour les flux de microcodes. 20 Les fonctions que réalise le MIS comprennent la recherche de la micro-instruction suivante, le branchement du microprogramme, le traitement de conditions d'exception, le maintien d'un tableau de bord sur la liste de registre et, en relation avec l'ID, la détection de frontières de macro-instructions et le traçage des 25 événements. Le module d'exécution d'entiers (IEU) exécute la plupart des microinstructions fournies par l'ID et le MIS. Il contient les registres visibles pour le programmeur, les registres de travail utilisés par les microcodes, l'ALU, le 30 décaleur totalisateur, et la logique nécessaire pour exécuter ces instructions. Le IEU contient 100 registres de 32 bits, une ALU de 32 bits, et un décaleur totalisateur de 32 bits. Il constitue un trajet prioritaire d'ALU qui permet aux opérations d'ALU d'être exécutées à la cadence d'une par cycle. Il contient 35 également un fichier de registre à accès unique auquel on peut accéder deux fois en un cycle de sorte que les résultats de l'opération précédente peuvent être mémorisés dans le même cycle que celui pendant lequel le nouvel opérande est recherché pour l'opération en cours. Le module de virgule flottante (FPU) contient la 5 logique nécessaire pour réaliser les opérations de virgule flottante, et multiplier et diviser par un entier. Le FPU contient quatre registres à virgule flottante, plusieurs registres temporaires, un décaleur de 68 bits qui peut décaler jusqu'à 16 bits dans l'une ou l'autre direction, un additionneur 10 de mantisse de 69 bits, un dispositif de recherche de bit significatif, une ROM de mantisse, deux trajets de données internes de 68 bits, et un trajet de données d'exposant séparé qui comprend son propre additionneur 16 bits et ses registres. Il exécute des multiplications et des divisions par des entiers et toutes les opérations à virgule flottante, y compris les algorithmes de liaison pour les instructions transcendentales. Le tampon de traduction externe (TLB) réalise la traduction d'adresse nécessaire pour mettre en oeuvre les mécanismes de mémoire virtuelle. Le TLB réalise une traduction 20 d'adresses et une protection de mémoire en utilisant un tableau associatif de descripteurs de mémoire et des entrées de tables de pages. Il contient un cache d'adresses à 48 entrées, un aditionneur d'adresses à 6 bits, et un matériel de vérification de protection de mémoire. Chaque entrée dans le cache d'adresses 25 contient 27 bits de CAM (mémoire adressable par son contenu) et 38 bits de RAM (mémoire vive). Le TLB permet plusieurs mécanismes de traduction d'adresses pour permettre à l'utilisateur de choisir le type de protection de mémoire à partir de plusieurs mécanismes classiques (mise en page ou segmentation). Le séquenceur de bus local met en série et sous forme de séquences des accès externes au bus. Le séquenceur de bus local contient le matériel d'interface vers le bus local externe, traite le protocole de bus, et reconnaît des éléments externes (par exemple interruptions, initialisation). Il contient un 35 registre FIFO (premier entré-premier sorti) de sortie, d'adresses et de données, à 33 bits, un FIFO de données incidentes à 33 bits, et un séquenceur. Le FIFO de sortie permet de mettre en file jusqu'à trois requêtes dans le séquenceur de bus local de sorte que le reste du processeur peut procéder à l'exécution, indépendamment du temps d'attente d'accès en mémoire. Les tampons 5 FIFO d'entrée lisent des données revenant de la mémoire externe jusqu'à ce qu'un cycle libre soit disponible pour le transfert des données vers leur destination. Une pluralité de registres globaux 21 est prévue. Un premier des registres globaux est un registre pointeur de blocs 10 contenant le pointeur de bloc en cours, et le reste des registres globaux est disponible pour un processus en cours sous forme de registres généraux. Un cache de registres (blocs empilés) 23 est prévu et comprend un groupe d'ensembles de registres constitué d'une pluralité d'ensembles de registres, chaque ensemble de 15 registres étant constitué de plusieurs registres locaux. Quand une instruction d'appel est décodée, un ensemble de registres parmi le groupe d'ensembles de registres est alloué à la procédure appelée, et le registre pointeur de blocs est initialisé. Quand une instruction de retour est décodée, l'ensemble de 20 registres est libéré pour être alloué à une autre procédure appelée par une instruction d'appel suivante. Si le groupe d'ensembles de registres est vidé, les contenus d'un ensemble de registres associés à une procédure précédente sont sauvegardés dans la mémoire principale et cet ensemble de registres est 25 alloué à la procédure en cours. Les registres locaux d'un ensemble de registres associés à une procédure contiennent des informations de liaison comprenant un pointeur vers le bloc précédent et un pointeur d'instructions, permettant ainsi à la plupart des instructions d'appel et de retour d'être exécutées 30 sans qu'il soit nécessaire de faire une quelconque référence à une mémoire externe à la puce. Ensemble d'instructions Un processus voit un espace d'adresses linéaire plan, adressé par des nombres à 32 bits à partir desquels il 35 alloue un espace de données, d'instructions et de piles. Une instruction d'appel crée un nouveau bloc de piles (enregistrement d'activation) sur une pile allouée séquentiellement. L'ensemble d'instructions du microprocesseur est similaire dans sa conception à ceux des machines RISC (ordinateurs à ensemble réduit d'instructions). Toutes les instructions ont une 5 longueur de 32 bits et doivent être alignées sur des frontières de mots, et seules des instructions de charge, de mémoire et de branchement renvoient en mémoire (toutes les autres renvoient au registre). La figure 2 représente l'environnement d'exécution. 10 L'environnement d'exécution consiste en un espace d'adresses linéaires de 2**32 multiplets (30) et 36 registres. Parmi les 36 registres, 16 sont des registres globaux de 32 bits (32), 16 sont des registres locaux de 32 bits (34), et les 4 autres sont des registres à virgule flottante à 80 bits (36). Les registres 15 locaux sont associés à un mécanisme appelé cache de blocs empilés. Quand une procédure est appelée, un nouvel ensemble de registres locaux est alloué à partir d'un groupe de registres sur la puce et est libéré par une procédure de retour. Le present mode de réalisation de l'invention prévoit 4 ensembles (64) de 20 registres locaux internes à la puce, mais ce nombre est transparent pour le programmeur. Le modèle de registre comprend 16 registres globaux et 4 registres à virgule flottante qui sont préservés sur les frontières de la procédure, et des ensembles multiples de 16 25 registres locaux (ou blocs) qui sont cartograhiés de façon associative dans chaque bloc empilé. A tout instant, une instruction peut adresser 36 de ces registres de la façon suivante: TYPE DE REGISTRE NOM DE REGISTRE Registre global GO...G15 Registre à virgule flottante FPO. FP13 (opérande à virgule flottante) Registre local LO. L15 A tout instant, on peut adresser trente-deux registres 1 1 à 32 bits et quatre registres à 80 bits à virgule flottante (les 32 registres peuvent également être utilisés pour maintenir des valeurs de virgule flottante). Parmi les 32 registres, 16 sont des registres globaux et 16 sont des registres locaux. La différence est que les 16 registres globaux ne sont pas affectés quand on traverse des frontières de procédure (c'est-à-dire qu'ils se comportent comme des registres "normaux" dans d'autres processeurs) alors que les registres locaux sont affectés par les instructions d'appel et de retour. Quand une instruction d'appel est exécutée, le processeur alloue à la procédure appelée un nouvel ensemble de 16 registres locaux à partir d'un groupe de quatre ensembles de registres internes à la puce. Si le groupe de quatre registres du processeur est vidé, le processeur réalloue automatiquement un ensemble de registres en prenant un ensemble de registres associé à une procédure antérieure et en sauvegardant les contenus de cet ensemble de registres en mémoire. Les contenus de l'ensemble de registres de la procédure antérieure sont sauvegardés dans les 16 premiers mots de ce bloc de pile de procédure dans la mémoire. 20 Pour cette raison, le mécanisme est appelé cache de blocs empilés. L'instruction de retour amène l'ensemble de registres locaux en cours à être libérés (pour être utilisés pour un appel ultérieur). Il existe seize registres globaux (32) associés à un processus; ils sont sauvegardés dans le bloc de commande du 25 processus quand le processus n'est pas en cours d'exécution. Les registres globaux ne sont pas cartographiés de façon associative dans le bloc de commande de processus. Parmi les seize registres à 32 bits, le registre G15 contient le pointeur de bloc en cours FP et les registres généraux 30 GO... G14 sont des registres à usage général. Le pointeur de bloc FP contient l'adresse linéaire (pointeur) dans l'environnement d'exécution en cours pour le bloc de pile en cours (bloc supérieur). Puisque les blocs de la pile sont alignéjs avec les frontières de 64 multiplets, les 6 bits d'ordre inférieur du 35 pointeur de bloc sont ignorés et toujours interprétés comme étant des zéros. Ce registre est initialisé par des appels et restauré par des retours. Une référence à un registre en tant qu'opérande supérieur à 32 bits utilise les registres présentant des numéros de registres plus élevés successifs. Registres à virgule flottante Il existe quatre registres à virgule flottante (34) associés à un processus; ils sont sauvegardés dans le bloc de commande du processus quand le processus n'est pas en cours d'exécution. Les registres à virgule flottante ne sont pas 10 cartographiés de façon associative dans le bloc de commande du processus. Des nombres à virgule flottante sont mémorisés selon un format réel étendu dans les registres à virgule flottante. On accède aux registres à virgule flottante seulement en tant qu'opérandes d'instructions de virgule flottante (mais de telles instructions peuvent également utiliser les registres locaux et globaux à 32 bits). Commandes arithmétiques Les commandes arithmétiques (36) sont utilisées pour 20 commander les propriétés arithmétiques et de défaut des instructions numériques ainsi que pour mémoriser des codes de conditions. Quand un processus est suspendu, les informations de commandes arithmétiques sont sauvegardées dans le bloc de commande du processus. Pointeur d'instruction Le pointeur d'instructions (38) est une adresse linaire (pointeur) dans l'espace d'adresse linéaire en cours vers le premier multiplet de l'instruction en cours. Puisque les instructions doivent commencer sur des frontières (4 multiplets) 30 de mots, les 2 bits d'ordre inférieur du pointeur d'instructions sont ignorés et supposés être nuls. Registres locaux ou blocs On se référera à la figure 3. Les registres LO.. .L15, à savoir les registres locaux, ne désignent pas des registres du 35 type classique; ils désignent les seize premiers mots des blocs en cours. Ainsi, le registre LO est cartographié en adresse S * 0 : S f ":: :;0: :: : : : : S: ::: ' : : :0 -:: : 'a: A: : f 0: - r : 0; 5 0::;. S z D-. T: 0::: 0:: 0 , :,00 10 ., - f. 0 : - 0 : -. X x 15 :: * D 0.',: . - '-:; d. 0 -- 20 C, Q 7' 0 0 0X7 *; d' ::. ô: :, E.. ' A. ,, f 0 -0- 25 * 4 :. :: :. g \. : r, -, g d- 0 3 0 A _. . -- 0 \ . f u.;, A::. V. 35 Q X:: '-:., 7 , A, -: : linéaire FP+0 à FP+3, le registre Li est cartographié en adresse linéaire FP+4i à FP+4i+3, et ainsi de suite. Un cache de blocs empilés multiples est prévu. Il existe plusieurs groupes de registres à haute vitesse, un groupe par activitation de procédure. Le programme n'a pas à sauvegarder et à restaurer les registres de façon explicite. Blocs empilés Le bloc empilé, représenté en figure 3, est une partie contiguë de l'espace d'adresse linéaire en cours, contenant des données sous la forme d'une pile. Il existe un bloc de pile par procédure activée qui contient des variables locales, des paramètres et des informations de liaison. Une opération d'appel acquiert un nouveau bloc de pile, une opération de retour le libère. Quand un nouveau bloc est acquis, il est aligné sur une frontière à 64 muliplets. Les champs dans les blocs empilés de la figure 3 sont définis de la façon suivante: Zone de remplissage. Cette zone 42 est utilisée pour aligner le registre de bloc FP sur la frontière suivante à 64 multiplets. La dimension de cette zone varie de 0 à 63 multiplets. Quand une opération d'appel est réalisée, une zone de remplissage est ajoutée pour arrondir le bloc de piles (SP) de l'appeleur à la frontière suivante à 64 multiplets pour former le FP de ce bloc. Si le SP de l'appeleur est déjà aligné, la zone de remplissage est absente. Etat de bloc (LO). L'état de bloc 42 enregistre les informations associées au bloc, après un appel, pour les utiliser lors d'un retour à partir du bloc. Les champs et l'état de bloc sont définis de la façon suivante: Validation de Trace, T (Bit 0). Lors d'un appel de superviseur, ce bit enregistre le bit de validation de trace à l'instant de l'appel. Lors du retour, ce bit est utilisé pour restaurer le bit de validation de trace de l'appeleur dans le processus si le mode d'exécution du bloc de retour est le mode superviseur. Etat de Retour, RRR (Bits 1 à 3). Ce champ de 3 bits enregistre le mécanisme d'appel utilisé pour la création de ce bloc et utilisé pour sélectionner le mécanisme de retour à utiliser lors du retour. Les codages de ce champ sont les suivants: 10 000 Local 001 Superviseur 010 Tnterruption 011 Pas de défaut de sous-système Sous-système 101 Réservé Interruption repos/arrêt 111 Réservé Préretour, R (Bit 4). Lors d'un retour d'un trace de préretour est à un, un événement de (s'il est validé) survient avant que des Trace de bloc quand le bit de 15 trace de préretour associations quelconq soient réalisées. Ce Pointeur adresse linéaire 42 v 20 Puisque les blocs multiplets, seuls leE sauvegardés. Si l'étal tème, ce champ conti ues c bit e de b] vers sont 26 t de ent d'actions avec l'opération de retour ne st initialisé à zéro lors d'un appel. loc précédent, PFP (bits 6 à 31). Une le premier multiplet du bloc précédent. alignés vers les frontières à 64 bits les plus significatifs du FP sont retour indique un transfert du sous-sysles 26 bits les plus significatifs de l'adresse linéaire du bloc le plus supérieur (le dernier) dans ce 25 bloc d'appel avant l'appel. Autrement, le bloc le plus supérieur est le bloc d'appel. Pendant un appel, les cinq bits inférieurs de l'état de bloc sont initialisés de la façon suivante: 0 000 --- appel local ou appel de superviseur en provenance de l'état de superviseur 0 001T -- appel du superviseur à partir du mode d'utilisateur 0 010 --- appel d'interruption 0 011 --- appel de non défaut de sous-système 0 100 --- appel du soussystème 0 110 --- appel d'interruption à partir d'un état de repos ou d'arrêt. T est la valeur d'un bit de trace défini précédemment. "-" indique un bit réservé, alors que "x" indique un bit sans influence. Lors de tous les retours, les bits sont interprétés de la façon suivante: 1 xxxx -- générer une trace de pré-retour 0 OOOx -- réaliser un retour local O01T -- dans le mode superviseur, réaliser un retour de superviseur. L e bit T est assigné au bit de validation 10 de trace dans les commandes de processus et le bit de mode d'exécution est établi pour l'utilisateur. Autrement, réaliser un retour local 001Ox -- réaliser un retour d'interruption 0 011x -- réaliser un retour de défaut 0 100x -- réaliser un retour de sous-système 0 101x -- OPERATION. Défaut RETOUR 0 110x -réaliser un retour d'interruption de repos/arrêt 0 111x -- OPERATION. Défaut RETOUR Pointeur de pile, SP (L1). Une adresse linéaire 44 20 vers le premier multiplet libre de la pile, c'est-à-dire l'adresse du dernier multiplet de la pile plus un. SP est initialisé par l'opération d'appel pour pointerFP plus 64. Pointeur d'instruction de retour, RIP (L2). Quand une opération d'appel est réalisée vers un nouveau bloc, le retour IP 25 46 est sauvegardé ici. Quand le processus est interrompu, le pointeur d'instruction de l'instruction suivante est mémorisé ici. Il contient une adresse linéaire à 32 bits vers laquelle la commande est renvoyée après un retour vers ce bloc. Un appel de procédure sauvegarde le IP dans un 30 registre du bloc en cours. Puisque des appels implicites de procédure peuvent prendre place (par suite des défauts et interruptions), les programmes n'utilisent pas ce registre dans d'autres buts. La pile s'accroît (figure 4) à partir des adresses 35 inférieures vers les adresses supérieures. La figure 5 représente la cartographie des ensembles de registres à microprocesseur dans la pile de programme en mémoire. La page, ou objet simple, dans laquelle les 64 premiers multiplets d'un bloc sont cartographiés doit présenter 5 une durée de vie locale. La durée de vie de la page ou objet simple est vérifiée pendant un appel. Cette restriction est nécessaire pour assurer une manipulation efficace des adresses (AD) dans les registres locaux. Structure d'espace d'adresse linéaire Comme cela est représenté en figure 2, chaque environnement d'exécution définit un espace d'adresse linéaire de 32 bits. L'espace d'adresse linéaire est partagé en quatre régions. Les trois premières régions d'un environnement d'exécution sont spécifiques au processus en cours (c'est-à-dire définies par le 15 bloc de commande de processus). La composition des régions spécifiques au processus peut être modifiée par un appel/retour du sous-système. La quatrième région d'un environnement d'exécution est partagée par tous les processus (c'est-à-dire définie par le bloc de commande du processeur). Il n'y a pas restriction sur les 20 emplacements ou les instructions, les blocs empilés ou les données sont localisés dans l'espace d'adresse linéaire. Mécanisme de procédure locale Une procédure commence à toute adresse de mot arbitraire dans un espace d'adresse linéaire. Les appels et les retours de 25 procédure utilisent une pile dans l'espace d'adresse linéaire. Instructions CALL (appel) CALL-EXTENDED (appel étendu) CALL et CALLEXTENDED invoquent la procédure au niveau 30 de l'adresse spécifiée. CALL spécifie la procédure sous la forme IP plus un déplacement muni d'un signe de 24 bits. CALL-EXTENDED spécifie la procédure en utilisant une adresse effective de mémoire générale. CALL-EXTENDED contient également un opérande qui devient AP dans le nouveau bloc. Un nouveau bloc de pile est alloué pendant l'opération d'appel et le flux de commande est transféré aux procédures spécifiées. L'environnement d'exécution reste inchangé. RETURN (retour) L'instruction RETURN retransfère la commande à l'environnement d'adressage de la procédure appelante et libère le bloc 5 de pile de la procédure appelée. L'exécution d'instructions continue au niveau de l'instruction pointée par le RIP dans le bloc de la procédure appelante. MODIFY-AC (modifier commandes arithmétiques) CONVERT-ADRESS (convertir adresse) MODIFY-AC est utilisé pour lire ou modifier les commandes arithmétiques en cours. Comme les adresses (AD) de régions ne sont pas directement accessibles, l'instruction CONVERTADRESS peut être utilisée pour convertir une adresse linéaire en une adresse virtuelle. Gestion du processus Un processus ou tâche logicielle est représenté par un bloc de commande de processus. Deux moyens sont prévus pour la commande de la commutation du processus. L'un se fait par deux instructions (sauvegarder le processus et reprendre le processus) 20 qui permettent à un système opératif de commuter les processus de façon explicite. L'autre est une fonction de programmation etd'orientation de processus basée sur une priorité qui est construite dans le processeur. Quand on utilise ce dernier mécanisme, le processeur orientera automatiquement les processus à 25 partir d'une file en mémoire. Le processeur garde trace du temps d'exécution cumulatif de chaque processus et fournit également une gestion de tranche temporelle optionnelle. Pour cette dernière, chaque fois qu'un processus est exécuté plus longtemps qu'une durée prescrite, 30 le processeur générera un défaut ou mettra en file le processus sur la file des processus disponibles et orientera vers un autre processus. Quand l'orientation automatique d'un processus est utilisée, un ensemble d'instructions de communication interpro35 cessus est prévu, ces instructions étant similaires aux services normalement prévus dans les coeurs de systèmes fonctionnant à base de logiciel. Elles assurent une aide à la communication du message parmi les processus. Tracé et support d'ICE Une correction de défauts initiaux du logiciel et un 5 tracé sont assurés au moyen d'un registre de commande de trace qui fait partie de chaque processus. La trace commande également la détection de toutes combinaisons des événements suivants: Exécution d'instruction (c'est-à-dire étape unique) Exécution d'une instruction de branchement effectué 10 Exécution d'une instruction d'appel Exécution d'une instruction de retour Détection du fait que l'instruction suivante est une instruction de retour Exécution d'un appel de superviseur ou de soussystème 15 Point de rupture (point de rupture matériel ou exécution d'une instruction de point de rupture) Quand un événement de trace est détecté, le processeur produit un défaut de trace pour fournir une commande à un correcteur ou suiveur de logiciel. Le processeur contient deux 20 registres de points de rupture d'instructions dans lesquels un dispositif de correction de défaut peut placer les adresses de deux instructions. Bus externe Le bus du microprocesseur est un bus multiplexé à 32 25 bits avec une capacité de transfert par salves. Le mécanisme de transfert par salves (qui permet à des mots multiples d'être transférés lors de cycles successifs) permet au bus d'être défini comme étant multiplexé. Des transferts de salves peuvent prendre place pour 1, 2, 3, ou 4 mots. Pendant le cycle d'adresse, le 30 processeur indique le nombre de mots de la requête dans les deux bits d'adresse d'ordre inférieur. Par exemple, si le processeur souhaite lire quatre mots, l'opération du bus n'est pas arrêtée tant que quatre instructions READY (prêt) n'ont pas été reçues. Des opérations de transfert par salve sont souvent utilisées par 35 le processeur pour des remplissages de cache d'instructions, des sauvegardes et des restaurations de cache de blocs de pile, des charges et des mémorisations multimots, des opérations en chatne, etc... Le microprocesseur fonctionne beaucoup dans le mode pipeline. Il existe normalement cinq instructions à différentes 5 étapes d'exécution dans le pipeline à tout instant donné. Dans tout cycle donné, le pointeur d'instruction vers l'instruetion n+4 est calculée, l'instruction n+3 est lue à partir du cache d'instruction, l'instruction n+2 est décodée et fournie au bus de microinstructions, l'instruction n+1 est en cours d'exécution et 10 le résultat de l'instruction n est mémorisé dans la pile de registre. Alors que la présente invention a été décrite plus particulièrement en relation avec un mode de réalisation particulier, l'homme de l'art notera que divers changements de forme de 15 réalisation peuvent être effectués -sans sortir du domaine de l'invention. 1 1 REVENDICATIONS 1. Cache de blocs empilés dans un processeur de données connectable à une mémoire principale et mécanisme de commande pour ce cache, caractérisé en ce qu'il comprend: une pluralité de registres globaux (21), l'un des 5 registres globaux étant un registre pointeur de blocs contenant un pointeur de bloc en cours qui pointe un bloc en cours, et le restant des registres globaux étant disponible en tant que registres généraux vers un processus en cours; un groupe d'ensembles de registres constitué d'une 10 pluralité d'ensembles de registres, chaque ensemble de registres comprenant plusieurs registres locaux; des premiers moyens de commande activés par suite du décodage d'une instruction d'appel pour allouer à la procédure appelée un ensembles de registres parmi les registres locaux 15 parmi le groupe d'ensembles de registres et pour initialiser l'un des registres pointeurs de blocspour créer un bloc en cours; et des seconds moyens de commande activés par suite du décodage de l'instruction de retour pour libérer l'ensemble de registres pour les allouer à une autre procédure appelée par les 20 instructions d'appel suivantes. 2. Cache selon la revendication 1, caractérisé en ce que le premier moyen de commande comprend des moyens pouvant fonctionner à la condition que le groupe d'ensembles de registre soit vidé pour sauvegarder, dans la mémoire principale, les 25 contenus d'un ensemble de registres associé à une procédure précédente et pour allouer l'ensemble de registres à la procédure en cours. 3. Cache selon la revendication 1, dans lequel le premier moyen de commande comprend des bits d'état de retour pour 30 enregistrer le mécanisme d'appel lors de la création dudit bloc et pour choisir le mécanisme de retour à utiliser lors du retour. 4. Cache selon l'une des revendications 1 ou 2, caractérisé en ce que les registres locaux dans un ensemble de registres associés à une procédure contiennent les informations de liaison incluant un pointeur vers le bloc précédent et un pointeur d'instruction. 5. Cache selon la revendication 1, caractérisé en ce 5 que les registres locaux dans un ensemble de registres associés à une procédure contiennent un bloc de pile contenant des bits d'état de bloc pour enregistrer des informations associées au bloc après un appel, pour être utilisés lors d'un retour à partir du bloc, ces informations comprenant des bits d'état de retour pour enregistrer le mécanisme d'appel utilisé lors de la création du bloc et pour choisir le mécanisme de retour à utiliser lors du ' * ' retour. 6. Cache selon la revendication 1, caractérisé en ce que lesdits registres locaux dans un ensemble de registres associés à une procédure contiennent un bloc de piles comprenant des bits pointeurs de bloc précédent constitués d'une adresse linéaire vers le premier multiplet du bloc précédent. 7. Cache selon la revendication 1, caractérisé en ce que les registres locaux dans un ensemble de registres associés à une procédure contiennent un bloc de piles comprenant un champ de pointeur d'instruction de retour pour mémoriser le pointeur d'instruction de retour à la condition qu'une opération d'appel soit réalisée vers un nouveau bloc et pour mémoriser le pointeur d'instruction de l'instruction suivante à la condition que le processus soit suspendu, ce champ étant une adresse linéaire vers laquelle revient la commande après un retour vers ce bloc. 8. Cache selon la revendication 2, caractérisé en ce que les registres locaux dans un ensemble de registres associés a une procédure contienne un bloc de piles comprenant des bits d'état de bloc pour enregistrer des informations associees au bloc après un appel, pour les utiliser lors d'un retour à partir du bloc, ces informations comprenant des bits de retour d'état pour enregistrer des mécanismes d'appel utilisés lors de la création du bloc et pour choisir le mécanisme de retour à utiliser lors du retour. 9. Cache selon la revendication 2, caractérisé en ce que lesdits registres locaux dans un ensemble de registres associés à une procédure contiennent un bloc de piles comprenant des bits pointeurs de bloc précédent constitués d'une adresse linéaire vers le premier multiplet du bloc précédent. 10. Cache selon la revendication 2, caractérisé en ce que les registres locaux dans un ensemble de registres associés à une procédure contiennent un bloc empilé comprenant un champ de pointeur d'instruction de retour pour mémoriser le pointeur d'instruction de retour à la condition qu'une opération d'appel 10 soit réalisée vers un nouveau bloc et pour mémoriser le pointeur d'instruction suivante à la condition que le processus soit suspendu, ce champ étant une adresse linéaire vers laquelle la commande est renvoyée après un retour à ce bloc.