FR2682783A1 - Maintien de coherence de caches. - Google Patents

Maintien de coherence de caches. Download PDF

Info

Publication number
FR2682783A1
FR2682783A1 FR9212339A FR9212339A FR2682783A1 FR 2682783 A1 FR2682783 A1 FR 2682783A1 FR 9212339 A FR9212339 A FR 9212339A FR 9212339 A FR9212339 A FR 9212339A FR 2682783 A1 FR2682783 A1 FR 2682783A1
Authority
FR
France
Prior art keywords
descriptor
format
cache
segment
descriptors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9212339A
Other languages
English (en)
Other versions
FR2682783B1 (fr
Inventor
Gary N Hammond
Dubey Pradeep
Mustafiz R Choudhury
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of FR2682783A1 publication Critical patent/FR2682783A1/fr
Application granted granted Critical
Publication of FR2682783B1 publication Critical patent/FR2682783B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

L'invention concerne un procédé de maintien d'une cohérence, entre un cache de données et un cache de descripteurs de segments, ainsi que le système de mémoire correspondant caractérisé en ce qu'il 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; 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; un cache (820) de descripteurs(825, 826) dudit deuxième format couplé audit cache (810) de données; une série de bits d'inclusion (814) couplée audit cache (810) de données, chacun correspondant à un descripteur; un moyen de placement de bits d'inclusion afin d'indiquer qu'un descripteur dudit premier format est associé à un descripteur dudit deuxième format; un moyen de vérification de bits d'inclusion (814); et un moyen de vidage de cache (820) de descripteurs si un descripteur dont le bit d'inclusion (814) est placé, est altéré.

Description

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.

Claims (4)

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é.
FR9212339A 1991-10-16 1992-10-15 Maintien de coherence de caches. Expired - Fee Related FR2682783B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/777,608 US5895489A (en) 1991-10-16 1991-10-16 Memory management system including an inclusion bit for maintaining cache coherency

Publications (2)

Publication Number Publication Date
FR2682783A1 true FR2682783A1 (fr) 1993-04-23
FR2682783B1 FR2682783B1 (fr) 1995-02-17

Family

ID=25110724

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9212339A Expired - Fee Related FR2682783B1 (fr) 1991-10-16 1992-10-15 Maintien de coherence de caches.

Country Status (5)

Country Link
US (1) US5895489A (fr)
JP (1) JPH05216766A (fr)
DE (1) DE4234695C2 (fr)
FR (1) FR2682783B1 (fr)
GB (1) GB2260630B (fr)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724549A (en) * 1992-04-06 1998-03-03 Cyrix Corporation Cache coherency without bus master arbitration signals
US6378023B1 (en) 1996-02-14 2002-04-23 Advanced Micro Devices, Inc. Interrupt descriptor cache for a microprocessor
US5926841A (en) * 1996-03-13 1999-07-20 Advanced Micro Devices, Inc. Segment descriptor cache for a processor
US6041396A (en) * 1996-03-14 2000-03-21 Advanced Micro Devices, Inc. Segment descriptor cache addressed by part of the physical address of the desired descriptor
WO2001044947A1 (fr) * 1999-12-17 2001-06-21 Sun Microsystems, Inc. Procede et dispositif de controle de memoire cache en vue de la recuperation d'espace memoire
US6918020B2 (en) * 2002-08-30 2005-07-12 Intel Corporation Cache management
US8510511B2 (en) 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8930635B2 (en) * 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
EP2764439B1 (fr) * 2011-10-07 2019-06-26 Hewlett-Packard Enterprise Development LP Mémoire à mappage persistant
US9608842B2 (en) * 2013-12-13 2017-03-28 Intel Corporation Providing, at least in part, at least one indication that at least one portion of data is available for processing
US10373285B2 (en) * 2017-04-09 2019-08-06 Intel Corporation Coarse grain coherency
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2176918A (en) * 1985-06-13 1987-01-07 Intel Corp Memory management for microprocessor system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60110056A (ja) * 1983-10-31 1985-06-15 Nec Corp デ−タ処理システムにおけるメモリのアドレス生成を動的に変更する方法
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JPH087680B2 (ja) * 1985-09-19 1996-01-29 日本電気株式会社 命令カウンタのロード装置
US5165027A (en) * 1986-01-24 1992-11-17 Intel Corporation Microprocessor breakpoint apparatus
US5053944A (en) * 1986-01-24 1991-10-01 Intel Corporation Microprocessor breakpoint apparatus
US4860195A (en) * 1986-01-24 1989-08-22 Intel Corporation Microprocessor breakpoint apparatus
DE3785897T2 (de) * 1986-02-28 1993-09-30 Nec Corp Steuervorrichtung zum vorabruf von befehlen.
AU603167B2 (en) * 1986-12-23 1990-11-08 Bull Hn Information Systems Inc. Segment descriptor unit
US5159686A (en) * 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US4959860A (en) * 1989-02-07 1990-09-25 Compaq Computer Corporation Power-on password functions for computer system
US5144551A (en) * 1989-05-19 1992-09-01 Compaq Computer Corporation Computer memory management method utilizing segmentation and protection techniques
GB2260629B (en) * 1991-10-16 1995-07-26 Intel Corp A segment descriptor cache for a microprocessor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2176918A (en) * 1985-06-13 1987-01-07 Intel Corp Memory management for microprocessor system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LU ET AL.: "Architecture of a VLSI MAP for BELLMAC-32 microprocessor", COMPCON 83 SPRING, DIGEST OF PAPERS, 28 February 1983 (1983-02-28), SAN FRANCISCO; US, pages 213 - 217 *
TELLER ET AL.: "Translation-Lookaside Buffer Consistency", COMPUTER, vol. 23, no. 6, June 1990 (1990-06-01), LONG BEACH US, pages 26 - 36 *

Also Published As

Publication number Publication date
DE4234695C2 (de) 1997-09-11
DE4234695A1 (de) 1993-04-22
GB9216794D0 (en) 1992-09-23
GB2260630A (en) 1993-04-21
US5895489A (en) 1999-04-20
FR2682783B1 (fr) 1995-02-17
GB2260630B (en) 1995-06-28
JPH05216766A (ja) 1993-08-27

Similar Documents

Publication Publication Date Title
US11625501B2 (en) Masking sensitive information in records of filtered accesses to unstructured data
US7841010B2 (en) Software or other information integrity verification using variable block length and selection
FR2682783A1 (fr) Maintien de coherence de caches.
US20120089781A1 (en) Mechanism for retrieving compressed data from a storage cloud
FR2977694A1 (fr) Microprocesseur protege contre un debordement de pile
US7809958B2 (en) Method for guaranteeing freshness of results for queries against a non-secure data store
WO1999012099A1 (fr) Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur
GB2516477A (en) Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure
US10664508B1 (en) Server-side filtering of unstructured data items at object storage services
FR2683061A1 (fr) Systeme de segmentation de memoire.
FR2472232A1 (fr) Dispositif et procede d'effacement d'antememoire
FR2754925A1 (fr) Operation atomique sur memoire distante et dispositif permettant d'effectuer cette operation
CN106599247A (zh) LSM‑tree结构中数据文件的合并方法及装置
CN115174158B (zh) 基于多云管理平台的云产品配置检查方法
FR2600441A1 (fr) Unite de gestion de memoire
EP0950957B1 (fr) Procédé pour accéder indifféremment en mode d'adressage physique et en mode d'adressage virtuel à une même zone mémoire de machine de traitement numérique et machine mettant en oeuvre ce procédé
FR2778254A1 (fr) Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache
FR2609195A1 (fr) Procede de gestion d'antememoires associees a des processeurs dans une architecture multiprocesseur a bus unique et systeme de traitement de donnees fonctionnant suivant ce procede
FR2871908A1 (fr) Procede et programme d'ordinateur de traitement d'une adresse virtuelle pour la programmation d'un controleur de dma et systeme sur puce associe
EP2860660A1 (fr) Système et méthode de chargement sécurisé de données dans une mémoire cache associée à un processeur sécurisé
EP1155389B1 (fr) Dispositif d'acces securise a des applications d'une carte a puce
US9606783B2 (en) Dynamic code selection based on data policies
US8527711B2 (en) Method and system to preview new cacheable content
CA2264896A1 (fr) Module de securite comportant des moyens de creation de liens entre des fichiers principaux et des fichiers auxiliaires
EP4180974A1 (fr) Procédé et système de gestion d'une mémoire cache

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20110630