FR2834574A1 - Dispositif et procedes pour compresser une ligne de cache - Google Patents

Dispositif et procedes pour compresser une ligne de cache Download PDF

Info

Publication number
FR2834574A1
FR2834574A1 FR0300133A FR0300133A FR2834574A1 FR 2834574 A1 FR2834574 A1 FR 2834574A1 FR 0300133 A FR0300133 A FR 0300133A FR 0300133 A FR0300133 A FR 0300133A FR 2834574 A1 FR2834574 A1 FR 2834574A1
Authority
FR
France
Prior art keywords
data
lines
line
arrangement
cache
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
FR0300133A
Other languages
English (en)
Other versions
FR2834574B1 (fr
Inventor
Wayne Dervon Kever
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of FR2834574A1 publication Critical patent/FR2834574A1/fr
Application granted granted Critical
Publication of FR2834574B1 publication Critical patent/FR2834574B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

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é pour stocker des lignes de données (226) dans un arrangement de données (218) d'une mémoire cache (200) cartographiée à une mémoire principale (222) d'un système de traitement. L'arrangement de données comprend des lignes pour stocker des données (238) ayant des longueurs égales. Le procédé comprend une compression (404) d'au moins une des lignes de données, un ajustage de la ligne de données compressée (226) à l'intérieur d'une sous-section (278) de l'une des lignes pour stocker des données (238) et un pointage vers la sous-section utilisant un arrangement d'étiquettes (214). Lorsque les lignes de données sont stockées sous forme compressée plusieurs lignes peuvent s'ajuster dans le cache, et la probabilité de faire mouche dans le cache est augmentée.

Description

revendication 10 ou 11, caractérisé en ce qu'il constitue un appareil dit
"PDA".
- 1 - 2834574
CHAMP DE L' INVENTION
La présente invention se rapporte d'une manière générale aux systèmes de traitement et de manière plus particulière à la compression de lignes de données dans des mémoires cache d'un système de traitement.
ARRIÈRE PLAN DE L' INVENTION
De manière typique les mémoires cache sont utilisées dans des systèmes de traitement pour accélérer l'accès du processeur à des données stockées dans une mémoire principale. Une mémoire cache est plus petite, plus rapide et de manière typique plus coûteuse qu'une mémoire principale. Lorsqu'un processeur demande une donnée qui réside en mémoire principale, le système de traitement transmet la donnée demandée au processeur et peut aussi stocker la donnée dans une mémoire cache, dont il peut y avoir une pluralité de niveaux. Lorsque le processeur place par la suite une requête pour la même donnée, le système de traitement vérifie la mémoire cache en premier lieu. Si la donnce demandée réside dans le cache, le système "fait mouche" dans le cache et fournit la donnée au processeur à partir du cache. Si la donnée n'est pas résidente dans le cache, un "manqué" de cache a lieu et le système récupère la donnée depuis la mémoire principale. Une donnée utilisée de manière fréquente est par conséquent récupérée de manière plus rapide qu'une donnée demandée de manière moins fréquente et la latence d'accès globale aux données, c'est- à-dire le temps séparant la
requête et la fourniture des données, est réduite.
Des niveaux intermédiaires de cache peuvent être utilisés entre un cache primaire et une mémoire principale et sont, de manière typique, plus lents et moins coûteux, que le cache primaire. Des caches de
2 - 2834574
niveau supérieur dans une telle hiérarchie de caches sont arrangés d'une manière générale en ordre de vitesse décroissante et sont utilisés de manière typique pour tenir des données qui font l'objet d'accès moins fréquemment que des données gardées dans le cache primaire. Lorsqu'un manqué de cache se produit au niveau du cache primaire, le système de traitement vérifie la donnée dans le ou les niveaux de cache supérieurs avant d'accéder à la donnée depuis la mémoire principale. Par conséquent, bien que le fait d'utiliser des niveaux supérieurs de cache tende à améliorer la performance globale du système, il reste néanmoins souhaitable de rendre le plus bas niveau de cache aussi grand que possible, pour augmenter les chances de faire mouche dans le cache dans le niveau de
cache le plus faible.
Lorsqu'une adresse de donnée est présentée à un cache, une recherche de correspondance dans un arrangement d'étiquettes de cache est effectuée pour déterminer si la donnée demandée est couramment dans l' arrangement de données du cache. Si c'est le cas, alors l' arrangement de données est lu. La donnée est stockée dans un arrangement de donnces de cache sous forme de "lignes", toutes les lignes de l' arrangement contenant un nombre égal d'octets. La taille de ligne de cache est en général la méme pour tous les niveaux de cache dans un système. Fréquemment les tailles de ligne courantes sont fixées à 64 ou 128 octets. Un cache d'un mégaoctet (ayant 220 octets), par exemple, stockerait 8192 lignes de 128 octets, et une structure d'étiquettes en correspondance contiendrait 8192 entrées. Augmenter une taille de cache dans un système de traitement peut non seulement être coûteux, mais peut aussi augmenter la latence, puisqu'il serait possible de demander au système de traitement de
3 2834574
chercher dans un plus grand arrangement d'étiquettes, puis de chercher dans un arrangement de donnces plus
grand pour localiser la donnée dans le cache.
Des techniques sont connues, dont le but est de réduire la latence des recherches dans un cache. Par exemple, la recherche de correspondance entre donnée et étiquette peut être effectuée en parallèle pour réduire le nombre de cycles d'horloge nécessaires pour chercher dans un cache. Il serait aussi souhaitable, cependant, d' augmenter la capacité de stockage d'un cache sans avoir à augmenter sa taille physique. Par conséquent, il serait souhaitable de fournir une compression de données dans un cache. Une telle compression serait particulièrement convenable pour des niveaux inférieurs d'une hiérarchie de cache, o la capacité, plus que la
latence, peut affecter la performance du système.
RÉSUMÉ DE L' INVENTION
Selon un premier aspect, l' invention propose un procédé pour stocker des lignes de données dans un arrangement de donnces d'une mémoire cache cartographiée à une mémoire principale d'un système de traitement, l' arrangement de donnces comprenant une pluralité de lignes pour stocker des donnces ayant des longueurs égales, le procédé comprenant les étapes consistant à: prédéfinir une pluralité de longueurs possibles de soussections disponibles pour stocker des lignes de données, dans chacune des lignes pour stocker des données; compresser au moins une des lignes de données; ajuster la ligne de données compressce dans une sous section de l'une des lignes pour stocker des données, la sous-section ayant une des longueurs prédéfinies; et pointer vers la sous-section en
utilisant un arrangement d'étiquettes.
Dans une variante de réalisation du procédé
4 2834574
proposé par l' invention, il est prévu, dans l'étape consistant à pointer vers la sous-section en utilisant un arrangement d'étiquettes d'inclure l' allocation d'un élément dans l' arrangement d'étiquettes à chacune des sous-sections. Dans cette variante de réalisation du procédé proposé par l' invention, il est prévu, dans l'étape consistant à allouer un élément dans l' arrangement d' étiquettes, de procéder au rejet du cache d' une ligne
"victime" sur la base d'un indicateur de compression.
Dans une autre variante de réalisation du procédé, proposé par l' invention, il est prévu, dans l'étape consistant à aguster la ligne de données compressée dans une sous-section de l'une des lignes pour stocker des données d'inclure les étapes consistant à: prédéfinir une longueur possible pour la sous-section comme l'intégralité d'une ligne pour stocker des données; et stocker la ligne de données compressée sous forme non compressée dans une sous-section définie comme celle qui est entière parmi les lignes pour stocker des données lorsqu'un rapport de compression de la ligne de données compressée dépasse une limite
prédéterminée du rapport de compression.
Selon un deuxième aspect, l' invention fournit un cache, dans un système de traitement, pour tenir des lignes de données réaupérées d'une mémoire principale du système de traitement, ledit cache comprenant: un arrangement de données cartographié à la mémoire principale, l' arrangement de donnéss comprenant une pluralité de lignes pour stocker des données pour stocker les lignes de donnces, chaque ligne pour stocker des données étant configurée pour tenir une pluralité de lignes compressée de données; et un arrangement d'étiquettes configuré pour pointer vers des lignes de données stockées dans l' arrangement de
_ 5 - 2834574
données, l'arrangement d'étiquettes comprenant un élément pour chaque ligne de données qui peut être
stockée dans l' arrangement de données.
Dans une variante de réalisation de ce deuxième aspect de l' invention, il est prévu que chaque ligne pour stocher des données comprenne une pluralité de sous-sections possibles dans lesquelles une ligne de donnces peut être stockée, chacun des éléments formant une étiquette correspondant à une sous-section possible
en correspondance.
Dans une autre variante de réalisation de ce deuxième aspect de l' invention, il est prévu que l' arrangement d'étiquettes comprenne un élément pour chaque sous-sect ion de ligne s pour stocker de s données
dans lequel une ligne de données peut être stockée.
Dans une autre variante de réalisation de ce deuxTème aspect de l' invention, il est prévu que chacun des éléments formant une étiquette comprenne un indicateur de compression configuré pour indiquer un état de compression pour une ligne de donnces en correspondance. Dans une autre variante de réalisation de ce deuxième aspect de l' invention, il est prévu que chacun des éléments formant une étiquette comprenne un indicateur disponibilité configuré pour indiquer si une sous-section d'une ligne pour stocker des données est
disponible pour tenir une ligne de données.
Enfin, dans une autre variante de réalisation de ce deuxième aspect de l' invention, il est prévu que chacune des lignes pour stocker des données soit configurée pour tenir une ligne de données non
compressée dans plus d'une sous-section.
Lorsque des lignes de données sont compressées lors d'écritures vers le cache puis décompressées lors de lectures depuis un cache, il est possible d'ajuster
6- 2834574
un plus grand nombre de lignes dans le cache. Par conséquent, la probabilité de faire mouche dans un cache augnente et la performance du système de
traitement est améliorée.
D'autres zones d'applicabilité de la présente invention deviendront apparentes à partir de la
description détaillée fournie ci-dessous. On comprendra
que la description détaillée et les exemples
spécifiques, tout en indiquant le mode de réalisation préférentiel de l' invention, ne sont donnés qu'à des fins d' illustration et ne sont pas destinés à limiter
la portée de l' invention.
BRÈVE DESCRIPTION DES DESSINS
La présente invention pourra être mieux comprise à
partir de la description détaillée et des dessins qui
l'accompagnent, dans lesquels: La figure 1 est un diagramme simplifié d'un cache bidirectionnel associatif par jeu de la technique ancienne; La figure 2 est un diagramme simplifié d'un cache bidirectionnel associatif par jeu conformément à un mode de réalisation de la présente invention; et La figure 3 est un organigramme d'un procédé pour stocker des données dans une mémoire cache conformément
à un mode de réalisation de la présente invention.
DESCRIPTION DÉTAILLÉE DU MODE DE RÉALISATION
PRÉFÉRENTIEL
La description de modes de réalisation
préférentiels qui fait suite constitue uniquement donnée à titre d'exemples et n'est en aucune manière destince à limiter l' invention, son application ou usages. Bien que la présente invention soit décrite ici en référence à un cache associatif par jeu, l' invention
7 2834574
n'est pas ainsi limitée. Des modes de réalisation de l' invention peuvent être pratiqués en liaison avec d'autres formes de cartographies de cache, qui incluent sans toutefois limiter, une cartographie directe et associative de cache. En outre, bien que des modes de réal i sat ion soient décrits i ci en relation avec un cache bidirectionnel associatif par jeu, l' invention peut être pratiquée avec des niveaux plus élevés
d'associativité par jeu.
Un cache bidirectionnel associatif par jeu de la technique ancienne est indiqué d'une manière générale par une référence numérique 10 à la figure 1. Le cache comprend un arrangement d'étiquettes 14 qui cartographie un arrangement de données 18 sur une mémoire principale 22. Des lignes 26 de données sont stockées dans la mémoire principale 22 et sont alignces sur des frontières de ligne de cache 30, de telle sorte que les lignes de donnces 26 soient égales en longueur aux lignes pour stocker des données 38 dans l' arrangement de données de cache 18. Pour beaucoup de systèmes de traitement, une ligne de données possède communément 64 ou 128 octets. Comme on le montre à la figure 1, les lignes de données 26 et les lignes pour
stocker des données 38 ont des longueurs de 128 octets.
Chaque adresse d'une ligne de données 26 dans la mémoire principale 22 comprend une référence d'étiquette 46. En outre, la mémoire principale 22 peut être considérée comme étant divisée en une pluralité de groupes 42, chacun d'eux étant associé à un jeu 44 de deux lignes pour stocker des données 38 dans l' arrangement de données 18. Pour chaque ligne pour stocLer des données 38 dans l' arrangement de données de cache 18, l' arrangement d'étiquettes 14 comprend un élément en correspondance 54. Lorsqu'il est utilisé ici, le terme "élément" est défini comme un emplacement
- 8 - 2834574
(qui peut être occupé ou non par des données valables) à l'intérieur d'un arrangement. Chaque élément 54 de l' arrangement d'étiquettes 14 comprend une entrée
d'étiquette 58 et un bit "valable" 62.
Lorsqu'une ligne de donnces 26 est écrite dans le cache 10, elle est écrite dans l'une des lignes pour stocker des données 38 dans le jeu 44 associé au groupe 42 de la mémoire principale 22 à partir de laquelle la ligne de données 26 est en cours d'écriture. Une ligne particulière pour stocker des données 38 peut être sélectionnée sur la base (parmi d'autres critères possibles) du fait que les bits "valable" des deux lignes pour stocker des donnces 38 dans le jeu associé 44 indiquent la présence d'une donnce valable, c'est-à dire une autre ligne de données 26 du groupe associé 42 dans la mémoire principale 22. Lorsqu'une ligne de données 26 est écrite dans une ligne pour stocker des données 38, l'étiquette 46 qui référence la ligne de données 26 dans la mémoire principale 22 est écrite dans l'entrce d'étiquette en correspondance 58 de l' arrangement d'étiquettes 14. Le bit "valable" en correspondance 62 est mis à j our aussi pour indiquer que la ligne pour stocker des données 38 dans laquelle la ligne de données 26 est écrite contient une donnée
valable.
Les caches conventionnels incluent de manière typique une étiquette pour chaque ligne pour stocker des données, et par conséquent pour chaque ligne de données, dans le cache. En se référant au cache simplifié 10 montré à la figure 1, on peut voir que là o le cache 10 est un cache d'un mégaactet, l' arrangement de données 18 peut contenir 8192 lignes de 128 octets. Pour chaque ligne pour stocker des données 38 de l' arrangement de données 18, un élément formant un arrangement d'étiquettes en correspondance
9 2834574
54 est nécessaire. L' arrangement d'étiquettes en correspondance 14 aurait donc 8192 éléments formant un
arrangement d'étiquettes 54.
Il serait souhaitable d'augnenter la capacité de stockage d'un arrangement de cache de donnces pour stocker des lignes de donnces compressées dans l' arrangement. Lorsqu'il est utilisé ici, le terme "rapport de compression" est défini comme un rapport de la taille compressée d'une ligne de données à la taille non compressée de la ligne de données. Ainsi par exemple, là o une ligne de 128 octets de données est compressée en 64 octets, le rapport de compression vaut 0,5. La compression des données a tendance à dépendre du motif des donnces. Lorsqu'une compression de données est effectuée, on ne connaît pas à l'avance, de manière typique, quel rapport de compression sera obtenu. Par contre, dans un cache, une entrée d'étiquette est fournie pour chaque ligne de données en cours de stockage dans le cache, et les entrces d'étiquette sont en nombre fixé. Ceci signifie que le nombre d'étiquettes disponibles est prédéterminé par une taille de l' arrangement d'étiquettes utilisé pour référencer l' arrangement de données du cache. Si les données devaient être stockées sous une forme compressée dans un arrangement de données de cache, la structure d'étiquettes pour un tel cache inclurait suffisamment d'entrées pour représenter toutes les lignes de données qui pourraient être présentes dans l' arrangement de données. Par exemple, si deux lignes ou moins de données pouvaient être entassoes dans une ligne pour stocker des données et s'ajuster dans une ligne non compressée de données, la structure d'étiquettes pourrait avoir besoin de deux fois plus d'entrces qu'il ne serait nécessaire pour un cache sans
- 10 - 2834574
aucune compression. Par conséquent, si un total de deux mégaoctets de lignes de données était stocké sous forme de lignes compressées, 16384 étiquettes seraient
utilisées pour garder une trace des lignes de données.
Un mode de réalisation de la présente invention s'adresse à un procédé pour stocker des lignes de données dans un arrangement de donnces formant un cache. Ce procédé comprend une compression d' au moins une des lignes de données, un ajustement de la ligne de données compressée à l'intérieur d'une sous-section de l'une des lignes pour stocker des données dans l' arrangement, et le pointage vers la sous-section en utilisant un arrangement d'étiquettes. Si une ligne de données est compressée selon un rapport de compression supérieur à une limite prédéterminée, alors la ligne
non compressée de données est insérce dans le cache.
Par exemple, et comme cela sera décrit plus loin en rapport à la figure 2, si un rapport de compression est inférieur ou égal à 0,5 pour une ligne de donnces compressée, la ligne de données compressée est écrite
dans une moitié d'une ligne pour stocker des données.
L'autre moitié de la ligne pour stocker des données remplie à demi est disponible pour une autre ligne de données compressée. Lorsqu'une ligne non compressée de données est écrite dans le cache, une parmi deux entrées d'étiquette pour cette ligne particulière pour stocker des donnces est utilisée pour référencer la ligne de donnces. L'autre entrce n'est pas utilisée et par conséquent est non valable lorsque des données non compressées sont contenues dans la ligne pour stocker
des données.
Un cache bidirectionnel associatif par jeu conforme à un mode de réalisation de la présente invention est indiqué d'une manière générale par une référence numérique 200 à la figure 2. Le cache 200
- 11 - 2834574
comprend un arrangement d'étiquettes 214 qui cartographie un arrangement de données 218, par exemple, sur une mémoire principale 222. Des lignes 226 de données sont stockées dans la mémoire principale 222 et sont alignées sur des frontières 230 de lignes de cache de telle sorte que les lignes de données 226 soient égales en longueur aux lignes pour stocker des
donnces 238 dans l' arrangement de donnces de cache 218.
Comme cela est montré à la figure 2, les lignes de données 226 et les lignes pour stocker des donnces 238 ont une longueur de 128 octets. Bien que le présent mode de réalisation soit décrit en relation avec des lignes de données longues de 128 octets, on considère que l' invention peut étre pratiquce en relation avec
d'autres longueurs de ligne.
Chaque adresse pour une ligne de données 226 en mémoire principale 222 comprend une référence d'étiquette 246. En outre, la mémoire principale 222 peut étre considérce comme étant divisée en une pluralité de groupes 242, chacun d'eux étant associé à un jeu 244 de deux lignes pour stocker des données 238 dans l' arrangement de données 218. Par exemple, le groupe 248 de la mémoire principale est associé au jeu
250 dans l' arrangement de données 218.
Un jeu de longueurs possibles pour la sous-section de ligne pour stocker des données disponible pour stocker des lignes de données est prédéfini pour l' arrangement de données 218. De manière spécifique, il est prédéLini qu'une ligne de données 226 pourrait être stockée soit dans une moitié d'une ligne pour stocker des données 238 soit dans une ligne entière pour stocker des données 238. L' arrangement d'étiquettes 214 comprend un élément 254 pour chacune des plus petites sous-sections possibles, c'est-à-dire pour chaque demi ligne pour stocker des données 278. Par conséquent,
- 12 - 2834574
pour chaque ligne pour stocker des donnces 238 dans l' arrangement de données de cache 218, l' arrangement d'étiquettes 214 comprend deux éléments en correspondance 254a et 254b. On notera que des prédéfinit ions de sous-sect ion en variante ou en supplément sont possibles. Par exemple, on pourrait aussi prédéfinir des sections d'un quart ou de trois quarts de ligne pour stocker des données 238. Dans un tel cas, l' arrangement d'étiquettes 214 inclurait quatre éléments 254 en correspondance pour chaque ligne
pour stocker des données 238.
En se reportant à nouveau à la figure 2, chaque élément 254 comprend une entrée d'étiquette 258, un bit "valable" 262, un indicateur de compression 270 et un champ "disponible" 274. Le bit valable 262 est mis à un pour chaque sous-section 278 de ligne pour stocker des données 238 qui peut contenir une ligne valable de donnces 226. Le champ "disponible" 274 est utilisé pour indiquer si une sous-section d'une ligne pour stocker des données en correspondance 278 contient une ligne de données compressée 226 ou au contraire si elle est occupée par une ligne non compressoe des données 226 qui occupe plus d'une sous-section 278. En outre, le champ "disponible" 274 est utilisé pour indiquer si la sous- section en correspondance 278 est actuellement disponible ou en cours d'utilisation par une autre
entrée d'étiquette.
L'indicateur de compression 270 est utilisé pour indiquer un état de compression pour une ligne de données 226 stockée dans la sous-section en correspondance 278. Par exemple, l'indicateur 270 est utilisé pour indiquer si la ligne de données en correspondance 226 est compressée ou non, et, dans un mode de réalisation dans lequel une pluralité de rapports de compression sont acceptés, un rapport de
- 13 - 2834574
compression pour la ligne de données stockée 226.
L'indicateur de compression 270 est aussi utilisé par un matériel de décompression (non montré) lorsque la
ligne de donnces est lue depuis le cache 200.
Des lignes de données peuvent être stockées dans le cache 200 en utilisant un procédé indiqué d'une manière générale à la figure 3 par la référence numérique 400 Une ligne de données 226 à écrire est compressée dans une étape 404. Le rapport de compression pour la ligne de donnces compressée 226 est vérifié à l'étape 408. Si le rapport de compression est supérieur à 0,5, une recherche est effectuée, à l'étape 412, pour trouver une ligne pour stocker des données 238 entière dans laquelle stocker la ligne de données 226 sous forme non compressée. Un élément de l' arrangement d'étiquettes 254 est alors recherché pour cela et marqué "non valable" et "disponible" par des
indicateurs 262 et 274.
Si un tel élément 254 n'est pas trouvé, une ligne de données "victime" 226 est sélectionnée pour un remplacement, à l'étape 416. La ligne victime 226 est copiée dans la mémoire principale 222. Copier toutes les lignes de données en qualité de victimes 226 à l'intérieur d'une ligne pour stocker des données 238 sert à récupérer tous les éléments d' arrangement d'étiquettes 254 associés avec cette ligne particulière pour stocker des données 238, en créant ainsi deux éléments d'étiquettes non valable et disponible 254 dans le jeu 244. La nouvelle ligne 226 est insérée à la place de la victime. La ligne non compressée 226 est écrite, à l'étape 420, dans la sous-section sélectionnce, c'est-à-dire l'intégralité de la ligne pour stocker des données 238. A l'étape 424, l'intégralité de la ligne pour stocker des données 238 est marquée comme "valable" et "indisponible" par des
- 14 - 2834574
indicateurs 262 et 274. Le facteur de compression est 270 et est écrit pour indiquer que la ligne de données n'est pas compressée et l'entrce d'étiquette 258 est mise à j our pour pointer vers la ligne écrite pour stocker des données. Si le rapport de compression est inférieur ou égal à 0,5, une recherche est effectuée, dans une étape 430 pour trouver un élément de l' arrangement d'étiquettes 254 pointant vers une sous-section d'une ligne pour stocker des données 238 de demi-longueur, dans le jeu associé 244, qui soit à la fois non valable et disponible. Si aucun élément de l' arrangement d'étiquettes 254 n'est trouvé, une ligne de données 226 victime est sélectionnée dans une étape 434 et écrite vers la mémoire 222. La ligne compressce 226 est écrite, dans une étape 438, dans la sous-section de demi-longueur sélectionnée 278. Dans une étape 442, la sous-section de demi-longueur 278 est marquée comme "valable" et "indisponible" par des indicateurs 262 et 274. L'indicateur de compression est 270 et est écrit pour indiquer que la ligne de données 226 est compressée, et l'entrée d'étiquette 258 est mise à jour pour pointer vers la sous-section de demi-longueur écrite 278. On notera qu'il est possible de faire des comparaisons avec des rapports de compression en variantes ou supplémentaires, en particulier dans des modes de réalisation dans lesquels d'autres jeux de sous-sections 278 sont prédéfinis comme cela a été
décrit plus haut.
Les lignes de données 226 peuvent être compressoes en utilisant des algorithmes de compression connus dans la technique. De tels algorithmes, de manière typique
mais non nocessaire, sont exécutés dans un matériel.
Des algorithmes et un matériel pour compresser/ décompresser possibles comprennent, sans toutefois être - 15 limités à, des procédés pour coder par longueur de course, dans lesquels des bits répétés sont compressés, et le codage par le procédé de Huffman. Plusieurs procédés pour compresser sont décrits dans les brevets américains N 5,389,922 et 5,488, 365 accordés à
Serrousi et col. et attribués au présent demandeur.
Des procédés pour compresser basés sur des dictionnaires de symbole peuvent être utilisés, dans lesquels un dictionnaire et un résultat compressés sont stockés dans une entrce d'un arrangement de données. En variante, un stockage séparé est utilisé pour le dictionnaire. Si un stockage séparé pour le dictionnaire est utilisé, un algorithme est établi pour les mises à j our du dictionnaire, par exemple sur la base de l'observation d'un niveau de performance de compression obtenu et en mettant le dictionnaire à j our
lorsque la performance tombe en dessous d'un seuil.
Pour changer une table de symboles, toutes les lignes compressées dans une ancienne table sont lues puis écrites en retour après compression avec la nouvelle
table.
La performance d'une compression peut être surveillée de la manière suivante. Si la performance tombe en dessous d'un seuil, le cache peut être vidangé dans la mémoire principale. Le dictionnaire est ensuite considéré comme non valable. Le cache est ensuite rempli à nouveau de demandes de lectures issues de la mémoire. Un algorithme de compression peut être utilisé pour construire de manière automatique un nouveau
dictionnaire à mesure que des données passent par lui.
En se reportant à la figure 2, le nombre d'éléments de l' arrangement d'étiquettes 254 est relié
à une compression maximum permise dans le cache 200.
- 16 - 2834574
Par exemple, si un rapport de compression de 0,5 ou de 0,25 est permis, quatre fois autant d'éléments 254 seraient utilisés que pour stocker un arrangement de données non compressées dans le cache 200. Dans des modes de réalisation dans lesquels jusqu'à quatre lignes de données compressées pourraient être compressées en une ligne pour stocker des données 238, des lignes de données 226 pourraient occuper 0,25, 0,5 ou 0,75 de la ligne pour stocker des données 238. Par conséquent quand une ligne de données226 compressée à 0,75 de la taille non compressée est stochée dans une ligne pour stocker des données 238, si une ligne 226 compressée à 0,25 fois la taille non compressée doit par la suite être insérée dans le même jeu 244 du cache 200, elle peut être placée dans les octets disponibles
restants de la ligne pour stocker des données 238.
Bien que les procédés pour stocker des lignes de données dans un cache exposés ci-dessus ne soient pas limités à utiliser des caches associatifs par jeu, ils sont extrêmement efficaces lorsqu'ils sont exécutés dans des caches ayant un degré élevé d'associativité par jeu. Lorsqu'un cache est structuré et que des lignes de données sont compressées comme cela est décrit plus haut, un espace de stockage supplémentaire peut être rendu disponible à l'intérieur d'un arrangement de donnses de cache, ce qui accroît ainsi les probabilités pour faire mouche dans le cache et
améliore la performance du système de traitement.
La description de l' invention est uniquement
exemplaire par nature et, par conséquent, l' intention est que des variations qui ne dévient pas de l' esprit de l' invention soient dans la portée de l' invention. De telles variations ne doivent pas être considérées comme
un départ de l' esprit et de la portée de l' invention.
- 17 - 2834574

Claims (10)

REVENDICAT IONS
1. Procédé pour stocker des lignes de donnces (226) dans un arrangement de données (218) d'une mémoire cache (222) cartographice à une mémoire princi- pale (222) d'un système de traitement, l' arrangement de données comprenant une pluralité de lignes pour stocker des données (238) ayant des longueurs égales, le procédé comprenant les étapes consistant à: prédéfinir une pluralité de longueurs possibles de sous-sections (278) disponibles pour stocker des lignes de donnces (226), dans chacune des lignes pour stocker des données (238); compresser (404) au moins une des lignes de données; ajuster la ligne de données compressce (226) dans une sous section (278) de l'une des lignes pour stocker des données (238), la sous-section (278) ayant une des longueurs prédéfinies; et pointer (424, 442) vers la sous-section en
utilisant un arrangement d'étiquettes (214).
2. Procédé de la revendication 1, dans lequel l'étape consistant à pointer vers la sous-section (278) en utilisant un arrangement d'étiquettes (214) comprend une allocation d'un élément (254) dans l' arrangement
d'étiquettes à chacune des sous-sections (278).
3. Procédé de la revendication 2, dans lequel l'étape consistant à allouer un élément (254) dans l' arrangement d'étiquettes (214) comprend le rejet du cache (200) d'une ligne victime (226) sur la base d'un
indicateur de compression (270).
4. Procédé de la revendication 1, dans lequel l'étape consistant à ajuster la ligne de donnces compressée (226) dans une sous-section (278) de l'une
- 18 - 2834574
des lignes pour stocker des données (238) comprend les
étapes consistant à:.
prédéfinir une longueur possible pour la sous-
section (278) comme l'intégralité d'une ligne pour stocker des données (238); et stocker la ligne de données compressée (226) sous forme non compressée dans une sous-section (278) définie comme celle qui est entière parmi les lignes pour stocker des données (238) lorsqu'un rapport de compression de la ligne de données compressée (226) dépasse une limite prédéterminée du rapport de compression.
5. Cache (200), dans un système de traitement, pour tenir des lignes de données (226) réaupérées d'une mémoire principale (222) du système de traitement, le cache comprenant: un arrangement de données (218) cartographié à la mémoire principale, l' arrangement de données comprenant une pluralité de lignes pour stocker des données (238) pour stocker les lignes de données (226), chaque ligne pour stocker des données étant configurée pour tenir une pluralité de lignes compressée de données (226); et un arrangement d'étiquettes (214) configuré pour pointer vers des lignes de données (226) stockées dans l' arrangement de données (218), l' arrangement d'étiquettes comprenant un élément (254) pour chaque ligne de données (226) qui peut être stockée dans
l' arrangement de donnéss.
6. Cache (200) de la revendication 5, dans lequel chaque ligne pour stocker des données (238) comprend une pluralité de sous-sections possibles (278) dans lesquelles une ligne de données (226) peut être stockée, chacun des éléments formant une étiquette (254) correspondant à une sous-section possible en
- 19 - 2834574
correspondance (278).
7. Cache (200) de la revendication 5, dans lequel l' arrangement d'étiquettes (214) comprend un élément (254) pour chaque sous-section (278) de lignes pour stocker des donnéss (238) dans lequel une ligne de
données (226) peut être stockée.
8. Cache (200) de la revendication 5, dans lequel chacun des éléments formant une étiquette (254) comprend un indicateur de compression (270) configuré pour indiquer un état de compression pour une ligne de
données en correspondance (226).
9. Cache (200) de la revendication 5, dans lequel chacun des éléments formant une étiquette (254) comprend un indicateur disponibilité (274) configuré pour indiquer si une sous-section (278) d'une ligne pour stocker des données est disponible pour tenir une
ligne de données (226).
10. Cache (200) de la revendication 5, dans lequel chacune des lignes pour stocker des données (238) est configurce pour tenir une ligne de données non compressce (226) dans plus d'une sous-section
FR0300133A 2002-01-10 2003-01-08 Dispositif et procedes pour compresser une ligne de cache Expired - Fee Related FR2834574B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/043,789 US6735673B2 (en) 2002-01-10 2002-01-10 Apparatus and methods for cache line compression

Publications (2)

Publication Number Publication Date
FR2834574A1 true FR2834574A1 (fr) 2003-07-11
FR2834574B1 FR2834574B1 (fr) 2005-12-30

Family

ID=21928894

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0300133A Expired - Fee Related FR2834574B1 (fr) 2002-01-10 2003-01-08 Dispositif et procedes pour compresser une ligne de cache

Country Status (2)

Country Link
US (1) US6735673B2 (fr)
FR (1) FR2834574B1 (fr)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114054B2 (en) * 2003-05-09 2006-09-26 Hewlett-Packard Development Company, L.P. Systems and methods for increasing transaction entries in a hardware queue
US7143239B2 (en) 2003-08-07 2006-11-28 Hewlett-Packard Development Company, L.P. Cache structure and methodology
US20050071566A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Mechanism to increase data compression in a cache
US20050071151A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Compression-decompression mechanism
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache
US7162583B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to store reordered data with compression
US7162584B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to include hints within compressed data
US7512750B2 (en) * 2003-12-31 2009-03-31 Intel Corporation Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US7257693B2 (en) * 2004-01-15 2007-08-14 Intel Corporation Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US7254689B1 (en) * 2004-07-15 2007-08-07 Google Inc. Decompression of block-sorted data
US7653802B2 (en) * 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US7444523B2 (en) 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7734926B2 (en) * 2004-08-27 2010-06-08 Microsoft Corporation System and method for applying security to memory reads and writes
US7822993B2 (en) * 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US7243191B2 (en) * 2004-08-31 2007-07-10 Intel Corporation Compressing data in a cache memory
US7380047B2 (en) * 2004-09-30 2008-05-27 International Business Machines Corporation Apparatus and method for filtering unused sub-blocks in cache memories
US7412564B2 (en) * 2004-11-05 2008-08-12 Wisconsin Alumni Research Foundation Adaptive cache compression system
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US9772936B2 (en) 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US8452900B2 (en) * 2010-12-30 2013-05-28 Emc Corporation Dynamic compression of an I/O data block
US8886883B1 (en) * 2012-03-31 2014-11-11 Emc Corporation System and method for improving cache performance
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US9740621B2 (en) 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US9361228B2 (en) 2014-08-05 2016-06-07 Qualcomm Incorporated Cache line compaction of compressed data segments
US9858196B2 (en) 2014-08-19 2018-01-02 Qualcomm Incorporated Power aware padding
US9612971B2 (en) 2014-08-19 2017-04-04 Qualcomm Incorporated Supplemental write cache command for bandwidth compression
US20160092361A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Caching technologies employing data compression
US9652384B2 (en) * 2014-12-16 2017-05-16 Intel Corporation Apparatus, system and method for caching compressed data
FR3041796B1 (fr) * 2015-09-24 2017-10-20 Stmicroelectronics Rousset Stockage et lecture d'un code d'authentification de message dans une memoire externe
US10191850B2 (en) 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US9996471B2 (en) * 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
US10013200B1 (en) * 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10042774B2 (en) * 2016-09-19 2018-08-07 Advanced Micro Devices, Inc. Method and apparatus for masking and transmitting data
US11741121B2 (en) 2019-11-22 2023-08-29 Takashi Suzuki Computerized data compression and analysis using potentially non-adjacent pairs
US10387377B2 (en) * 2017-05-19 2019-08-20 Takashi Suzuki Computerized methods of data compression and analysis
US10983915B2 (en) 2019-08-19 2021-04-20 Advanced Micro Devices, Inc. Flexible dictionary sharing for compressed caches
US11573899B1 (en) 2021-10-21 2023-02-07 International Business Machines Corporation Transparent interleaving of compressed cache lines

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010001872A1 (en) * 1998-06-10 2001-05-24 International Business Machines Corp. Data caching with a partially compressed cache

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115787A (en) * 1996-11-05 2000-09-05 Hitachi, Ltd. Disc storage system having cache memory which stores compressed data
US6032148A (en) * 1997-09-15 2000-02-29 Hewlett-Packard Company Multilevel storage system with hybrid data compression
US6128094A (en) * 1998-07-08 2000-10-03 Hewlett-Packard Company Printer having processor with instruction cache and compressed program store
US6484228B2 (en) * 2000-04-19 2002-11-19 Motorola, Inc. Method and apparatus for data compression and decompression for a data processor system
US6580427B1 (en) * 2000-06-30 2003-06-17 Intel Corporation Z-compression mechanism
US6581131B2 (en) * 2001-01-09 2003-06-17 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient cache mapping of compressed VLIW instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010001872A1 (en) * 1998-06-10 2001-05-24 International Business Machines Corp. Data caching with a partially compressed cache

Also Published As

Publication number Publication date
US20030131184A1 (en) 2003-07-10
FR2834574B1 (fr) 2005-12-30
US6735673B2 (en) 2004-05-11

Similar Documents

Publication Publication Date Title
FR2834574A1 (fr) Dispositif et procedes pour compresser une ligne de cache
JP4246922B2 (ja) 保護機能付き最近最低使用頻度置換方法
FR2834809A1 (fr) Dispositif pour moteur de compression de memoire cache pour la compression de donnees sur des memoires cache integrees pour augmenter la taille de memoire cache effective
KR100962057B1 (ko) 캐시 치환 폴리시의 간이화한 구현을 갖춘 멀티스레드 캐시의 방법 및 장치
FR3023030B1 (fr) Zone de donnees d'invalidation pour cache
US7225297B2 (en) Compressed cache lines incorporating embedded prefetch history data
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US7146479B2 (en) Method and apparatus of storage allocation/de-allocation in object-oriented programming environment
US20050251630A1 (en) Preventing storage of streaming accesses in a cache
KR101862785B1 (ko) 타일 기반 렌더링을 위한 캐쉬 메모리 시스템 및 캐슁 방법
US20090106494A1 (en) Allocating space in dedicated cache ways
KR101414035B1 (ko) 저장 효율적인 섹터형 캐시
US20040143708A1 (en) Cache replacement policy to mitigate pollution in multicore processors
JP2000347935A (ja) 圧縮メイン・メモリの仮想非圧縮キャッシュ
EP1918822A1 (fr) Système et procédé d'indexation de mémoire
US20040078516A1 (en) Caching associative memory using non-overlapping data
WO2003071430A1 (fr) Méthode de stockage de blocs de données dans une mémoire
CN104915148A (zh) 用于串流存储装置中的高效内容高速缓冲存储的系统和方法
CN1607510B (zh) 改善高速缓存性能的方法和系统
US20160203082A1 (en) Cache-optimized hash table data structure
FR2805368A1 (fr) Systeme et procede utilisant l'acces speculatif a l'antememoire pour des performances ameliorees
US20030196024A1 (en) Apparatus and method for a skip-list based cache
US7865666B2 (en) Cache memory systems and methods thereof
CN107861819B (zh) 一种缓存组负载均衡的方法、装置和计算机可读存储介质
CN114328522A (zh) 一种基于布隆过滤器的图书判别方式在数字图书馆中的应用方法

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20091030