FR 2682783 A1 19930423 FR 9212339 A 19921015 La présente invention concerne des systèmes de gestion de mémoire destinés à des ordinateurs et, plus spécifiquement, des systèmes de segmentation de mémoires destinés à accroître la cohérence de mémoires de cache de microprocesseurs. Une gestion de mémoire est un mécanisme d'équipement qui fait créer, par des systèmes d'exploitation, des environnements simplifiés pour faire fonctionner les programmes d'une manière telle que, lorsque plusieurs programmes fonctionnent en même temps, il est possible de donner à chacun d'eux un espace d'adresses indépendant pour éviter une interférence entre eux Une gestion de mémoires consiste typiquement en une segmentation et une pagination Une segmentation est utilisée pour donner à chaque programme plusieurs espaces d'adresses indépendants protégés "segments" Une pagination est utilisée pour supporter un environnement o de grands espaces d'adresses sont simulés en utilisant une faible quantité de mémoire vive ("RAM") et une certaine mémorisation sur disque Les concepteurs de système peuvent choisir d'utiliser, soit l'un, soit l'autre de ces mécanismes, soit l'un et l'autre Lorsque plusieurs programmes fonctionnent en même temps, l'un ou l'autre des mécanismes peut être utilisé pour protéger des programmes contre une interférence provenant d'autres programmes. Une segmentation permet à une mémoire d'être complètement non structurée et simple, comme la mémoire modèle d'un processeur simple à 8 bits, ou d'être hautement structurée, avec une traduction et une protection d'adresses Chaque segment est un espace d'adresses indépendant, protégé Un accès à des segments est commandé par une donnée qui décrit sa dimension, le niveau de privilège nécessaire pour y accéder, les types de références de mémoires qui peuvent y être faites (rechercher instruction, pousser ou faire sortir une pile, opération de lecture, opération d'écriture, etc), et s'il est présent dans la mémoire. On se réfère maintenant à la Fig 1 (a) qui est une représentation d'un mécanisme de traduction d'adresses de mémoires Le mécanisme de segmentation traduit une adresse segmentée (logique) 100 en une adresse prévue pour un espace d'adresses continu, non segmenté, appelée adresse linéaire 110 Si une pagination est validée, le mécanisme de pagination 115 traduit l'adresse linéaire 110 en une adresse physique Si la pagination 115 n'est pas validée, l'adresse t linéaire 110 est utilisée comme adresse physique 120. L'adresse physique 120 apparait finalement sur le bus d'adresses sortant du processeur. On peut trouver un exemple d'un système de gestion de mémoire implanté dans les microprocesseurs i 486 TM fabriqué par Intel Corporation à Santa Clara, Californie, le Cessionnaire de la présente demande. Dans les microprocesseurs i 486 TM, une adresse logique est constituée par un sélecteur de segments de 16 bits, pour son segment, et un décalage de 32 bits vers le segment En se référant à la Fig 1 (a), une adresse logique 100 est traduite en adresse linéaire 110 en ajoutant un décalage 101 à l'adresse de base 103 du segment L'adresse de base 103 est dérivée d'un descripteur de segments 104, qui est une structure de données en mémoire qui fournit la dimension et l'emplacement d'un segment, ainsi qu'une information de commande d'accès Par exemple, le descripteur de segments dans un microprocesseur i 486 TM provient de l'une de deux tables, la table globale de descripteurs (GDT) ou la table locale de descripteurs (LDT) Il existe une table globale de descripteurs pour tous les programmes du système, et une table locale de descripteurs pour chaque programme, ou tâche, à mettre en oeuvre Si le système d'exploitation le permet, différents programmes peuvent partager la même table locale de descripteurs Le système peut également être installé sans aucune table locale de descripteurs; tous les programmes utiliseront alors la table globale de descripteurs En vue d'une information plus détaillée concernant les microprocesseurs i 486 TM, on se référera au i 486 TM Microprocessor: Programmer's Reference Manual (ou Manuel de référence du programmeur du microprocesseur i 486 TM), disponible chez Intel Corporation, Santa Clara, Californie. L'adresse traduite est une adresse linéaire 110. Si un mécanisme de pagination n'est pas utilisé, l'adresse linéaire 110 est une adresse physique 120 Si une pagination est utilisée, il faut un deuxième niveau de traduction d'adresses pour produire une adresse physique 120. On se réfère à nouveau à la Fig l(a) Le sélecteur de segments 102 est représenté comme indiquant un descripteur de segments 104 qui définit un segment Un programme des microprocesseurs i 486 TM peut demander davantage de segments que les sélecteurs de segments occupant actuellement des registres de segments Lorsque tel est le cas, le programme utilise des formes d'instructions MOVE (c'est-à-dire déplacer) pour modifier le contenu des registres de segments lorsqu'il doit accéder à un nouveau segment Comme représenté à la Fig 1 (b), le sélecteur de segments 132 identifie un descripteur de segments en spécifiant une table de descripteurs 133 et un index de descripteurs 134 à l'intérieur de cette table. On se réfère maintenant à la Fig 2, o est illustré un format de descripteur dans le microprocesseur i 486 TM Cependant, puisque le format de descripteur doit obligatoirement fournir une compatibilité vers l'arrière pour des architectures de processeurs antérieurs, le format de descripteur devient brouillé lorsqu'il est mémorisé dans la mémoire Pour simplifier des opérations internes de processeur, un descripteur brut brouillé doit être transformé en un descripteur débrouillé Cette transformation d'un descripteur brouillé de segments 300 en un descripteur débrouillé de segments 310, pour les processeurs i 486 TM, est illustrée à la Fig 3. En outre, un cache de descripteurs de segments comme décrit dans la demande mentionnée ci-dessus également en cours d'examen peut être utilisé pour retenir des descripteurs précédemment recherchés, débrouillés et essayés quant à leur protection d'une manière telle que, lors de charges ultérieures de registres de segments, on peut utiliser comme source du descripteur le cache de descripteurs de segments et le descripteur peut être chargé directement, en un signal d'horloge, dans le fichier de registre de descripteurs de segments en contournant ainsi tout le travail et toutes les servitudes habituellement associés à des charges de registres de segments La Fig 9 représente la hiérarchie à trois niveaux de la mémoire principale 900, le cache de données de processeur 910 et le cache de descripteur 920 du processeur qui existent lorsqu'un cache de descripteurs 920 est introduit dans un microprocesseur Il devrait être clair pour l'homme de l'art que des mécanismes doivent être employés à chaque niveau pour assurer que les données de descripteur maintenues à un niveau sont cohérentes avec le descripteur de données du niveau précédent. Comme décrit plus loin, la présente invention décrit un système perfectionné de gestion de mémoire destiné à un ordinateur dans lequel une cohérence entre un cache de descripteurs et un cache de données est préservée à l'aide d'un mécanisme de bit d'inclusion. Selon un mode de réalisation, il est placé pour un descripteur contenu dans une ligne de cache de données un bit d'inclusion couplé à un cache de données indiquant que le même descripteur non débrouillé est également mémorisé en cache dans le cache de descripteurs Ainsi, le bit d'inclusion indique une association entre la ligne de cache de données et le cache de descripteurs Chaque fois qu'une donnée du cache de données à bit d'inclusion placé est altérée, modifiée ou enlevée, tout le cache de descripteurs est vidé afin de refléter le fait que le descripteur contenu dans le cache de descripteurs n'est plus valide ou que l'association n'est plus valide Par conséquent, le bit d'inclusion maintient une cohérence de cache entre le cache de descripteurs et le cache de données. Des mécanismes existants de caches, sous forme de matériel, maintiennent eux-mêmes une cohérence de cache entre le cache de données et la table de mémoire dans la mémoire principale. C'est donc un but de la présente invention que de réaliser un système de gestion de mémoire à cohérence accrue de mémoire. C'est un autre but de la présente invention que de réaliser un système de gestion de mémoire à cohérence accrue de cache, mais sans dégradation de performance du descripteur de segments. De façon spécifique, pour atteindre ces buts, l'invention fournit, selon un premier aspect, un procédé de maintien d'une cohérence de caches entre un cache de données et un cache de descripteurs de segments dans un système de gestion de mémoire d'un ordinateur, ledit système de gestion de mémoire comprenant une table de descripteurs couplée à une série d'unités de traitement de données afin de mémoriser des descripteurs de segments dans un premier format, un cache de données couplé à l'une desdites unités de traitement de données pour mémoriser des descripteurs de segments dans ledit premier format, et un cache de descripteurs de segments couplé à l'une desdites unités de traitement de données pour mémoriser des descripteurs de segments dans un deuxième format, caractérisé en ce qu'il comprend les étapes consistant à: réaliser un sélecteur de segments, ledit sélecteur de segments spécifiant un descripteur de segments dans un premier format dans une table de descripteurs; récupérer, dans ladite table de descripteurs, t ledit descripteur de segments dans ledit premier format en réponse audit sélecteur de segments; mémoriser dans un cache de données ledit descripteur de segments dans ledit premier format; formater dans ledit deuxième format ledit descripteur de segments formaté dans ledit premier format; mémoriser dans un cache de descripteurs de segments ledit descripteur de segments formaté dans ledit deuxième format; placer dans ledit cache de données un bit d'inclusion, ledit bit d'inclusion correspondant audit descripteur de segments dans ledit premier format d'une manière telle que ledit bit d'inclusion indique que ledit descripteur de segments dans ledit premier format dans ledit cache de données est associé audit descripteur de segments dans ledit deuxième format dans ledit cache de descripteurs de segments; vérifier ledit cache de données pour déterminer si ledit descripteur de segments dudit premier format est altéré par ladite unité de traitement de données; vider ledit cache de descripteurs de segments si ledit descripteur de segments dans ledit premier format est altéré par ladite unité de traitement de données, grâce à quoi ledit cache de descripteurs de segments est vidé chaque fois qu'un descripteur de segments dudit cache de données, comprenant un bit d'inclusion placé, est modifié par son unité de traitement de données. De préférence le procédé selon comprend en outre les étapes consistant à: placer dans ledit cache de données un bit valide pour un descripteur de segments dans un premier format correspondant au même descripteur de segments dans ledit premier format dans ladite table de descripteurs d'une manière telle que ledit bit valide indique que ledit descripteur de segments dans ledit premier format dans ledit cache de données est associé au même descripteur de segments dans ladite table de descripteurs; vérifier ladite table de descripteurs pour déterminer si ledit descripteur de segments dans ledit premier format est altéré d'une manière telle que sa contre-partie dans ledit cache de données est différente dudit descripteur de segments; restaurer ledit bit valide si ledit descripteur de segments dans ledit premier format dans ladite table de descripteurs est altéré; vider ledit cache de descripteurs de segments si ledit descripteur de segments dans ledit premier format est altéré lorsque son bit d'inclusion est placé, grâce à quoi ledit cache de descripteurs de segments est vidé chaque fois qu'un descripteur de segments dans ledit cache de données, comprenant un bit d'inclusion placé, est altéré dans ladite table de descripteurs. Selon un deuxième aspect, l'invention réalise un système de mémoire pour ordinateur, caractérisé en ce que ledit système de mémoire est représenté par une série de segments comprenant: une table de descripteurs couplée à une série d'agents de mémorisation d'une série de descripteurs dans un premier format, chacun desdits descripteurs de la série étant spécifié par un sélecteur de segments reçus desdits agents; un cache de données couplé à l'un desdits agents pour mémoriser en cache une série de descripteurs formatés dans ledit premier format; un moyen de formatage de descripteur couplé audit cache de données pour formater, dans un deuxième format de descripteurs, des descripteurs formatés dans ledit premier format d'une manière telle que lesdits descripteurs dans le dit deuxième format soient utilisés par ledit agent pour sélectionner leurs segments correspondants; un cache de descripteurs couplé audit cache de données pour mémoriser en cache lesdits descripteurs dudit deuxième format, chacun desdits descripteurs dudit deuxième format étant utilisé pour sélectionner l'un desdits segments; une série de bits d'inclusion couplée audit cache de données, chacun desdits bits d'inclusion correspondant à un descripteur dudit premier format dans ledit cache de données; un moyen de placement de bits d'inclusion couplé auxdits bits d'inclusion pour placer chacun desdits bits d'inclusion afin d'indiquer qu'un descripteur dudit premier format dudit cache de données est associé à un descripteur dudit deuxième format dudit cache de descripteurs; un moyen de vérification de bits d'inclusion pour déterminer si un descripteur quelconque dudit premier format, dont le bit d'inclusion est placé dans ledit cache de données, est altéré; un moyen de vidage de cache de descripteurs destiné à vider ledit cache de descripteurs si un descripteur quelconque du premier format, dont le bit d'inclusion est placé dans ledit cache de données, est altéré, grâce à quoi ledit cache de descripteurs est vidé chaque fois qu'est altéré un descripteur dudit premier format dudit cache de données dont le bit d'inclusion est placé. De préférence, le système comprend en outre une série de bits valides couplée audit cache de données pour placer un bit valide correspondant à un descripteur dudit premier format afin d'indiquer que ledit descripteur dans ledit premier format est mémorisé en cache dans ledit cache de données à partir d'un descripteur de ladite table de descripteurs; un moyen de vérification de bits valides couplé audit cache de données pour vérifier si un descripteur de ladite table de descripteurs, correspondant à un descripteur dudit premier format dans ledit cache de données o un bit valide est placé, est altéré et, si tel est le cas, pour amener à l'aide dudit moyen de vérification de bits valides ledit moyen de vérification de bits d'inclusion à déterminer si un bit d'inclusion est placé pour ledit descripteur dans ledit cache de données; un moyen de vidage de cache de descripteurs pour vider ledit cache de descripteurs si le bit d'inclusion dudit descripteur dans ledit premier format est placé dans ledit cache de données, grâce à quoi ledit cache de descripteurs est vidé chaque fois qu'est altérée l'entrée dans la table de descripteurs correspondant à un descripteur à bit d'inclusion placé. Les buts et avantages de la présente invention, ainsi que d'autres, ressortiront mieux de la description détaillée d'un exemple de réalisation donné ci-dessous, prise en liaison avec les dessins Les figures représentent: la FIGURE 1 (a) un mécanisme de traduction d'adresses de mémoires; la FIGURE 1 (b) le format d'un sélecteur de segments; la FIGURE 2 le format d'un descripteur de segments; la FIGURE 3 le processus de débrouillage d'un descripteur brouillé de segments; la FIGURE 4 un schéma logique du processus de charge d'un registre de segments en mode protégé; la FIGURE 5 un schéma fonctionnel d'un système de segmentation de mémoire; la FIGURE 6 un schéma logique illustrant l'opération d'une charge de descripteur de segments; la FIGURE 7 un cache de descripteurs actuellement implanté; La FIGURE 8 illustre le mode de réalisation préféré du système de gestion de mémoire actuellement revendiqué La FIGURE 9 illustre la hiérarchie de mémoire à trois niveaux mise en oeuvre actuellement dans la présente invention. La FIGURE 10 illustre un algorithme de remplacement actuellement mis en oeuvre dans la présente invention. Il est décrit un système perfectionné de gestion de mémoire, destiné à des opérations de mémoire dans des microprocesseurs, qui est particulièrement applicable à une utilisation dans des systèmes de microprocesseurs à segmentation de mémoire afin il d'atteindre une cohérence de cache entre un cache de descripteur et un cache de données Pour les buts de l'explication, on exposera, dans la description qui suit, des mémoires, des organisations, des architectures, des vitesses de données spécifiques, etc afin de permettre une compréhension complète de la présente invention Cependant, l'homme de l'art comprendra que la présente invention peut être mise en oeuvre sans ces détails spécifiques Dans d'autres cas, des circuits bien connus sont représentés sous formes de schémas fonctionnels afin de ne pas obscurcir de façon inutile la présente invention. On se réfère maintenant à la Fig 4, dans t laquelle le processus de chargement d'un registre de segments est décrit dans un format de schéma fonctionnel L'homme de l'art comprendra que la charge de registre de segments est à la base de tout schéma de gestion de mémoire par segmentation Comme représenté, lorsque le processeur rencontre un sélecteur provenant d'une instruction telle que MOVE SEG REG, le processeur essaie d'abord le sélecteur quant à toute violation de privilège d'une manière telle qu'un programme moins privilégié ne puisse pas utiliser un programme plus privilégié pour accéder à des données protégées Si l'on ne trouve aucune violation de privilège, un descripteur à 8 octets est recherché par le processeur dans la mémoire/le cache de données sur la base de l'identification, par le sélecteur, d'une table de descripteurs et d'un descripteur à l'intérieur de cette table Ce descripteur est essayé quant à des violations de privilège Si l'on ne trouve aucune violation de privilège, le descripteur est débrouillé et une information concernant le segment, par exemple la dimension et l'emplacement du segment, ainsi que l'information de commande et de statut, peut être chargée dans le registre de segments pour que le programme l'exécute. On se réfère maintenant à la Fig 5 dans laquelle est représenté le système de charge de registres de segments incorporant un cache de descripteurs L'homme de l'art doit comprendre que les dimensions des bus ne sont données qu'à titre d'illustration seulement et que la présente invention peut être mise en oeuvre sans le détail spécifique de l'illustration Comme représenté à la Fig 5, un système 500 comprend un dispositif d'essai 510 de privilège de sélecteur pour vérifier des violations quelconques de privilège dans un sélecteur 501 d'une manière telle qu'un programme moins privilégié ne puisse pas gagner un accès à une donnée protégée Tel qu'il est utilisé dans le microprocesseur actuel, lorsque le champ de privilège du sélecteur de segments contient un niveau de privilège à valeur plus élevée (c'est-à- dire moins privilégié) que le programme, le sélecteur a priorité par rapport au niveau de privilège du programme Si le sélecteur 501 est satisfaisant, c'est-à-dire qu'il réussit, au dispositif d'essai de privilège 510, il est transféré au générateur 520 d'adresses de descripteurs Le générateur 520 d'adresses de descripteurs engendre ensuite l'adresse appropriée du descripteur dans la table de descripteurs pour le sélecteur Actuellement, on utilise deux tables de descripteurs: table globale et table locale de descripteurs Le processus de génération d'adresses implique de modifier le segment actuel, pour spécifier une table sur la base de la sélection effectuée par le sélecteur 501, et de placer l'Adresse Effective à la valeur d'index du sélecteur A l'aide de l'Adresse Effective, un descripteur peut être recherché dans la mémoire 530 et entré en sas dans le débrouilleur 550 et le dispositif d'essai 540 de descripteurs Le dispositif d'essai 540 de descripteurs vérifie le descripteur pour commander son accès aux segments S'il apparait une violation d'accès, un défaut est engendré vers le processeur Si aucune violation n'apparait, le débrouilleur 550 transforme le descripteur en une forme interne débrouillée comme représenté à la Fig 3 Un descripteur satisfaisant est chargé dans un fichier 560 de registres de segments et mis à jour dans le cache 570 de descripteurs pour être utilisé ultérieurement. On se réfère aussi à la Fig 6 dans laquelle est représenté un schéma logique identifiant la séquence d'opérations d'une charge de descripteur de segments. Lorsque le sélecteur 501 est rencontré, par exemple dans une instruction 1 OV Sreg, le cache 570 de descripteurs est consulté Si un descripteur correspondant est trouvé ("une réussite"), le descripteur est chargé à partir du cache 570 de descripteurs vers le fichier 560 de registre de segments, en même temps que le sélecteur 501 Si aucun descripteur correspondant n'est trouvé ("une erreur"), le sélecteur 501 est essayé quant à des violations de privilège d'une manière telle qu'un défaut puisse être engendré pour un sélecteur à niveau insuffisant de privilège Si le sélecteur 501 est satisfaisant au dispositif d'essai 510 de privilège, l'adresse linéaire de descripteur peut être calculée et le descripteur est recherché dans la mémoire 530 Le descripteur est également essayé quant à son niveau de privilège et un défaut est engendré pour toutes violations de privilège Le descripteur est débrouillé et le descripteur débrouillé est chargé dans le fichier 560 de registre de segments Le descripteur non débrouillé est également utilisé pour mettre à jour le cache 570 de descripteur,. On se réfère maintenant à la Fig 7, dans laquelle est représenté un schéma d'un cache de descripteurs de segments mis en oeuvre actuellement. Bien que l'on ait illustré un cache associatif d'ensemble à ensemble de 4-par-16, l'homme de l'art comprendra que d'autres organisations peuvent facilement être mises en oeuvre pour parvenir à la fonctionnalité souhaitée Le cache 770 de descripteurs est divisé en trois réseaux: le réseau d'étiquettes 720, le réseau de données 730, le réseau d'éléments le moins récemment utilisés ("LRU") Les bits de sélecteur l 4:3} sont utilisés comme le numéro d'ensemble et l'index vers le cache de descripteurs Chaque ensemble est composé de 4 "routes", dont chacune est explorée de manière associative quant à l'entrée souhaitée. L'entrée la moins fréquemment utilisée 715 est composée de 3 bits utilisés pour déterminer quelle "route" est l'ensemble le moins récemment utilisé. Lorsqu'une nouvelle entrée doit être placée dans le cache de descripteurs, l'entrée LRU de cet ensemble détermine quelle entrée sera remplacée avec un minimum d'impact sur la performance. L'étiquette 740 de descripteur provenant du réseau 720 d'étiquettes comprend les bits restants de sélecteur et le niveau de privilège du processeur lorsque l'entrée a été placée dans le cache de descripteurs L'étiquette contient aussi un bit valide 741 indiquant si l'entrée est valide, et un drapeau de segment de code (CS) 742 Le drapeau CS 742 est utilisé pour identifier le type de descripteur mémorisé dans le cache, puisque différentes vérifications de protection sont appliquées pour CS, à la différence du cas des segments de données Le réseau de données 730 contient des descripteurs débrouillés de segments, dont chacun contient des droits d'accès 751, une adresse de base 752, et une limite 753. On se réfère maintenant à la Fig 8, qui est une représentation du système de gestion de mémoire incorporant la présente invention Comme représenté, le cache 820 de descripteurs de segments maintient une cohérence avec le cache 810 de données en utilisant un mécanisme à bit d'inclusion de cache de données Le cache de données 810 maintient une cohérence avec la table de descripteurs 800 de la mémoire principale à l'aide d'un protocole de codage à quatre états appelé "MESI" Le protocole "'MESI" est utilisé dans de nombreuses structures de microprocesseur de la génération actuelle et il n'est donc pas décrit dans la présente demande Des descripteurs sont mémorisés dans la table de descripteurs 800, qui réside typiquement dans la mémoire principale Le descripteur 805 peut être recherché dans la table de descripteurs 800 à l'aide du bus 830 et chargé dans le cache de données 810 Lorsque des données ou des descripteurs sont chargés dans la ligne de cache de données 806, un bit valide 816 est placé, indiquant que le cache de données 810 contient une donnée valide dans cette ligne de cache Lorsque le descripteur 806 est mémorisé en cache dans le cache de descripteurs 820 en réponse à une charge du sélecteur de segments, un bit d'inclusion 814 correspondant au descripteur 806 est placé dans le cache de données 810 afin d'indiquer que le descripteur 806 dans le cache de données 810 est associé au descripteur 825 du cache de descripteurs 820 En outre, le bit valide 826 d'entrée de descripteur est placé, indiquant que le cache de descripteurs 820 contient une entrée valide Le descripteur 825 est la version essayée et débrouillée du descripteur 806, tel que décrit en liaison avec le cache de descripteurs ci- dessus Typiquement, d'autres microprocesseurs (non représentés) du système peuvent accéder à la table 800 de descripteurs et la modifier par l'intermédiaire du bus 830 Ainsi, chaque fois que le descripteur 806, dont le bit d'inclusion 814 est placé dans le cache de données 810, est modifié ou évacué, tout le cache de descripteurs 820 est vidé pour préserver la cohérence. De plus, tous les bits d'inclusion du cache de données 810 sont effacés afin d'indiquer la dissociation entre le cache de données 810 et le cache de descripteurs 820 après le vidage Un vidage de cache de descriptemrs 820 efface tous les bits 826 valides d'entrées L'homme de l'art devrait comprendre que la cohérence entre la table de descripteurs 800 et le cache de données 810 est maintenue par les bits valides de cache 815 d'une manière telle que, si un descripteur 805 est modifié dans la table de descripteurs 800, chaque contrepartie devient invalide dans le cache de données 810. En outre, en se référant à la Fig 8, une modification d'une ligne quelconque de cache de données, ou sa sortie de mémoire principale, lorsque le bit d'inclusion est placé, vide toutes les entrées du cache de descripteurs Puisque le mécanisme de vidage ne précise pas l'entrée exacte du cache de descripteurs qui est en cours de dissociation, d'autres entrées qui pourraient maintenir une association sont également dissociées Par conséquent, certaines entrées sont vidées lorsque ceci n'est pas nécessaire, ce qui pourrait avoir un effet défavorable sur la performance. L'homme de l'art doit comprendre qu'il faut limiter dans toute la mesure du possible des vidages de caches de descripteurs Des vidages dus à des sorties de lignes de cache de données hors de la mémoire peuvent être réduits en polarisant l'algorithme de remplacement dans le cache de données 810 Le cache de données 810 est associatif à deux voies et maintient le bit le moins fréquemment utilisé (LRU) (non représenté) afin de déterminer quelle entrée il faut remplacer avec une perte minimale de performance Le bit d'inclusion est utilisé pour polariser l'algorithme de remplacement comme représenté à la Fig 10 Il devrait également être clair pour l'homme de l'art que le mécanisme de cohérence de cache utilisant des bits d'inclusion est supérieur à d'autres mécanismes sous de nombreux aspects Il est supérieur à un mécanisme utilisant, pour indiquer quelle entrée doit être vidée, un indicateur situé dans le cache de données, qui exige des bits additionnels d'adressage dans le cache de données Il est également supérieur à un mécanisme qui maintient, dans le cache de descripteurs, des adresses de descripteur du cache de données d'une manière telle que l'adresse d'un descripteur modifié sera comparée à celle d'un cache de descripteurs Un tel schéma exige typiquement que le cache de descripteurs maintienne des adresses complètes et compare chacune de ses adresses chaque fois qu'une entrée du cache de données est modifiée D'autres mécanismes de cohérence de caches de descripteurs exigent typiquement plus d'équipement, ce qui réduirait la dimension du cache de descripteurs qui pourrait être formé. En se référant à la Fig 8, le cache de données 810 est également représenté avec des bits valides 815 correspondant à des descripteurs du cache de données 810 Le bit valide 816 est placé chaque fois que le descripteur 805 provenant de la table de descripteurs 800 est caché dans le cache de données 810 Le bit valide 816 reste placé jusqu'à ce que le descripteur 805 de la table de descripteurs 800 soit altéré d'une manière telle que le descripteur 806 du cache de données 810 n'est plus valide en ce qui concerne son association avec le descripteur 805 de la table de descripteurs 800 En outre, quand le bit valide 816 est restauré, le cache de descripteurs 820 est également vidé si le bit d'inclusion 814 du descripteur 806 est placé, c'est-à-dire que le descripteur 806 est dissocié du descripteur 825 du cache de descripteurs 820 Avec la mise en oeuvre des bits valides 816 dans le cache de données 810, une cohérence de mémoire entre le cache de descripteurs 820 et la table de descripteurs 800 est maintenue parce que le cache de descripteurs 820 est vidé chaque fois qu'un descripteur 806 dont le bit d'inclusion 814 est placé est altéré dans le cache de données 810 et/ou chaque fois qu'un descripteur 805, à bit valide et à bit d'inclusion correspondant placé est altéré dans la table de descripteurs 800. Alors que la présente invention a été décrite en se référant aux Fig 1 à 8, on comprendra que les figures ne sont données qu'à titre d'illustration et ne limitent ni l'esprit ni le cadre de la présente invention. REVENDICATIONS 1 Procédé de maintien d'une cohérence de caches entre un cache de données et un cache de descripteurs de segments dans un système de gestion de mémoire d'un ordinateur, ledit système de gestion de mémoire comprenant une table de descripteurs couplée à une série d'unités de traitement de données afin de mémoriser des descripteurs de segments dans un premier format, un cache de données couplé à l'une desdites unités de traitement de données pour mémoriser des descripteurs de segments dans ledit premier format, et un cache de descripteurs de segments couplé à l'une desdites unités de traitement de données pour mémoriser des descripteurs de segments dans un deuxième format, caractérisé en ce qu'il comprend les étapes consistant à: réaliser un sélecteur de segments, ledit sélecteur de segments spécifiant un descripteur de segments dans un premier format dans une table de descripteurs; récupérer, dans ladite table de descripteurs, ledit descripteur de segments dans ledit premier format en réponse audit sélecteur de segments; mémoriser dans un cache de données ledit descripteur de segments dans ledit premier format; formater dans ledit deuxième format ledit descripteur de segments formaté dans ledit premier format; mémoriser dans un cache de descripteurs de segments ledit descripteur de segments formaté dans ledit deuxième format; placer dans ledit cache de données un bit d'inclusion, ledit bit d'inclusion correspondant audit descripteur de segments dans ledit premier format d'une manière telle que ledit bit d'inclusion indique que ledit descripteur de segments dans ledit premier format dans ledit cache de données est associé audit descripteur de segments dans ledit deuxième format dans ledit cache de descripteurs de segments; vérifier ledit cache de données pour déterminer si ledit descripteur de segments dudit premier format est altéré par ladite unité de traitement de données; vider ledit cache de descripteurs de segments si ledit descripteur de segments dans ledit premier format est altéré par ladite unité de traitement de données, grâce à quoi ledit cache de descripteurs de segments est vidé chaque fois qu'un descripteur de segments dudit cache de données, comprenant un bit d'inclusion placé, est modifié par son unité de traitement de données. 2 Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre les étapes consistant à: placer dans ledit cache de données un bit valide pour un descripteur de segments dans un premier format correspondant au même descripteur de segments dans ledit premier format dans ladite table de descripteurs d'une manière telle que ledit bit valide indique que ledit descripteur de segments dans ledit premier format dans ledit cache de données est associé au même descripteur de segments dans ladite table de descripteurs; vérifier ladite table de descripteurs pour déterminer si ledit descripteur de segments dans ledit premier format est altéré d'une manière telle que sa contre-partie dans ledit cache de données est différente dudit descripteur de segments; restaurer ledit bit valide si ledit descripteur de segments dans ledit premier format dans ladite table de descripteurs est altéré; vider ledit cache de descripteurs de segments si ledit descripteur de segments dans ledit premier format est altéré lorsque son bit d'inclusion est placé, grâce à quoi ledit cache de descripteurs de segments est vidé chaque fois qu'un descripteur de segments dans ledit cache de données, comprenant un bit d'inclusion placé, est altéré dans ladite table de descripteurs. 3 Système de mémoire pour ordinateur, caractérisé en ce que ledit système de mémoire est représenté par une série de segments comprenant: une table ( 800) de descripteurs couplée à une série d'agents de mémorisation d'une série de descripteurs ( 805) dans un premier format, chacun desdits descripteurs de la série étant spécifié par un sélecteur de segments reçus desdits agents; un cache ( 810) de données couplé à l'un desdits agents pour mémoriser en cache une série de descripteurs ( 815, 816) formatés dans ledit premier format; un moyen de formatage de descripteur couplé audit cache ( 810) de données pour formater, dans un deuxième format de descripteurs, des descripteurs formatés dans ledit premier format d'une manière telle que lesdits descripteurs dans le dit deuxième format soient utilisés par ledit agent pour sélectionner leurs segments correspondants; un cache ( 820) de descripteurs couplé audit cache ( 810) de données pour mémoriser en cache lesdits descripteurs ( 825, 826) dudit deuxième format, chacun desdits descripteurs dudit deuxième format étant utilisé pour sélectionner l'un desdits segments; une série de bits d'inclusion ( 814) couplée audit cache ( 810) de données, chacun desdits bits d'inclusion ( 814) correspondant à un descripteur dudit premier format dans ledit cache ( 810) de données; un moyen de placement de bits d'inclusion couplé auxdits bits d'inclusion ( 814) pour placer chacun desdits bits d'inclusion afin d'indiquer qu'un descripteur dudit premier format dudit cache ( 810) de données est associé à un descripteur dudit deuxième format dudit cache ( 820) de descripteurs; un moyen de vérification de bits d'inclusion ( 814) pour déterminer si un descripteur quelconque dudit premier format, dont le bit d'inclusion est placé dans ledit cache ( 810) de données, est altéré; un moyen de vidage de cache ( 820) de descripteurs destiné à vider ledit cache ( 820) de descripteurs si un descripteur quelconque du premier format, dont le bit d'inclusion ( 814) est placé dans ledit cache ( 810) de données, est altéré, grâce à quoi ledit cache ( 820) de descripteurs est vidé chaque fois qu'est altéré un descripteur dudit premier format dudit cache ( 810) de données dont le bit d'inclusion ( 814) est placé. 4 Système selon la revendication 3, caractérisé en ce qu'il comprend en outre: une série de bits valides couplée audit cache ( 810) de données pour placer un bit valide ( 815, 816) correspondant à un descripteur dudit premier format afin d'indiquer que ledit descripteur dans ledit premier format est mémorisé en cache dans ledit cache ( 810) de données à partir d'un descripteur de ladite table ( 800) de descripteurs; un moyen de vérification de bits valides ( 815, 816) couplé audit cache ( 810) de données pour vérifier si un descripteur de ladite table ( 800) de descripteurs, correspondant à un descripteur dudit premier format dans ledit cache ( 810) de données o un bit valide est placé, est altéré et, si tel est le cas, pour amener à l'aide dudit moyen de vérification de bits valides ( 815, 816) ledit moyen de vérification de bits d'inclusion à déterminer si un bit d'inclusion ( 814) est placé pour ledit descripteur dans ledit cache ( 810) de données; un moyen de vidage de cache ( 820) de descripteurs pour vider ledit cache ( 820) de descripteurs si le bit d'inclusion ( 814) dudit descripteur dans ledit premier format est placé dans ledit cache ( 810) de données, grâce à quoi ledit cache ( 820) de descripteurs est vidé chaque fois qu'est altérée l'entrée dans la table ( 800) de descripteurs correspondant à un descripteur à bit d'inclusion ( 814) placé.