Brevet FR2559928A1 — publié le 19850823

La présente invention se rapporte à un ordinateur microprogrammé conçu pour fonctionner en tant que co-processeur avec un très grand nombre de systèmes d'ordinateur. Le coprocesseur de la présente invention est connecté à un autre processeur, appelé ci-après le processeur hôte. Le-processeur hôte remplit toutes les fonctions d'entrée-sortie pour le système,telles que l'accès à un disque, l'impression et l'entrée-sortie d'un terminal. Le co-processeur de l'invention remplit les fonctions de calcul et d'exécution pour un système d'exploitation conçu pour être exécuté sur le coprocesseur et pour les programmes d'application qui s'y rapportent et sont exécutés sous la supervision du système d'exploitation. L'appareil de la présente invention est composé de trois unités fonctionnelles,à savoir,une unité de commande ou séquenceur, un processeur et une mémoire principale. Le séquenceur est un contrôleur microprogrammé qui assure la commande et la mise en séquence de toutes les opérations du processeur et de la mémoire. Le processeur remplit les fonctions arithmétiques, logiques et d'adressage du système. La mémoire est la mémoire interne du système et elle comporte des blocs de registres et de commande nécessaires au système pour accéder, de la manière nécessaire, à sa propre mémoire Lnterne ou à la mémoire de l'hôte. Le jeu d'instructions, c'est-à-dire les macro-instructions du système décrit,est exécuté au moyen d'un microprogramme que l'on peut également appeler un micrologiciel. Lors de la mise en oeuvre d'un microprogramme pour commander l'exécution des macro-instructions, le microprogramme est composé de deux parties. La première partie est commune à l'exécution de toutes les macro-instructions du jeu d'insu tructions et elle est habituellement appelée "lecture de l'instruction suivante"ou "LIS". Une seconde partie contient les séquences d'instructions particulières pour produire les signaux de commande nécessaires pour exécuter chaque macro-instruction distincte. La partie LIS du microprogramme extrait normalement la macro-instruction suivante, la décode et transfère la commande aux séquences d'instructions de la seconde partie du microprogramme qui engendre les signaux de commande nécessaires pour l'exécution de la fonction de la macro-instruction.En dehors du fait qu'elle est la première étape qui est exécutée pendant l'exécution des macro-instructions, la partie LIS traite également les instructions qui servent à remplir les fonctions au niveau du système de l'ordinateur, telles qu'entrée et sortie, avance d'un seul pas et traçage, attribution et protection de la mémoire, manipulation, attribution et sécurité des fichiers sur disque et sur bandes, traitement en différé du fichier d'impression, traitement et attribution des communications, programmation des travaux et attribution des ressources, et traitement des défauts et des anomalies d'organisation. Naturellement, certaines de ces fonctions au niveau du système, voire toutes ces fonctions, peuvent être exécutées au moyen de programmes de macro-instructions. Suivant un aspect de la présente invention, on utilise un compteur/registre pour contenir l'empacement du programme LIS en cours d'utilisation. En exécutant le programme LIS de la manière décrite ici, on peut facilement adapter l'ordinateur de manière qu'il exécute plusieurs jeux de macro-instructions, par exemple, Assembleur, BASIC, etc... ,et passe dynamiquement d'un jeu -dlinstruction à un autre. Le système décrit est un système à mémoire virtuelle et, de ce fait, il peut accéder à une mémoire primaire, c'està-dire à la-mémoire interne, et à une mémoire secondaire, par exemple, à des données mises en mémoire sur un disque,d'une manière transparente au programmeur. Dansunsystème à mémoire virtuelle,certains états et conditions sont rencontrés, lesquels doivent être traités par le système. Trois de ces états ou conditions seront désignés ici format attaché (ou non attaché) ,défaut de limite ou besoin de page et écriture requise, que l'on décrira ci-après. Dans un second aspect de cette invention, on décrira une nouvelle technique pour tester et exécuter les étapes nécessaires pour traiter les trois états/conditions précités. On décrira maintenant les conditionsiétats de défaut de limite ou de besoin de page, de format attaché/non attaché et d'écriture requise. La présente invention utilise une mémoire virtuelle dans laquelle toutes les consultations de la mémoire virtuelle sont effectuées par l'intermédiaire d'un ou de plusieurs ensembles de seize registres d'adresse (RA). Dans certains modes de réalisation de tels systèmes d'exploitation, un ensemble complet de seize registres RA est utilisé pour chacun des utilisateurs simultanés du-système. Dans d'autres modes de réalisation, on utilise un unique ensemble de registres RA et on établit des tables de registres RA qui contiennent la valeur en cours des registres RA pour chacun des utilisateurs simultanés du système. Les registres RA contiennent soit une adressse virtuelle soit une adresse réelle d'un élément de données.L'adresse virtuelle est composée d'un numéro de page et d'un décalage à l'intérieur de cette page. Des tables de fichiers sont entretenues qui contiennent les noms de tous les fichiers enregistrés dans la mémoire secondaire du système et les numéros des pages qui composent chaque fichier et l'emplacement de ces pages. De temps à autre,des pages sont transférées de la mémoire secondaire à la mémoire primaire en réponse aux besoins d'un programme qui est exécuté par le système. Lorsqu'une page réside dans la mémoire primaire, ses éléments de don nées peuvent être accédés au moyen d'adresses réelles. Une adresse de mémoire réelle est l'emplacement de la mémoire primaire qui contient les éléments de données désirés. Les adresses réelles ne sont valides que pendant la période au cours de laquelle la page et, par conséquent, l'élément de données résident dans la mémoire primaire. la prochaine fois que cette page particulière sera transférée de la mémoire secondaire à la mémoire primaire, il est fort probable qu'elle sera placée dans un emplacement différent de la mémoire primaire.Le système d'exploitation de la présente in Invention utilise un ensemble de seize registres RA et une table pour chacun des utilisateurs simultanés. Initialement, le contenu d'un registre RA est indéfini. Dans ce cas, on dit que le registre RA est "non attaché". Lorsqu'un programme se réfère à un registre RA qui est "non attaché", le registre RA est "attaché" à la page spécifiée dans la table des registres RA correspondante. Lorsque la page est déjà résidente dans la mémoire primaire, ce processus nécessite l'exécution d'une recherche dans la table du système pour retrouver l'emplacement de la page dans la mémoire. Lorsque la page n'est pas dans la mémoire primaire, la page désirée est transférée de la mémoire secondaire à la mémoire primaire et les tables du système sont mises à jour en conséquence.Le registre RA est alors attaché à la page par enregistrement de l'adresse réelle de l'élément de données dans le registre RA. Toutes les consultations ultérieures de l'élément de données d'une page peuvent être effectuées-au moyen d'opérations d'addition et de soustraction dans le registre RA. Lorsque l'une quelconque des opérations arithmétiques sur le registre RA a pour effet que le regitre RA se réfère à un emplacement de la mémoire primaire réelle située à l'extérieur de la page à laquelle le registre RA est attaché, il est dit qu'un "défaut de limite" s'est produit et le registre RA est mis à l'état non attaché. Le processus "d'attachement" décrit ci-dessus est alors appelé. Lorsqu'un quelconque des éléments de données d'une page est changé,la page doit être réécrite dans la mémoire secondaire avant qu'une nouvelle page puisse être chargée à sa place dans la mémoire primaire. Une telle page mise à jour est placée dans un état d'écriture requise en mettant un bit indicateur dans le registre RA qui pointe la page. La nouvelle technique de la présente invention pour tester l'existence de conditions de formats de page attachés/ non attachés, de besoin de page et d'écriture requise et leur traitement consiste à utiliser une quantité relativement petite de matériel facile à obtenir pour obtenir des vitesses d'exécution plus rapide et une structure plus souple que celles disponibles dans la technique antérieure. Un troisième aspect nouveau de la présente invention a trait à l'emploi d'un registre de mémoire (registre E) qui contient la macro-instruction en cours d'exécution, pour accéder à une mémoire morte contenant des constantes utilisées pendant l'exécution d'un microprogramme. D'autres caractéristiques de l'invention apparaitront à la lecture de la description qui va suivre et à l'examen des dessin annexés dans lesquels: la Fig. 1 est un schéma-bloc qui représente les lignes de commande et de données qui couplent entre eux le séquenceur, le processeur et la mémoire de la présente invention ainsi que les lignes qui couplent le système de la présente invention à un adaptateur d'hôte lequel est, à son tour, couplé à un ordinateur hôte; la Fig. 2 est un schéma-bloc du séquenceur; la Fig. 3 est un schéma-bloc du processeur; la Fig. 4 est un schéma-bloc du circuit logique d'écriture requise utilisé dans le processeur; la Fig. 5 est un schéma-bloc du circuit logique de besoin de page et de format attaché/non attaché; la Fig. 6 est un schéma-bloc de la mémoire;; la Fig. 7 est un schéma-bloc montrant les lignes de données et de commande utilisées par le processeur pour accéder à la mémoire morte de constantes. On décrira ci-après un système d'ordinateur conçu pour être utilisé comme un co-processeur et qui comporte un séquenceur ou unité de commande 11, un processeur 13 et une mémoire 15. Comme représenté sur la Fig. 1, le système est connecté à un ordinateur hôte par l'intermédiaire de la mémoire et par l'intermédiaire d'un adaptateur d'hôte 17 qui couple entre elles les lignes d'adresse, de données de commande et d'accusé réception/défaut de l'ordinateur hôte et du système de la présente invention. Dans la description qui va suivre, on a donné de nombreux détails spécifiques, tels que des registres spécifiques et des formats de bus, etc. pour assurer une pleine compréhension de l'invention. Cependant, il apparaitra clairement aux spécialistes de la technique que la présente invention peut être mise en oeuvre sans ces détails spécifiques. Dans d'autres cas,des circuits bien connus ont été représentés sous forme de schémas-blocs afin de ne pas obscurcir la présente invention par des détails inutiles. De même, on n'a ni représenté ni décrit des lignes de données d'adresse et de commande qui ne sont pas nécessaires pour la compréhension de la présente invention. Par exemple, divers blocs de commandes logiques et de multiplexage ont été représentés sur les dessins pour montrer la relation des éléments qui constituent la présente invention entre eux et avec le système d'ordinateur dans son ensemble. D'une manière générale, les lignes utilisées pour produire des signaux d'horloge et des signaux de commande des divers éléments ne sont ni représentées sur les dessins ni décrites à moins 9use ce ne soit nécessaire pour décrire et mettre en oeuvre la présente invention. Cependant, des descriptions de tous les blocs logiques représentés sur les dessins,mais qui ne sont pas spécifiquement décrits dans la description,et les signaux d'horloge et de commande non représentés ni décrits sont bien connus des spécialistes de la technique intéressée.On renverra par exemple à Bit-Slice Microprocessor Design (Construction de microprocesseur en tranche) de John Mick et Jim Brick, McGraw Hill,Copyright - 1980 et Bipolar Microprocessor Logic and Interface (Circuit logique et interface de microprocesseur bipolaire) par Advanced Microdevices,Copyright 1983,pour une description d'un ordinateur microprogrammé ayant des blocs de commande logiques et de multiplexage, des lignes de signaux d'horloge et de commande similaires à ceux de la présente invention. Sauf indication contraire, on utlisera, par commodité, une logique positive pour décrire l'invention. Ainsi, les termes mis,enclenché,"1", haut niveau et vrai sont équivalents comme le sont les termes restauré, "0" bas niveau et faux. Bien que les microprocesseurs et co-processeurs microprogrammés soient bien connus, la présente invention exécute certaines fonctions d'un processeur microprogrammé d'une nouvelle manière,comme décrit ci-dessous. Les nouvelles fonctions ou caractéristiques particulières qui font l'objet de la présente invention sont: i) sa manière a d'exécuter l'instruction "lecture de l'instruc- tion suivante" (LIS); ii) le traitement des conditions de format#attaché/non attaché, de défaut de limite ou besoin de page et d'écriture requise; et iii) la génération et l'accès à des constantes du système. A - (LIS) Dans la technique antérieure, l'instruction LIS est constituée par une première partie d'un microprogramme et elle est exécutée dans sa totalité par un micrologiciel ou par une combinaison de micrologiciel et de matériel dans le cas où le matériel possède une capacité de test de bit spé- ciale pour empêcher le transfert de la commande àune seconde partie du microprogramme lorsqu'un traitement spécial pour des événements d'entrée-sortie doit être effectué.Dans le cas de la solution qui utilise uniquement un micrologiciel, le micrologiciel LIS vérifie, pour chaque macro-instruction, chaque condition qui nécessite un traitement d1entrée-sortie spécial, le temps d'exécution de ces vérifications s'ajoutant au temps d'exécution de toutes les macro-i#structions, ce qui se traduit par une dégradation du temps d'exécution des macroinstructions. Lorsque la solution micrologiciel/matériel combinés est utilisée, solution dans laquelle le matériel est utilisé pour vérifier les conditions qui nécessitent un traitement spécial, il n'existe aucune souplesse qui permettrait l'addition de micrologiciel servant à traiter des besoinsspéciaux qui n'étaient pas prévus dans le système d'origine. En outre, une telle combinaison micrologiciel/matériel ne travaille en général qu'avec un unique microprogramme LIS qui ne peut pas être remplacé dynamiquement par un autre microprogramme LIS. On décrira l'exécution de la routine LlSdela présente invention en se référant à la Fig. 2 qui est un schéma-bloc du séquenceur 11. On comprendra que la routine LIS, dans le sens où cette expression est utilisée ici, se réfère à- la partie d'un microprogramme qui est utilisée pour extraire la macro-instruction suivante de la mémoire de programme, ddw coder l'instruction et transférer la commande à une autre partie du microprogramme, propre à l'instruction décodée, ce qui provoque l'exécution de la fonction de la macro-instruction au moyen de la génération des signaux de commande et de synchronisation nécessaires.Chaque jeu de macro-instruction (par exemple, Assembleur, BASIC, ou autre langage évolué) a sa propre exécution de la routine LIS, chaque macro-instruction d'un ensemble d'instructions ayant sa propre séquence d'instructions de microprogramme qui est exécutée après l-'ex- traction et le décodage de la macro-instruction suivante du programme par la routine LIS.En outre, des modes de vérification du programme et de diagnostics spéciaux peuvent utiliser une routine LIS qui leur est propre de sorte qu'un contrôle des modes par des micro-instructions n'est pas nécessaire et que ces modes ne ralentissent pas l'exécution normale des macro-instructionsparl'ordinateur. Les principaux éléments du séquenceur sont ceux représentés à l'intérieur du rectangle en traits interrompus désigné par la référence numérique 21 en combinaison avec une mémoire de commande 23 qui comprend des parties de mémoire à accès sélectif (MAS > et de mémoire morte (MEMOR), un registre dtinstruction 25 et une mémoire à accès sélectif de programme macro-assembleur (MAS PMA) 27. La partie 21 comprise à l'intérieur du cadre en traits interrompus peut être obtenue sous forme d'une unique pièce fabriquée par Advanced Micro Devices (nO de pièce d'AMD AM 2910 ou AM 2910A). Cette partie comporte un multiplexeur 29 qui est utilisé pour sélectionner l'une de plusieurs adresses utilisées pour accéder à la mémoire de commande 23 qui contient les séquences d'instructions du microprogramme, l'adresse choisie dépendant d'un signal appliqué par un décodeur 24 sur une ligne 38 et provenant d'un compteur 31 de programme, d'une pile 33 de retour de sous-routine, d'un compteur/registre 35 ou d'un multiplexeur 37. D'une manière générale, dans la technique antérieure, le registre/compteur est utilisé pour contenir le nombre de fois qu'une boucle du micrologiciel doit être exécutée ou certaines adresses de saut du microprogramme.Dans la présente invention, le compteurjregistre 35 est utilisé pour contenir l'emplacement de départ du programme LIS en train d'être utilisé. A la mise en route ou à la restauration du système, le compteur/registre 35 doit être initialisé avec l'emplacement de départ du programme LIS par défaut. Dans le mode de réalisation préféré, le contenu du compteur/registre 35 peut être modifié dynamiquement par le micrologiciel. La routine du micrologiciel qui modifie le compteur/registre 35 peut être mise en route par une macro-instruction particulière conçue à cette fin ou par une commande reçue de l'hôte ou par diautresévène- ments externes ou séquences de micro-instructions.Naturel lement, les routines du micrologiciel individuelles peuvent utiliser le compteur/registre 35 à des fins propres d la routine. Cependant, lorsqu'une telle routine est achevée, elle doit recharger l'emplacement de départ du programme LIS en cours dans le compteur/registre 35. Dans le mode de réalisation préféré, l'emplacement de départ du programme LIS est temporairement mis en mémoire, lorsque cela est nécessaire, dans l'un des registres de fichier de l'unité arithmétique et logique (UAL) bien que l'emplacement puisse être également mis en mémoire dans la mémoire interne 15 ou dans la mémoire de l'hôte. En utilisant le compteur/regìstre 35 de la manière décrite ci-dessus, les programmes du micrologiciel qui exécutent les jeux d'instructions au niveau macro commencent par le cycle LIS et se terminent par une micro-instruction qui transfère la commande en retour à la routine LIS en instruisant le multiplexeur 29 de choisir le signal de son entrée raccordée au compteur/registre 35 en tant qu'adresse de la mémoire de commande 23. En particulier, en chargeant, dans le registre d'instruction 25, une micro-instruction provenant de la mémoire dé commande 23, les données transmises sur la ligne 36 provoquent la génération par le décodeur 24 d'un signal sur la ligne 38 qui provoque la sélection par le multiplexeur 29 du contenu du compteur/registre 35 en tant qu'adresse utilisée pour accéder à un emplacement de lamémoire de commande 23.De cette manière, le manque de souplesse des solutions à micrologiciel/matériel de la technique antérieure est évité étant donné que l'adresse de départ de l'une quelconque des multiples routines LIS peut être chargée dans le compteur/registre 35. En utilisant de cette manière le compteur/registre 35, on obtient une exécution plus rapide des routines LIS par rapport aux techniques à micrologiciel étant donné que l'on peut utiliser une rou tie LIS différente pour fournir des modes de fonctionnement différents au lieu d'ajouter un code à une unique routine LIS pour déterminer celui de plusieurs modes de fonctionnement qui est choisi.En outre, on peut changer efficacement interprétation des instructions au niveau macro en utilisant une routine LIS différente pour chaque jeu de macroinstructions. B - Conditions d'écriture requise,de besoin de page, de for mat attaché/non attaché On décrira maintenant,en se référant aux Fig. 3, 4 et 5, les détails de la vérification et du traitement des conditions/états d'écriture requise de format attaché/non attaché et de besoin de page. La Fig. 3 représente le processeur 13 de la présente invention dont les principaux éléments sont une unité arithmétique et logique UAL 41 et un fichier de registres universels 43. Dans le mode de réalisation préféré, le fichier de registres universels comprend vingt-neuf registres universels de 32 bits. Le fichier de registres et l'unité UAL 41 peuvent être construits avec huitmicroplaquettes d'UAL de 4 bits AMD 29203 et huit microplaquettes de registres de 4 bits AMD 29705. Trois des registres de fichier contenus dans les microplaquettes 29203 ne sont pas utilisés. Dans cette configuration, deux registres quelconques peuvent être accédés simultanément au moyen d'une adresse de quatre bits (A0-A3) (non représentée) appliquée au point d'accès A et d'une adresse de quatre bits (B0-B4) (non représentée) appliquée au point d'accès B en combinaison avec une série de lignes de commande (non représentées) qui mettent en fonction la sortie de l'UAL 29203 ou la sortie du fichier 29705. Les seize premiers registres (0-15) sont utilisés comme registre d'adresse ou RA. Les 28 bits de gauche (les moins significatifs) de chaque registre RA contiennent l'adresse d'un emplacement de mémoire associé au registre RA. Les quatre bits de droite(les plus significatifs)de chaque registre RA déterminent l'état/condition de l'adresse désignée par les 28 bits de gauche.A cet égard, on notera que le bit 31 d'un registre RA est le bit d'écriture requise et est mis lorsqu'une opération d'écriture est effectuée dans la page contenue dans la mémoire primaire, qui est associée au registre RA. Le bit 30 d'un registre RA est le bit de format attaché/ non attaché. Ce bit est remis à zéro par le micrologiciel lorsque le registre RA ne contient pas l'adresse dans la mémoire primaire d'un élément de données delapageâlaquelle il est attaché et il est mis à un (indiquant un format atta ché) par le micrologiciel lorsque l'adresse de l'emplacement qui est accédé dans la mémoire primaire estchargde dans le registre RA.Le bit 29 du registre RA est mis à 1 par le micrologiciel lors de l'adressage de la mémoire hôte et est remis à zéro par le micrologiciel lors de l'adressage de la mémoire du co-processeur. Le bit 28 n'est pas utilisé. Pour vérifier et traiter la condition d'écriture requise, la présente invention utilise le circuit logique 44 d'écriture requise qui, comme représenté sur la Fig. 4 à laquelle on se référera,comprend une porte OU 51 et un multiplexeur 53. Comme noté ci-dessus, la présente invention utilise une solution à mémoire virtuelle pour la gestion de la mémoire. En d'autres termes, la mémoire est organisée en pages ou cadres de page qui peuvent être situés soit dans une mémoire primaire, c'est-à-dire dans la mémoire principale de l'ordinateur hôte ou du co-processeur,soit dans une mémoire secondaire, c'est-à-dire sur un asque ou autre dispositif à accès sélectif.Comme ceci est le cas de tous les systèmes à mémoire virtuelle, l'espace de programme ou de données qui est logiquement connecté peut être physiquement séparé et toute paye donnée contenue dans la mémoire primaire peut être effacée et remplacée par une page extraite de la mémoire secondaire conformément à l'un quelconque de plusieurs algorithmes bien connus de la technique antérieure. Cependant, avant qu'une page puisse être effacée et remplacée par une autre, il est nécessaire, si elle a été mise à jour depuis la dernière fois ou elle a été réécrite dans la mémoire secondaire,qu'elle soit réécrite dans la mémoire secondaire avant qu'une autre page soit chargée dans le cadre de page de la mémoire primaire. Dans la technique antérieure, le micrologiciel est utilisé pour mettre à 1 un bit indicateur associé à un cadre de page lorsqu'une opération d'écriture a été effectuée dans cette page. Typiquement, ce bit est contenu dans une table de cadres de page de la mémoire primaire qui peut être chargée par le micrologiciel sans aucune restriction. Ce bit, c'està-dire le bit d'écriture requiseZest mis en mémoire dans le bit 31 de chaque registre RA. Dans la présente invention, les bits individuels de chaque RA ne peuvent pas être modifiés sans que les autres bits du registre soient également modifiés.Dans la présente invention, comme indiqué ci-dessus, les registres RA de trente deux bits sont réalisés au moyen de huit microplaquettes de registre de 4 bits à deux points d'accès,AMD 29705,et 8 microplaquettes d'UAL de 4 bits, AMD 29203, les 4 bits d'état 28 à 31 d'un registre RA étant contenus dans une microplaquette de 4 bits. En utilisant la porte OU 51 et le multiplexeur 53, le bit 31 d'écriture requise peut être mis par le micrologiciel sans que les bits 28 à 30 soient modifiés et cela de la manière suivante. Les lignes d'entrée de la microplaquette 29705 qui portent les bits 28 à 31 des registres RA sont connectés au multiplexeur 53 au lieu d'être connectés aux bits 28 à 31 de la sortie de l'unité UAL portée par la microplaquette 29203. Les lignes d'entrée du multiplexeur 53 comprennent les bits 28 à 31 de l'unité UAL et les bits 28 à 31 du registre RA. Lorsque le registre RA est mis à jour normalement par le micrologicie#l, les bits 28 à 31 de l'unité UAL sont choisis par le multiplexeur et connectés à l'entrée du registre RA. Lorsqu'une micro-instruction est exécutée qui ntentraîne pas une mise à jour du registre RA, les bits 28 à 31 du registre RA sont choisis.L'écriture du contenu des bits 28 à 31 du registre RA en retour dans ledit registre a pour effet que le registre RA reste inchangé et permet au bit 31 d'être mis chaque fois que le signal MWRT est un 111 comme décrit ci-dessous. Lorsqu'une micro-instruction contenue dans le registre d'instruction 25 met à jour une page contenue dans la mémoire primaire, le décodeur 54,qui est connecté au registre d'instruction 25 de la manière représentée sur la Fig. 2,produit un "1" sur la ligne MWART qui, comme représenté sur la Fig. 4,est connectée à l'entrée de la porte OU 51 dont le signal de sortie est transmis au bit 31 du regietre RA en cours. Ensuite, lorsque le bit 31 est testé par le micrologiciel qui détermine alors qu'il est mis, une séquence appropriée de micro-instructions provoque l'écriture de la page dans la mémoire secondaire.A ce moment, le bit 31 du registre RA est remis à zéro ce qui indique que le registre n'est pas attaché. Afin de vérifier et de traiter les besoins de page, la présente invention utilise, comme représenté sur la Fig. 5, une porte OU exclusif 61, une bascule bistable 63, une porte ET 65 et une porte OU 70. Comme noté ci-dessus, un besoin de page se produit lorsqu'un registre RA ne désigne plus un emplacement situé à l'intérieur du cadre de page de la mémoire primaire précédemment accédé auquel il est associé. Lorsqu'on utilise une longueur de cadre de page de 1024 multiplets, il existe une limite de page lorsque les neuf bits de gauche de l'adresse contenue dans le registre RA sont des zéros. Pendant le fonctionnement de l'unité UAL, chaque fois qu'une adresse de la mémoire, c'est-à-dire les neuf bits de gauche d'un registre RA,est incrémentée au-deld d'une limite de 1024 multiplets, le dixième bit du registre RA est changé par le report des neuf bits de gauche. Les deux lignes d'entrée de la porte OU exclusif 61 sont, comme représenté sur la Fig. 3, la ligne RB-10 qui porte la valeur du bit 10 du registre RA en cours et la ligne AL-lO qui porte la valeur du bit 10 du registre à décalage 55 d'UAL qui contient les trente deux bits du registre RA en cours incrémenté d'un opérande de registre ou d'un opérande de micro-instruction. Si cet évènement a pour effet que le bit 10 du registre à décalage 55 d'UAL passe de "0" à "1" ou de "1" à "0",le signal de sortie de la porte OU exclusif 61 est mis à 1,étant donné que AL-10 est de sens opposé à RB-10. Pour vérifier s'il existe un besoin de page, le signaldesor- tie du registre de micro-instruction met la ligne 67 à un haut niveau; ce signal de haut niveau, lorsqu'il est appliqué à l'entrée de la porte ET 65 en combinaison avec le signal de sortie de la bascule bistable 63 fait passer à un haut niveau le signal de la ligne 69 sila bascule 63 est alors enclenchée. La porte OU 70 transmet alors à la ligne 71 un signal"1"qui est appliqué à l'entrée d'un multiplexeur 73,comme représenté sur la Fig. 2. Le signal de sortie du multiplexeur 71 est décodé par le décodeur 24 et transmis sur la ligne 38 au multiplexeur 29.Le décodeur, naturellement, a pour effet que le multiplexeur choisit une entrée différente (à savoir compteur/registre 35, registre d'instruction 25, pile de retour de sous-routine 33 ou mémoire MAS PMA 27) que celle qui aurait été choisie si la ligne 71 n'avait pas été portée à l'état11 1'.'Ceci permet aux branchements des micro-instructions d'être conditionnés par la présence ou l'absence d'un besoin de page et la commande à micrologiciel peut être transmise à la séquence de micro-instructions prévue pour le traitement des besoins de page dans la mémoire de commande 23. Ainsi, les besoins de page sont testés et détectés de la manière décrite ci-dessus en utilisant le matériel alors qu'autrement il serait nécessaire d'utiliser une séquence de micro-instructions dont le temps d'exécution s'ajouterait au temps d'exécution de toutes les macroinstructions. On décrira maintenant les conditions de format attaché, non attaché en se référant aux Fig. 5, 2 et 3. Dans un système à mémoire virtuelle, la mémoire est segmentée en cadres de page logiques qui peuvent être situés dans la mémoire primaire ou secondaire . Ainsi, tout emplacement particulier en train d t être accédé par le processeur peut être situé dans la mémoire primaire ou dans la mémoire secondaire. Si le bit 30 du registre RA en cours est mis, la ligne RB-30 (de la Fig. 3)produit un signal"11, qui est appliqué à la bascule bistable 83, comme représenté sur la Fig. 5.A ce point, pour vé- rifier si l'adresse qui est indiquée par le registre FA est attachée ou non attachée, la ligne 75 est portée à un haut niveau et le signal de haut niveau,lorsqu'il est applique en combinaison avec le signal de sortie de la bascule bistable 83 à la porte ET 85,place un O ou un "1" sur la ligne 87. La ligne 87 est connectée à l'entrée de la porte OU 70. Le signal de sortie de la ligne 71 est appliqué -d l'entrée du multiplexeur 73 et transmis par ce dernier au décodeur 24 dont le signal de sortie est transmis au multiplexeur 29 sur la ligne 38. La source de l'adresse de la mémoire de commande est modifiée lorsque le registre RA n'est pas attaché {RB-30 est égal à "1") et le signal de la ligne 71 est un s 1 17 comme lorsqu'il se produit un besoin de page-. La commande peut être transférée à une séquence d'instructions contenue dans la mémoire de commande 23 qui peut déterminer si la page désirée réside dans la mémoire primaire et, dans la négative, charger la page de la mémoire secondaire dans la mémoire primaire. De cette manière, la vérification du format attaché/ non attaché est effectuée par le matériel et non par le micrologiciel comme cela est le cas dans la technique anté- rieure, ce qui entraîne des vitesses d'exécution accrues par rapport à celles qui peuvent être obtenues dans la technique antérieure. C - Génération des constantes du système et accès à ces constantes Les constantes qui sont fréquemment utilisées pendant l'exécution des séquences de micro-instructions sont typiquement mises en mémoire dans une mémoire morte MEt4OR (ou une mémoire morte programmable, une mémoire morte programme mable effaçable électriquement, etc. ) que les microinstructions peuvent adresser. De telles constantes peuvent avoir une longueur de huit bits ou de trente deux bits.Par exemple, en utilisant une mémoire morte de 512x32 bits, toutes les constantes de huit bits possibles,dont chacune peut être accédée dans l'une quelconque des quatre positions d'octet du mot de trente deux bits,peuvent être mises en mémoire dans les 256 premiers emplacements de la mémoire morte et 256 constantes de trente deux bits peuvent être mises en mémoire dans les 256 emplacements restants de la mémoire morte. Dans la technique antérieure, les constantes contenues dans la mémoire morte sont accédées de la manière habituelle,c'est-à-dire en plaçant l'adresse dans la mémoire morte de la constante désirée dans la zone d'adresse de la micro-instruction. Comme on le décrira ci-dessous, la présente invention utilise une nouvelle technique pour accéder à la mémoire morte en divisant la partie de constantes de trente deux bits de la mémoire morte en seize groupes de seize constantes de trente deux bits, le groupe désiré parmi les seize groupes étant choisi par la micro-instruction et la constante désirée parmi les seize constantes étant choisie par le registre E de la mémoire dans lequel est chargée la macro-instruction en-cours d'exécution. On décrira maintenant la génération des constantes du système et l'accès à ces constantes en se référant aux Fig. 7, 6 et 2. En utilisant une mémoire morte de constantes 91 de 512x32 bits, comme représenté sur la Fig. 7, les constantes mises en mémoire dans la mémoire morte 91 peuvent être placées sur la ligne d'entrée 93 de l'unité UAL 41 par l'intermédiaire du multiplexeur 95 du bus A. Dans le mode de réalisation préféré, les 256 constantes de huit bits possibles sont mises en mémoire dans les 256 premiers mots de trente deux bits de la mémoire morte 91, chaque mot comprenant huit octets identiques correspondant à l'emplacement de la mémoire morte. Par exemple, l'emplacement 10 (A en notation hexadécimale) comprendra le mot de trente deux bits OAOAOAOA. Les 256 mots restants de la mémoire morte contiennent 256 constantes de trente deux bits.Les 256 constantes de trente deux bits mises en mémoire dans la mémoire morte dépendent du type de microprogramme à exécuter et une fois qu'elles ont été choisies pour un système particulier, elles restent, en général, inchangées. L#orsqu'une micro-instruction chargée dans le registre d'instruction 25 accède à la mémoire morte de constantes 91,la micro-instruction provoque la mise par le décodeur 54 d'un "0" sur la ligne D1 Si l'un des 256 mots inférieurs de la mémoire de constantes 91 doit être accédé et la mise d'un "1" sur la ligne D1 si l'un des 256 mots supérieurs de la mémoire morte doit être accédé.Comme noté ci-dessus, dans la technique antérieure, le mot particulier à l'intérieur de la moitié supérieure ou inférieure de lamémoire morte de constantes qui sera accédé est déterminé par la zone d'adresse de la micro-instruction. Si l'on admet que la micro-instruction a deux zones d'adresse de quatre bits, ou une zone d'adresse de huit bits, les quatre bits de gauche de l'adresse seront placés sur les lignes A3-A0 et les quatre bits de droite de l'adresse seront placés sur les lignes A7-A4 ce qui aura pour effet de placer le contenu de l'emplacement adressé de la mémoire morte 91 sur le bus 93.Dans la présente invention, au lieu de coupler les lignes A3-A0 directement à la mémoire morte de constantes, ces lignes sont connectées à la mémoire morte par l'intermédiaire d'un multiplexeur 97 qui comporte deux autres lignes d'adresse de quatre bits qui proviennent de deux zones d'adresse de quatre bits du registre E 99,appelées ici lignes EA3-EA0 et EA7-EA4. L'une de ces trois lignes d'adresse de quatre bits (A3-A0, EA3 EA0 et EA7-EA4) connectées à l'entrée du multiplexeur 97 est choisie par le signal appliqué sur la ligne- D2 par le décodeur 54. De cette manière, étant donné que la macro-instruction en cours d'exécution, y compris sa zone ou ses zones d1adresse,est contenue dans le registre E 99, on peut provoquer l'accès direct des constantes mises en mémoire dans la mémoire morte des constantes 91 au niveau des macro-instructions en plaçant l'adresse de la constante désirée dans une zone d'adresse de la macro-instruction. C'est-à-dire que l'un des seize groupes ayant été choisi en plaçant une adresse sur les lignesA7-A4 de la zone d'adresse de la micro-instruction, l'une quelconque des seize constantes du groupe peut être directement accédée par la macro-instruction. Ceci évite la nécessité d'avoir à utiliser des routines du micrologiciel pour calculer des constantes à partir de la zone ou des zones d'adresse de la macro-instruction, ce qui entraîne un temps d'exécution plus rapide des macroinstructions. Ainsi, on a décrit de nouvelles manières de traiter les conditions de la routine lecture de l'instruction suivante, de format attaché/non attaché, de besoin de page et d'écriture requise et une nouvelle manière d'engendrer les constantes du système et d'y accéder. Bien qu'on ait donné une description détaillée de ces nouvelles techniques, une telle description n'a été donnée qu'à des fins d'illustration et ne doit pas être considérée comme limitant la portée de l'invention, telle que définie dans les revendications annexées. REVENDICATIONS 1 - Un ordinateur microprogrammé ayant unséquenceur (11), un processeur (13) et une mémoire(15), le microprogramme de l'ordinateur comprenant une première séquence de microinstructions pour extraire les macro-instructions de la mémoire, décoder les macro-instructions et transférer la commande à une seconde séquence de micro-instructions qui provoque l'exécution de la macro-instruction décodée, cet ordinateur étant caractérisé en ce qu'il comprend: une mémoire de commande (23) pour mettre en mémoire au moins une première séquence de micro-instructions, et un registre d'adresse (35) de la mémoire de commande pour mettre en mémoire l'adresse de début dans la mémoire de commande de la première séquence de micro-instructions en cours d'utilisation. 2 - Ordinateur microprogrammé selon la revendication 1, caractérisé en ce qu' il comporte un registre d'instruction (25) couplé à la mémoire de commande (23) pour contenir la micro-instruction en cours d'exécution, un multiplexeur (29) couplé au registre d'adresse (35) de la mémoire de commande et à la mémoire de commande(23) pour choisir l'un de plusieurs moyens de mémorisation d'adresse (31, 33, 35, 37) comme source d'adresse de la micro-instruction suivante qui doit être chargée dans le registre d'instruction couplé à la sortie de la mémoire de commande, le registre d'adresse de la mémoire de commande étant l'un des divers moyens de mélos risation d'adresse. 3 - Ordinateur microprogrammé selon la revendication 2, caractérisé en ce qu'il comporte, en outre, un décodeur (24) couplé au multiplexeur (29) et au registre d'instruction (25) pour décoder les données enregistrées dans le registre d'Ainsi truction et engendrer des signaux appliqués au multiplexeur pour choisir celui des divers moyens de mémorisation (31, 33, 35, 37) qui doit être utilisé pour déterminer l'adresse de la micro-instruction suivante qui doit être chargée dans le registre d'instruction. 4 - Ordinateur microprogrammé selon la revendication 2, caractérisé en ce qu'il comprend en outre, une mémoire à accès sélectif de programme macro-assembleur (27) couplée au registre d'adresse (35) de la mémoire de commande, cette mémoire à accès sélectif de programme macro-assembleur contenant les adresses de départ des premières séquences de microinstructions mises en mémoire dans la mémoire de commande (23). 5 - Un ordinateur microprogrammé selon la revendication 1, caractérisé en ce qu'il comporte des moyens de mdmoire primaires et des msens de mémoire secondaires, le processeur comprenant plusieurs registres d'adresse (43), chacun destiné à contenir des adresses de cadre de page et des ddplacements, l'intérieur des cadres de page, de données contenues dans les moyens de mémoire primaires et dans les moyens de mémoire secondaires et destinés à contenir une information permettant de déterminer si l'adresse contenue dans chacun des registres d'adresse est située dans les moyens de mémoire primaires ou dans les moyens de mémoire secondaires et un circuit logique pour examiner cette information afin de déterminer si une adresse contenue dans un registre d'adresse est situéedansles moyens de mémoire primaires ou dans les moyens de mémoire secondaires. 6 - Ordinateur microprogrammé selon la revendication 5, caractérisé en ce que le circuit logique comprend une bascule bistable (83), une porte ET (85) et une porte OU (70), la sortie de la bascule étant connectée à une entrée de la porte ET, la sortie de la porte ET étant connectée à une entrée de la porte OU et en ce que ladite information est la valeur d'une position binaire dans l'un des registres d'adresse,cette valeur étant appliquée à l'entrée de la bascule. 7 - Ordinateur microprogrammé selon la revendication 6, caractérisé en ce que le signal de sortie de la porte OU (70) provoque l'exécution d'une séquence de micro-instructions qui charge une page des moyens de mémoire secondaires dans les moyens de mémoire primaires. 8 - Un ordinateur microprogrammé selon la revendication 5, caractérisé en ce que le processeur comprend plusieurs registres d'adresse (43), chacun comprenant une première partie destinée à contenir des adresses de cadre de page et une seconde partie destinée à contenir des déplacements, à l'intérieur des cadres de page, de données situées dans les moyens de mémoire primaires et dans les moyens de mémoire secondaires, et un circuit logique pour vérifier si la macroinstruction suivante à exécuter est située dans une page autre que la page dans laquelle est située la macro-instruction en cours d'exécution. 9 - Ordinateur microprogrammé selon la revendication 8, caractérisé en ce que le circuit logique comprend une porte OU exclusif (61) dont la sortie est couplée à une bascule bistable (63), la sortie de cette bascule étant connectée à une porte ET (65) dont la sortie est connectée à une porte OU (70), les signaux d'entrée de la porte OU exclusif étant la valeur d'un bit de l'adresse de la macro-instruction en cours d'exécution et la valeur d'un bit de la macro-instruction suivante à exécuter, chacun des bits provenant d'une position binaire correspondant au bit d'ordre inférieur des parties d'adresse de cadre de page des registres d'adresse. 10 - Ordinateur microprogrammé selon la revendication 7, caractérisé en ce que la sortie d'une porte OU (70) provoque l'exécution d'une séquence de micro-instructions qui localise la page qui contient l'adresse de la macro-instruction suivante à exécuter. 11 - Un ordinateur microprogrammé selon ha revendication 5, caractérisé en ce que le processeur comprend plusieurs registres d'adresse (43)chacun destiné à contenir des adresses de cadre de page et desemplacements,àl'intérieur des cadres de page dedonnées,situées dans les moyens de mémoire primaires et dans les moyens de mémoire secondaires, un circuit logique (44) pour permettre la mise d'un bit dans un système d'adresse indiquant qu'au moins un emplacement de la page contenue dans la mémoire primaire et désignée par le registre d'adresse a été mis à jour depuis la dernière fois que la page a été écrite dans les moyens de mémoire secondaires. 12 - Ordinateur microprogrammé selon la revendication 11f caractérisé en ce que le circuit logique (44) comprend un multiplexeur (53) dont les signaux d'entrée sont les bits d'un registre d'adresse et une porte OU (51), les signaux d'entrée de cette porte OU étant un signal de sortie du multiplexeur correspondant au bit d'un registre d'adresse qui indique si au moins un emplacement contenu dans la page désignée par le registre d'adresse a été mis à jour depuis la dernière fois que la page a été écrite dans les moyens de mémoire secondaires etun signal du séquenceur (11) engendré par une micro-instruction avant l'écriture d'une page provenant des moyens de mémoire secondaires dans l'espace des moyens de mémoire primaires occupé par ladite page dans les moyens de mémoire primaires. 13 - Ordinateur microprogrammé selon la revendication 1, caractérisé en ce que le séquenceur (11) comprend un registre d' instruc- tion (25) pour contenir la micro-instruction en cours d'exécution, le processeur (13) comprenant une mémoire morte de constantes (91) de microprogramme, une mémoire (15) contenant un registre d'exécution (99) pour contenir la macro-instruction en cours d'exécution et un circuit logique pour adresser la mémoire morte (91) en utilisant la zone d'adresse contenue dans le registre d'exécution (99). 14 - Ordinateur microprogrammé selon la revendication 13, caractérisé en ce que le circuit logique comprend un multiplexeur (57) dont les entrées sont respectivement connectées à des lignes d'adresse raccordées à une zone d'adresse du registre d'instruction (25),à des lignes d'adresse raccordées à une zone d'adresse du registre d'exécution (99) et à une ligne de commande provenant du registre d'instruction (25), la ligne de commande servant à instruire le multiplexeur de choisir les lignes d'adresse du registre d'instruction ou les lignes d'adresse du registre d'exécution pour adresser la mémoire morte de constantes.