FR2835937A1 - Identification d'entrees perimees dans un cache informatique - Google Patents
Identification d'entrees perimees dans un cache informatique Download PDFInfo
- Publication number
- FR2835937A1 FR2835937A1 FR0213581A FR0213581A FR2835937A1 FR 2835937 A1 FR2835937 A1 FR 2835937A1 FR 0213581 A FR0213581 A FR 0213581A FR 0213581 A FR0213581 A FR 0213581A FR 2835937 A1 FR2835937 A1 FR 2835937A1
- Authority
- FR
- France
- Prior art keywords
- bit
- age
- cache
- logical state
- state
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
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
Un seul bit d'âge (112, 114) peut être fourni pour chaque ligne (106) dans un cache, ou pour chaque index. A chaque fois qu'une ligne ou un index fait l'objet d'un accès, ou d'une écriture, le bit d'âge en correspondance est mis à un premier état logique. Une machine à états (116) vérifie de manière périodique l'état de chaque bit d'âge. Si un bit d'âge est au premier état logique, la machine à états met le bit d'âge à un deuxième état logique. Si le bit d'âge est déjà au deuxième état logique, alors la ligne de données en correspondance au bit d'âge, ou au moins une ligne dans le jeu de lignes qui en correspondance à l'index correspondant au bit d'âge, n'a pas fait l'objet d'un accès ou d'un changement depuis la dernière fois que la machine à états à vérifier le bit d'âge.
Description
dans ladit journal d'événements (14).
1- 2835937
CHAMP DE L' INVENTION
Cette invention se rapporte d'une manière générale à des systèmes informatiques et de manière plus
spécifique à des systèmes de mémoire cache.
ARRIERE PLAN DE L' INVENTION
La plupart des systèmes informatiques emploient une hiérarchie de systèmes de mémoires à plusieurs niveaux, avec une mémoire relativement rapide, coûteuse et de capacité limitée au niveau le plus élevé de la hiérarchie et en continuant par une mémoire relativement plus lente, de plus faible coût et de capacité supérieure au niveau le plus bas de la hiérarchie. De manière typique, la hiérarchie comprend une petite mémoire rapide appelée un cache, soit intogrée physiquement dans le circuit intogré du processeur soit montée physiquement proche du processeur pour la vitesse. Il peut exister des caches d' instructions et des caches de données séparés. Il peut exister plusieurs niveaux de caches. Beaucoup de systèmes informatiques emploient plusieurs processeurs,
chacun d'eux pouvant avoir plusieurs niveaux de cache.
Certains caches peuvent être partagés par plusieurs processeurs. Tous les processeurs et les caches peuvent
partager une mémoire principale commune.
De manière typique, une mémoire est organisée en
mots (par exemple des mots de 32 ou 64 bits).
Typiquement, la quantité minimum de mémoire qui peut être transférée entre un cache et un niveau inférieur qui fait suite dans la hiérarchie de la mémoire est appelée une ligne ou parfois un bloc. Une ligne est formoe typiquement de plusieurs mots (par exemple 16 mots par ligne). Une mémoire peut aussi être divisoe en
- 2 - 2835937
pages (appelées aussi segments), avec plusieurs lignes par page. Dans certains systèmes, la taille des pages peut être variable. Le présent document de brevet utilise le terme "ligne" pour des entrées de cache, mais l' invention est également applicable à des
organisations en blocs ou autres de la mémoire.
Beaucoup de systèmes informatiques utilisent plusieurs processeurs, chacun d'eux pouvant avoir plusieurs niveaux de cache. Certains caches peuvent être partagés par plusieurs processeurs. Tous les processeurs et les caches peuvent partager une mémoire principale commune. Une ligne particulière peut simultanément exister en mémoire et dans les hiérarchies de cache pour plusieurs processeurs. Toutes les copies d'une ligne dans les caches doivent être identiques, une propriété appelée cohérence. Les protocoles pour maintenir la cohérence pour plusieurs processeurs sont appelés des protocoles de cohérence de cache. 2 0 Les protocoles de cohérence de cache mettent, de manière commune, chaque ligne cachée dans un parmi plusieurs états. Une approche commune utilise trois états possibles pour chaque ligne dans un cache. Avant qu'une ligne quelconque soit placée dans le cache, toutes les entrées sont dans un état par défaut appelé "Invalide". Lorsqu'une ligne physique antérieurement non cachée est placce dans le cache, l'état de l'entrée dans le cache est modifié de Invalide à "Partagé" (Shared). Si une ligne est modifiée dans un cache, elle peut aussi être immédiatement modifiée en mémoire (une
opération appelée "write through", écrire au travers).
En variante, un cache peut écrire une ligne modifiée en mémoire uniquement lorsque la ligne modifiée dans le cache est invalidée ou remplacée (une opération appelée écriture en retour). Pour un cache à écriture en retour, lorsqu'une ligne dans le cache est modifiée, ou sera modifiée, l'état de l'entrce dans le cache est changé en "Modifié". L' affectation selon trois états qui vient d'être décrite est parfois appelée protocole MSI, faisant référence à la première lettre de chacun des trois états selon leurs terminologies anglosaxonnes
(Modified, Shared, Invalid).
Pour améliorer la performance, le système informatique essaye de conserver les donnces qui seront utilisoes bientôt dans la mémoire la plus rapide, qui de manière usuelle est un cache élevé dans la hiérarchie. Typiquement, lorsqu'un processeur demande une ligne, si la ligne n'est pas dans un cache pour le processeur ("raté" de cache), alors la ligne est copiée depuis la mémoire principale ou depuis un cache d'un autre processeur. Une ligne venant de la mémoire principale ou une ligne venant du cache d'un autre processeur, est aussi typiquement copiée dans un cache pour le processeur demandeur, en supposant que cette ligne particulière devra à nouveau faire l'objet d'un accès bientôt. Si un cache est plein, alors une nouvelle ligne doit remplacer une certaine ligne existante dans le cache. Si une ligne à remplacer est propre (la copie dans le cache est identique à la copie en mémoire principale), elle peut simplement être écrasée. Si une ligne à remplacer n'est pas propre (la copie dans le cache est différente de la copie en mémoire principale), alors la ligne doit d'abord être expulsée (copice en mémoire principale). Un algorithme de remplacement est utilisé pour déterminer quelle ligne dans le cache est remplacée. Un algorithme commun pour le remplacement consiste à remplacer la ligne
utilisée la moins récemment dans le cache.
Une préoccupation particulière relative à la performance dans le cas de grands systèmes
4 - 2835937
informatiques à plusieurs processeurs est l' impact sur la latence lorsqu'un processeur demande une ligne qui est cachée par un autre processeur. Si une ligne modifiée (malpropre) est cachée par un premier processeur, et que la ligne est demandée par un deuxTème processeur, la ligne est écrite en mémoire principale et elle est aussi transférée vers le cache demandeur (transfert de cache à cache). Pour un grand système à plusieurs processeurs, un transtert de cache à cache peut nécessiter une latence plus longue qu'un transfert depuis la mémoire principale. En outre, pour un grand système à plusieurs processeurs, un transfert de cache à cache peut engendrer du trafic sur les bus locaux qui ne serait pas nécessaire pour un transfert depuis une mémoire principale. Par conséquent, il est possible d'améliorer la latence moyenne en réduisant le nombre de transferts de cache à cache ce que l'on peut améliorer en retour par une expulsion préemptive des
lignes malpropres périmées.
En outre, pour de grands systèmes, même si une ligne dans le cache d'un autre processeur n'est pas malpropre, il peut exister une latence sensible mise en jeu lorsque l'on détermine si une ligne est réellement malpropre. Par exemple, dans le protocole de cohérence MSI, si une ligne est dans l'état Modifié, un processeur peut modifier la ligne sans informer un autre processeur. Une ligne dans l'état Modifié dans un cache peut en réalité être propre, ce qui signifie que la copie dans la mémoire principale peut être utilisée, mais un temps sensible peut être nocessaire pour déterminer si la ligne est propre ou malpropre. Par conséquent, la latence moyenne peut être améliorce par une expulsion préemptive des lignes périmées dans
l'état Modifié, même si elles sont propres.
Des systèmes pour déterminer l'âge de lignes
malpropres sont connus. Par exemple, le document US-
6,134,634 décrit un système dans lequel chaque ligne dans un cache possède un compteur associé qui est utilisé pour compter les cycles pendant lesquels la ligne n'a pas fait l'objet d'une écriture. Si le compte dépasse un nombre prédéterminé, cela détermine que la ligne est périmée et peut être expulsée. Il existe un besoin pour identifier des lignes périmées à moindre
faible coût.
RESUME DE L' INVENTION
L' invention prévoit un système de mémoire cache comprenant: un stockage pour une pluralité de valeurs de données; un stockage pour une pluralité de bits d' âge, chaque bit d' âge correspondant à au moins une des valeurs de données; et chaque bit d'âge indiquant si au moins une valeur de donnée en correspondance est périmée. Dans une variante de réal i sat ion du système de mémoire cache de la présente invention, on prévoit que chaque bit d'âge indique qu'au moins une valeur de donnée en correspondance est périmée lorsque le bit d'âge est resté à un état logique particulier pendant
au moins une durce temporelle prédéterminée.
Dans cette variante de réalisation du système de mémoire cache de la présente invention, on prévoit en outre une machine à états, la machine à états déterminant de manière périodique l'état de chaque bit d'âge et, pour chaque bit d'âge qui n'est pas à l'état logique particulier, mettant l'état du bit d'âge à
l'état logique particulier.
Dans une autre variante de réalisation du système de mémoire cache de la présente invention, on prévoit en outre que chaque bit d'âge indique en outre si au moins une valeur de donnée en correspondance est
6- 2835937
modifiée. Dans cette autre variante de réalisation du système de mémoire cache de la présente invention, on prévoit en outre que chaque bit d'âge peut indiquer si au moins une ligne de valeurs de données en correspondance est périmée et modifiée lorsque le bit d'âge est resté à un état logique particulier pendant
au moins une durée temporelle prédéterminée.
Dans cette autre variante de réalisation du système de mémoire cache de la présente invention, on prévoit en outre une machine à états, la machine à états déterminant de manière périodique l'état de chaque bit d'âge, et, pour chaque bit d'âge qui n'est pas à l'état logique particulier, mettant l'état du bit
d'âge à l'état logique particulier.
La présente invention prévoit en outre un procédé pour détecter si une entrée est périmée dans une mémoire cache, ce procédé comprenant les étapes consistant à: mettre un bit à un premier état logique lorsque l'entrée fait l'objet d'un accès; mettre le bit à un deuxième état logique; et déterminer que l'entrée est périmée lorsque le bit est au deuxième état logique après au moins une durée prédétermince
après avoir été mis au deuxième état logique.
Selon une variante de réalisation du procédé pour détecter si une entrée est périmée dans une mémoire cache conformément à la présente invention, ledit procédé comprend en outre les étapes consistant à: mettre le bit au premier état logique lorsque l'entrée fait l'objet d'une écriture; et déterminer que l'entrée est périmée et malpropre lorsque le bit est au deuxième état logique après au moins la durée prédéterminée après avoir été mis au deuxième état logique. La présente invention prévoit en outre un procédé
- 7 - 2835937
pour détecter si au moins une entrée parmi un jeu d'entrées dans une mémoire cache est périmée, comprenant les étapes consistant: mettre un bit à un premier état logique quand une entrée en correspondance à un index fait l'objet d'un accès; mettre le bit à un deuxième état logique; et déterminer qu'au moins une entrée en correspondance à l' index est périmoe lorsque le bit est au deuxième état logique après au moins une durée prédéterminée après avoir été mis au deuxième
état logique.
Selon une variante de réalisation du procédé pour détecter si au moins une entrée parmi un jeu d'entrces dans une mémoire cache est périmée conformément à la présente invention, ledit procédé comprend en outre les étapes consistant à: mettre le bit au premier état logique lorsqu'une entrée en correspondance à un index est modifiée; et déterminer qu'au moins une entrée en correspondance à l' index est périmée et malpropre lorsque le bit est au deuxième état logique après au moins une durce prédéterminée après avoir été mis au
deuxième état logique.
Dans un mode de réali sat ion donné à t itre d'exemple de l' invention, un système de cache peut identifier des lignes périmées avec une très petite
circuiterie incrémentielle.
BREVE DESCRIPTION DES DESSINS
La figure 1 est un schéma par blocs d'un exemple
de système qui inclut l'invention.
Les figures 2A et 2B sont des organigrammes de procédés pilotés par des événements conformes avec une partie d'un exemple de mode de réalisation de l'invention. La figure 3 est un organigramme d'un procédé conforme à une partie d'un exemple de mode de
- 8 - 2835937
réalisation de l' invention.
DESCRIPTION DETAILLEE DU MODE DE REALISATION
PREFERENTIEL DE L' INVENTION
Si un cache stocke une ligne d'adresses entière ainsi que des données, et qu'une ligne quelconque peut être placée à un endroit quelconque dans le cache, on
dit que le cache est complètement associatif.
Cependant, pour un grand cache dans lequel une ligne quelconque peut être placée à un endroit quelconque, le matériel nécessaire pour déterminer rapidement si (et o) une entrée est dans le cache peut être très important et coûteux. Pour de grands caches, une variante plus rapide, permettant de gagner de l'espace, consiste à utiliser un sous-ensemble d'une adresse (appelé un index) pour désigner un jeu de lignes à l'intérieur du cache et à stocker ensuite le jeu restant formé des bits plus significatifs de chaque adresse physique (appelée étiquette) ainsi que les donnces. Dans un cache à indexation, une rubrique ayant une adresse particulière peut uniquement être placce à
l'intérieur d'un jeu de lignes désignces par l' index.
Si le cache est arrangé de telle manière que l' index pour une adresse déterminée cartographie à exactement une ligne dans le sous-ensemble, on dit que le cache est à cartographie directe. Si l' index cartographie avec plus d'une ligne dans le sous-ensemble, on dit que le cache est associatif par jeu. L'adresse est numérotée, en intégralité ou en partie, pour fournir un index du jeu, ce qui réalise des partitions de l'espace
d'adresse en jeux.
Dans beaucoup d' architectures de mémoires informatiques, un processeur produit des adresses virtuel le s qui sont traduites par une combinai son de matériel et de logiciel en adresses physiques, qui
- 9- 2835937
accèdent à une mémoire physique principale. Un groupe d'adresses virtuelles peut être affecté de manière dynamique à chaque page. La mémoire virtuelle (pagination ou segmentation) demande une structure de données, appelée parfois une table de page, qui traduit l'adresse virtuelle en l'adresse physique. Pour réduire le temps de traduction des adresses, les ordinateurs utilisent de manière commune un cache associatif spécialisé dédié à la résolution de la traduction des adresses, appelé de manière commune le TLB (Translation Look-aside Buffer, tampon de traduction qui regarde de côté). La figure 1 illustre un exemple de cache pour un
système dans lequel l' invention peut être exécutée.
L'exemple spécifique de cache illustré à la figure 1 est un cache associatif par jeu à quatre voies avec un adressage virtuel. Cependant, l' invention est applicable à toute configuration de cache, y compris des caches à cartographie directe, des caches complètement associatifs et d'autres configurations de caches associatifs par jeu. Dans l'exemple de la figure 1, une adresse virtuelle 100 comprend des bits d' index de plus faible ordre 102 et des bits d'étiquette d'ordre plus élevé 104. Les bits d' index sont typiquement les mêmes pour l'adresse virtuelle et l'adresse physique. Les bits d' index sont utilisés pour sélectionner un jeu de lignes de données dans la section des données 106 du cache. La section sortie des données 106 consiste en quatre lignes de donnces. Les bits d' index sont aussi utilisés pour sélectionner un jeu d'étiquettes physiques dans la section des étiquettes 108 du cache. La sortie de la section des étiquettes 108 consiste en quatre étiquettes physiques, chacune correspondant à une ligne de données. Le TLB 110 stocke à la fois des étiquettes virtuelles et
- 10 - 2835937
physiques. Pour une opération de TLB réussie, le TLB fournit une étiquette physique qui correspond à l'étiquette virtuelle 104. Chacun des quatre comparateurs numériques (non illustrés) compare ensuite l'étiquette physique venant du TLB à une étiquette physique venant de la section des étiquettes 108. Une paire d'étiquettes physiques en correspondance indique par l'intermédiaire d'une logique (non illustrée) laquelle des quatre lignes de données est sélectionnée par un multiplexeur (non illustré). Notons que pour les bits d' index particuliers, il peut ne pas y avoir de paires d'étiquettes physiques correspondantes, auquel cas il y a un raté de cache. Un cache complètement associatif peut avoir une structure semblable à un TLB pour déterminer si une ligne est dans le cache et à
quel endroit.
Conformément à l' invention, des bits d'âge sont utilisés pour indiquer si des lignes dans le cache peuvent être périmées. Un bit d'âge est associé à chaque valeur d' index possible, ou, en variante à chaque ligne dans le cache. A la figure 1, la boite 112 indique un jeu de bits dâge, chaque bit d'âge étant associé à une valeur d' index. Les boites 114 indiquent une variante de conception, avec quatre jeux de bits d'âge, chaque bit d'âge étant associé à une ligne de données. Pour un cache complètement associatif, chaque bit d'âge serait associé à une ligne de données. Dans un cache cartographié directement, chaque bit d'âge serait associé à la fois à une valeur d' index et à une ligne de donnces. Il n'est pas nécessaire que les bits d'âge soient physiquement placés dans la section des étiquettes 108 du cache. Il est uniquement nécessaire d'avoir une relation de un à un avec les valeurs d' index ou, en variante, avec les lignes de données. Il est commun de stocker les informations de cohérence de
11- 2835937
cache dans la section des étiquettes 108, de sorte que des bits d'âge peuvent être ajoutés à la section des étiquettes avec peu de matériel incrémentiel. En outre, pour certaines architectures de processeur, la section des étiquettes 108 peut être intégrée sur la puce du processeur et la structure de données 106 peut être sur une puce séparée. Si la structure d'étiquettes 108 fait partie intégrante du processeur, les temps d'accès pour les bits d'âge sont diminués, ce qui facilite la manipulation des bits d'âge pendant la latence pour récupérer des données. Pour un cache complètement associatif, les bits d'âge peuvent être situés physiquement avec la structure identique à un TLB utilisce pour déterminer si une ligne de données est
dans le cache.
Une machine à états 116 boucle de manière périodique à travers tous les bits d'âge, comme cela est exposé d'une manière plus détaillée en conjanction avec la figure 3. Dans un but d' illustration uniquement, à la figure 1, la machine à états 116 est montrée comme interagissant avec des bits d'âge 112 associés avec chaque valeur d' index. Si les bits d'âge sont associés avec chaque ligne de données (les bits d'âge 114), alors la machine à états interagirait avec
les bits d'âge 114.
Les figures 2A et 2B illustrent un exemple de variantes de procédés pilotés par des événements, et la figure 3 illustre un exemple de procédé pour une machine à états (figure 1, 116). Tous les bits d'âge sont initialement prédisposés à un premier état logique (par exemple un ZERO logique) (figure 3, 300). Les bits d'âge peuvent ensuite être utilisés pour détecter si une ligne a fait l'objet d'un accès (lecture ou écriture) (figure 2A), ou, en variante, si une ligne a été modifiée (écriture seule) (figure 2B). Si
- 12 - 2835937
l'objectif est d'identifier des lignes périmées, alors à chaque fois qu'une ligne fait l'objet d'un accès (figure 2A, 200), le bit d'âge en correspondance est mis au premier état logique (figure 2A, 202). En variante, si l'objectif est d' identifier des lignes malpropres périmées, à chaque fois qu'une ligne fait l'objet d'une modification (écriture) (figure 2B, 204), le bit d'âge en correspondance est mis au premier état logique (figure 2B, 206). Si les bits d'âge font physiquement partie du cache, ils peuvent être mis au premier état logique par le cache. Si les bits d'âge sont physiquement séparés du cache, la machine à états (figure 1, 116) peut recevoir la valeur d' index et la machine à états peut mettre le bit d'âge en
correspondance au premier état logique.
La figure 3 illustre un exemple de procédé pour la machine à états (figure 1, 116), en supposant qu'il y a un bit d'âge pour chaque valeur d' index (figure 1, 112). A l'étape 300, chaque bit d'âge est initialisé à
un premier état logique, par exemple un ZERO logique.
L' index est initialisé à l'étape 302. La machine à états attend alors pendant un temps prédéterminé (étape 304) avant de vérifier l'état des bits d'âge. La machine à états boucle ensuite de manière répétitive à travers toutes les valeurs d' index. A l'étape 306, pour chaque valeur de l' index, la machine à états examine l'état du bit d'âge en correspondance. Si le bit d'âge est au premier état logique, alors à l'étape 308, la machine à états met le bit d'âge à un deuxième état logique (par exemple, UN logique). d Si le bit d'âge est déjà au deuxième état logique, à l'étape 310, une ligne dans le jeu de lignes en correspondance à la valeur de l' index peut être expulsée. Dans un cache associatif par jeu, il existe de nombreuses lignes qui correspondent à la valeur de
- 13 - 2835937
l' index et le système doit déterminer laquelle de ces nombreuses lignes expulser. Il peut y avoir plus d'une
ligne périmoe en correspondance à la valeur de l' index.
Il est commun pour des caches d'avoir un algorithme de remplacement, par exemple, "utilisé le moins récemment". Pour l'exemple d'un cache associatif par jeu à quatre voies, l'algorithme de remplacement peut être utilisé pour sélectionner une parmi quatre lignes associéss à une valeur d' index ayant un bit d'âge en correspondance au deuxième état logique. Il existe plusieurs variantes. Si l'objet est de détecter et d'expulser des lignes périmées, alors l'algorithme de remplacement peut être utilisé pour sélectionner l'une quelconque des lignes en correspondance à la valeur de l' index. En particulier, si l'algorithme de remplacement est " utilisé le moins récemment ", une ligne périmée sera expulsée. Si l'objet est de déterminer des lignes malpropres périmées, alors l'algorithme de remplacement peut être limité aux seules lignes modifices en correspondance à la valeur
de l' index.
Les étapes 312 et 314 bouclent les étapes 306 à 310 pour toutes les valeurs de l' index, et exécutent ensuite la période d'attente (étape 304) avant de répéter le cycle. Dans l'exemple de mode de réalisation de la figure 3, le temps d'attente 304 est un temps d'attente minimum et le temps de cycle glabal pour vérifier l'état d'un bit d'âge particulier quelconque peut être plus long d'une quantité variable que le temps minimum d'attente. Par exemple, il peut être préférable d'exécuter la boucle des index (figure 3, étapes 306 à 314) uniquement lorsque le cache est oisif, de sorte que le temps de cycle total pour vérifier l'état d'un bit d'âge quelconque peut dépendre de l'encombrement du cache. En outre, souvenons-nous
- 14 - 2835937
que chaque fois qu'une ligne fait l'objet d'un accès (ou, en variante, à chaque fois qu'une ligne fait l ' objet d'une écriture) le bit d' âge en correspondance est mis au premier état logique. Il en résulte que la mise des bits d'âge au premier état logique (figures 2A et 2B) est asynchrone au procédé de la figure 3. Par conséquent, le temps entre l'époque o un bit d'âge est mis au premier état logique et l'époque à laquelle il est vérifié par la machine à états est variable. En variante, la mise des bits d'état au premier état logique pourrait être rendue synchrone, par exemple en retardant la mise des bits d'état jusque juste avant ou après l'étape 304 de la figure 3, et la machine à états pourrait être exécutée avec des temps de cycle non
variables.
S'il existe un bit d'âge par ligne (figure 1, 114), par exemple dans un cache associatif par jeu à quatre voies, alors le système utilisant l'exemple de procédé de la figure 3 pourrait répéter les étapes 306 à 310 quatre fois, une fois pour chacun des quatre bits d'âge associé à chaque valeur de l' index. Pour un cache complètement associatif, le système pourrait reboucler à travers les entrces dans une structure de table de correspondance (par exemple une mémoire à contenu
adressable) au lieu de valeurs d' index.
Dans le système de cache résultant, des lignes périmées ou, en variante, des lignes malgropres périmoes, peuvent être identifiées en ajoutant uniquement un bit pour chacun des nombres de valeurs de l' index dans le cache ou un bit pour chacun des nombres
de lignes dans le cache, plus une machine à états.
La description précédente de la présente invention
a été présentée dans des buts d' illustration et de
description. Elle n'a pas l' intention d'être exhaustive
ou de limiter l' invention à la forme précise divulguce, et d'autres modifications et variations peuvent être possibles à la lumière des enseignements ci-dessus. Le mode de réali sat ion a été choi s i et décrit de maniè re à expliquer au mieux les principes de l' invention et de son application pratique pour permettre ainsi à d'autres personnes compétentes dans la technique d'utiliser l' invention au mieux dans divers modes de réali sat ion et diverses modifications qui conviendraient aux utilisations particulières
envisagées. L' intention est que les revendications
jointes soient destinces à inclure d'autres variantes de mode de réalisation de l' invention sauf dans la mesure o ils seraient limités par la technique anclenne.
- 16 - 2835937
Claims (10)
1. Système de mémoire cache, comprenant: un stockage (106) pour une pluralité de valeurs de données; un stockage (112, 114) pour une pluralité de bits d' âge, chaque bit d' âge correspondant à au moins une des valeurs de données; et chaque bit d'âge indiquant si au moins une valeur
de donnée en correspondance est périmée.
2. Système de mémoire cache de la revendication 1, dans lequel en outre: chaque bit d'âge indique qu'au moins une valeur de donnée en correspondance est périmée lorsque le bit d'âge est resté à un état logique particulier pendant au moins une durée temporelle prédéterminée.
3. Système de mémoire cache de la revendication 2, comprenant en outre: une machine à états (116), la machine à états déterminant de manière périodique l'état de chaque bit d'âge et, pour chaque bit d'âge qui n'est pas à l'état logique particulier, mettant l'état du
bit d'âge à l'état logique particulier.
4. Système de mémoire cache de la revendication 1, dans lequel en outre: chaque bit d'âge indique en outre si au moins une
valeur de donnée en correspondance est modifiée.
5. Système de mémoire cache de la revendication 4, dans lequel en outre:
- 17 - 2835937
chaque bit d'âge indique si au moins une ligne de valeurs de données en correspondance est périmée et modifiée lorsque le bit d'âge est resté à un état logique particulier pendant au moins une durée temporelle prédétermince.
6. Système de mémoire cache de la revendication 5, comprenant en outre: une machine à états (116), la machine à états déterminant de manière périodique l'état de chaque bit d'âge, et, pour chaque bit d'âge qui n'est pas à l'état logique particulier, mettant l'état du
bit d'âge à l'état logique particulier.
7. Procédé pour détecter si une entrée est périmoe dans une mémoire cache, comprenant les étapes consistant à: mettre (202) un bit à un premier état logique lorsque l'entrée fait l'objet d'un accès; mettre le bit à un deuxième état logique; et déterminer que l'entrée est périmée lorsque le bit est au deuxième état logique après au moins une durce prédéterminée après avoir été mis au
deuxième état logique.
8. Procédé de la revendication 7, comprenant en outre les étapes consistant à: mettre (206) le bit au premier état logique lorsque l'entrée fait l'objet d'une écriture; et déterminer (310) que l'entrée est périmée et malpropre lorsque le bit est au deuxième état logique après au moins la durée prédéterminée
après avoir été mis au deuxième état logique.
9. Procédé pour détecter si au moins une entrce parmi
18- 2835937
un jeu d'entrces dans une mémoire cache est périmée, comprenant les étapes consistant: mettre (202) un bit à un premier état logique quand une entrce en correspondance à un index fait l'objet d'un accès; mettre le bit à un deuxième état logique i et déterminer qu'au moins une entrce en correspondance à l' index est périmée lorsque le bit est au deuxième état logique après au moins une durée prédétermince après avoir été mis au
deuxième état logique.
10. Procédé de la revendication 9, comprenant en outre les étapes consistant à: mettre (206) le bit au premier état logique lorsqu'une entrce en correspondance à un index est modifiée; et déterminer qu'au moins une entrée en correspondance à l' index est périmée et malpropre lorsque le bit est au deuxième état logique après au moins une durée prédéterminée après avoir été
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/001,594 US20030084253A1 (en) | 2001-10-31 | 2001-10-31 | Identification of stale entries in a computer cache |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2835937A1 true FR2835937A1 (fr) | 2003-08-15 |
Family
ID=21696864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0213581A Pending FR2835937A1 (fr) | 2001-10-31 | 2002-10-30 | Identification d'entrees perimees dans un cache informatique |
Country Status (2)
Country | Link |
---|---|
US (1) | US20030084253A1 (fr) |
FR (1) | FR2835937A1 (fr) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096320B2 (en) * | 2001-10-31 | 2006-08-22 | Hewlett-Packard Development Company, Lp. | Computer performance improvement by adjusting a time used for preemptive eviction of cache entries |
US20030084249A1 (en) * | 2001-10-31 | 2003-05-01 | Johnson David J.C. | Preemptive eviction of stale entries is a computer cache by use of age-bits |
US7089362B2 (en) * | 2001-12-27 | 2006-08-08 | Intel Corporation | Cache memory eviction policy for combining write transactions |
US7080220B2 (en) * | 2003-07-03 | 2006-07-18 | International Business Machines Corporation | Page replacement with a re-reference indicator |
EP1667028A4 (fr) * | 2003-09-19 | 2008-10-29 | Matsushita Electric Ind Co Ltd | Antememoire et procede de commande d'antememoire |
US7033685B2 (en) * | 2003-10-07 | 2006-04-25 | Seagate Technology Llc | High coercivity perpendicular magnetic recording media on polymer substrates |
US10254968B1 (en) | 2015-06-10 | 2019-04-09 | Firquest Llc | Hybrid memory device for lookup operations |
US9892060B2 (en) | 2015-12-02 | 2018-02-13 | International Business Machines Corporation | Identifying stale entries in address translation cache |
US10564965B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
US10564967B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
US10620956B2 (en) | 2017-03-03 | 2020-04-14 | International Business Machines Corporation | Search string processing via inline decode-based micro-operations expansion |
US10255068B2 (en) * | 2017-03-03 | 2019-04-09 | International Business Machines Corporation | Dynamically selecting a memory boundary to be used in performing operations |
US10613862B2 (en) | 2017-03-03 | 2020-04-07 | International Business Machines Corporation | String sequence operations with arbitrary terminators |
US10324716B2 (en) | 2017-03-03 | 2019-06-18 | International Business Machines Corporation | Selecting processing based on expected value of selected character |
US10789069B2 (en) | 2017-03-03 | 2020-09-29 | International Business Machines Corporation | Dynamically selecting version of instruction to be executed |
US11687459B2 (en) * | 2021-04-14 | 2023-06-27 | Hewlett Packard Enterprise Development Lp | Application of a default shared state cache coherency protocol |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2795196A1 (fr) * | 1999-06-21 | 2000-12-22 | Bull Sa | Processus de liberation de pages physiques pour mecanisme d'adressage virtuel |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671391A (en) * | 1994-01-10 | 1997-09-23 | Ncr Corporation | Coherent copyback protocol for multi-level cache memory systems |
US5655103A (en) * | 1995-02-13 | 1997-08-05 | International Business Machines Corporation | System and method for handling stale data in a multiprocessor system |
US6134634A (en) * | 1996-12-20 | 2000-10-17 | Texas Instruments Incorporated | Method and apparatus for preemptive cache write-back |
US6026475A (en) * | 1997-11-26 | 2000-02-15 | Digital Equipment Corporation | Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space |
US6425057B1 (en) * | 1998-08-27 | 2002-07-23 | Hewlett-Packard Company | Caching protocol method and system based on request frequency and relative storage duration |
US6542861B1 (en) * | 1999-03-31 | 2003-04-01 | International Business Machines Corporation | Simulation environment cache model apparatus and method therefor |
US6490671B1 (en) * | 1999-05-28 | 2002-12-03 | Oracle Corporation | System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system |
US6678794B1 (en) * | 2000-06-14 | 2004-01-13 | International Business Machines Corporation | Smoothing bursts of disk load in a file system |
US6618793B2 (en) * | 2000-12-18 | 2003-09-09 | Redback Networks, Inc. | Free memory manager scheme and cache |
US6493801B2 (en) * | 2001-01-26 | 2002-12-10 | Compaq Computer Corporation | Adaptive dirty-block purging |
-
2001
- 2001-10-31 US US10/001,594 patent/US20030084253A1/en not_active Abandoned
-
2002
- 2002-10-30 FR FR0213581A patent/FR2835937A1/fr active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2795196A1 (fr) * | 1999-06-21 | 2000-12-22 | Bull Sa | Processus de liberation de pages physiques pour mecanisme d'adressage virtuel |
Non-Patent Citations (1)
Title |
---|
DEVILLE Y: "A LOW-COST USAGE-BASED REPLACEMENT ALGORITHM FOR CACHE MEMORIES", COMPUTER ARCHITECTURE NEWS, ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, US, vol. 18, no. 4, 1 December 1990 (1990-12-01), pages 52 - 58, XP000201914, ISSN: 0163-5964 * |
Also Published As
Publication number | Publication date |
---|---|
US20030084253A1 (en) | 2003-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929174B2 (en) | Atomic object reads for in-memory rack-scale computing | |
FR2835937A1 (fr) | Identification d'entrees perimees dans un cache informatique | |
CN101593160B (zh) | 减少来自侦听过滤器的后无效事务 | |
US8996809B2 (en) | Method and apparatus of accessing data of virtual machine | |
US7290116B1 (en) | Level 2 cache index hashing to avoid hot spots | |
US8196147B1 (en) | Multiple-processor core optimization for producer-consumer communication | |
EP1736887A2 (fr) | Repertoire de pages memoire | |
CA2577865A1 (fr) | Systeme et procede de virtualisation de ressources processeur | |
US20020188821A1 (en) | Fast priority determination circuit with rotating priority | |
Daglis et al. | SABRes: Atomic object reads for in-memory rack-scale computing | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US7707463B2 (en) | Implementing directory organization to selectively optimize performance or reliability | |
US20210311799A1 (en) | Workload allocation among hardware devices | |
US7519792B2 (en) | Memory region access management | |
WO2016049807A1 (fr) | Procédé de traitement de répertoire de cache et dispositif de commande de répertoire d'un système de processeur multicœur | |
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 | |
Abumwais et al. | Shared Cache Based on Content Addressable Memory in a Multi-Core Architecture. | |
US10146698B2 (en) | Method and apparatus for power reduction in a multi-threaded mode | |
EP3519973B1 (fr) | Architecture efficiente par zones pour lecture multivoies sur réseaux de mémoire adressable par le contenu (cam) hautement associative | |
CN108139980A (zh) | 用于合并存储器页的方法和存储器合并功能 | |
Fang et al. | Eraseme: A defense mechanism against information leakage exploiting gpu memory | |
EP2652624B1 (fr) | Procede, programme d'ordinateur et dispositif de gestion d'acces memoire dans une architecture multiprocesseurs de type numa | |
US11836086B1 (en) | Access optimized partial cache collapse | |
US11940914B2 (en) | Performance aware partial cache collapse | |
US20240256453A1 (en) | Decoupling cache capacity management from cache lookup and allocation |