Brevet FR2834809A1 — publié le 20030718

l'activation d'un programme en liaison avec l'élément d'arrivée. Domaine de l' invention La présente invention concerne le domaine de la conception de mémoire cache pour des circuits intégrés de processeur haute performance. En particulier, la présente invention concerne un dispositif destiné à compresser des données dans une mémoire cache intégrée de grande taille et de niveau supérieur. Contexte de l' invention Les mémoires cache sont des systèmes de mémoire à vitesse élevée qui stockent une copie partielle des contenus d'un système de mémoire plus grand et plus lent. La copie partielle stockée dans une mémoire cache contient normalement ces parties de contenu du système de mémoire plus grand auxquelles un processeur a accédé récemment. La mémoire cache offre un avantage en ce que de nombreux programmes accèdent au code et aux emplacements de données identiques ou proches de manière répétée; l'exécution des instructions est. statistiquement, plus probablement, d'accéder aux emplacements accédés récemment ou à des emplacements proches des emplacements accédés récemment que d'accéder à d'autres emplacements en mémoire. ce nombreux systèmes informatiques modernes mettent en _uvre une hiérarchie de systèmes de mémoire cache pour mettre en mémoire cache des données de mémoire figurant dans la mémoire principale. La mémoire principale de ces systèmes est généralement constituée d'une Mémoire vive dynamique (DRAM). De nombreux processeurs courants, y compris les circuits Pentium-II et Pentium-III d' Intel, comportent deux niveaux de mémoire cache. Il existe également des systèmes informatiques avec trois ou quatre niveaux de mémoire cache. Outre le stockage, les systèmes de mémoire cache comportent également un dispositif destiné à identifier ces parties du système de mémoire plus grand et plus lent contenues dans la mémoire cache, ceci prenant souvent la forme d'une mémoire cache marqueur. Les systèmes de mémoire cache comportent généralement des sous-systèmes de mémoire cache marqueur et des sous-systèmes de mémoire cache de donnces. Chaque mémoire cache de données fonctionne généralement sur des unités de données d'une taille prédéterminée, connues sous le nom de ligne de mémoire cache. La taille dune ligne de mémoire cache peut être différente pour chaque niveau d'une mémoire cache multiniveau. Les lignes de mémoire cache sont généralement plus grandes que la taille mot ou octet utilisée par le processeur et peut, par conséquent, contenir des données proches d'emplacements utilisés récemment, ainsi que des emplacements utilisés récemment. Dans des systèmes de mémoire cache typiques, lorsqu'un emplacement de mémoire à une adresse de mémoire principale particulière doit être lu, une adresse de ligne de mémoire cache est dérivée d'une partie de l'adresse de mémoire principale. Une partie de l'adresse de ligne de mémoire cache est généralement présentée à la mémoire cache marqueur et à la mémoire cache de données; et une opération de lecture réalisoe dans les deux mémoires. La mémoire cache marqueur contient généralement un ou plusieurs champs d'adresse marqueur. De multiples champs d'adresse marqueur peuvent être, et sont souvent, fournis pour supporter des " directions " multiples d'associativité dans la mémoire cache. Chaque champ d'adresse marqueur est comparé aux bits restants de l'adresse de ligne de mémoire cache pour déterminer si n'importe quelle partie des donnces lues à partir de la mémoire cache de données correspond aux données situées à l'adresse de mémoire principale souhaitée. Si le marqueur indique que les donnces souhaitées se trouvent dans la mémoire cache de données, les données sont présentées au processeur et à la mémoire cache du niveau inférieur suivant; si non, alors l'opération de lecture est transmise à la mémoire cache de niveau supérieur suivant. S'il nexiste aucune mémoire de niveau supérieur, l'opération de lecture est transmise à la mémoire principale. Des mémoires caches N- directions, déterminées associatives réalisent simultanément N telles comparaisons de champs d'adresse marqueur sur des parties d'une adresse de données souhaitée. Généralement, une mémoire marqueur contient des informations de statut ainsi que des informations de données. Ces informations de statut peuvent comprendre des indicateurs " écrits " qui indiquent si les informations dans la mémoire cache ont été écrites mais pas encore mises à j our dans une mémoire de niveau supérieur, et des indicateurs " valides " indiquant que l es informat ions f igurant dans la mémoire cache sont valides. Un " résultat satisfaisant " de mémoire cache se produit dès lors qu'un accès mémoire à la mémoire cache se produit et que le système de mémoire cache trouve, par l' inspection de sa mémoire marqueur, que les donnces demandées sont présentes et valides dans la mémoire cache. Un " élément non retrouvé " se produit dès lors qu'un accès mémoire à la mémoire cache se produit et que le système trouve, par l' inspection de sa mémoire marqueur, que les données demandées ne sont pas présentes ni valides dans la mémoire cache. Lorsqu'un " élément non retrouvé " de mémoire cache se produit dans une mémoire cache de niveau inférieur d'un système de mémoire cache multiniveau typique, l'adresse de mémoire principale est transmise au niveau suivant de mémoire cache, o elle est vérifiée dans la mémoire cache marqueur de niveau supérieur pour déterminer s'il existe un " résultat satisfaisant " ou un " élément non retrouvé " à ce niveau supérieur. Lorsqu'un " élément non retrouvé " de mémoire cache se produit au niveau de la mémoire cache de niveau supérieur, la référence est généralement transmise à la mémoire principale. Généralement, le nombre de " directions " d'associativité dans un soussystème marqueur de mémoire cache définie comme associative est le nombre d' ensembles de marqueurs d' adresse dans chaque ligne de mémoire marqueur et d' ensembles de comparateurs correspondants. Le nombre de directions de stockage est le nombre de lignes, ou superlignes, de mémoire cache, qui peuvent être stockées et référencoes indépendamment à travers une seule ligne de mémoire cache marqueur. Dans la plupart des mémoires cache, le nombre de directions d'associativité est identique au nombre de directions de stockage. Des superlignes de mémoire cache sont des combinaisons de lignes multiples de mémoire cache qui peuvent être référencces à travers un seul marqueur d'adresse dans une ligne de mémoire marqueur. Les mémoires cache d'écriture immédiate sont ces mémoires dans lesquelles une opération d'écriture vers des données stockées dans la mémoire cache se traduit par une mise à j our immédiate des donnces dans un niveau supérieur de mémoire cache ou dans la mémoire principale. Les mémoires cache d'écriture différée sont ces mémoires dans lesquelles une opération d'écriture vers des données stockées dans la mémoire cache écrit des donnces dans la mémoire cache, mais la mise à j our de données dans des niveaux supérieurs de mémoire cache ou dans la mémoire principale est différce. Le fonctionnement de la mémoire cache en modes écriture différce et écriture immédiate est connu dans l'art. Dès lors qu'un " élément non retrouvé " de mémoire cache se produit à un niveau quelcouque de la mémoire cache, les données réaupérces depuis un niveau supérieur de mémoire cache ou de la mémoire principale sont généralement stockées dans la mémoire de données de la mémoire cache et la mémoire marqueur est mise à j our pour refléter que les données sont désormais présentes. Généralement également, il est possible que d'autres données doivent être éliminces pour faire de la place pour les donnces nouvellement récupérées. Un " taux de réussite " de mémoire cache est le taux de références de mémoire qui " correspondent " dans la mémoire cache aux références de mémoire totale dans le système. On sait que la performance effective des processeurs équipés de mémoire cache peut varier considérablement avec le " taux de réussite " de mémoire cache. On sait également que le taux de réussite varie selon les caractéristiques du programme, la taille de la mémoire cache, la survenue d'événements d' interruption et autres facteurs. En particulier, on sait que des mémoires cache effectives de grande taille peuvent souvent offrir des taux de réussite considérablement supérieurs aux mémoires cache de petite taille. Il est par conséquent avantageux d'avoir une mémoire cache effective de grande taille. De nombreux systèmes informatiques mettent en _uvre plusieurs processeurs, chacun ayant son propre système de mémoire cache pour mettre en mémoire cache des références de mémoire principale. Généralement, les processeurs de tels systèmes peuvent accéder à une mémoire partagée. Une cohérence est requise dans la mémoire cache de ces systèmes informatiques. Les moyens de cobérence de mémoire cache signifient que chaque mémoire cache dans le système " voit " les mêmes valeurs de mémoire. Par conséquent, si une mémoire cache souhaite modifier le contenu d'un emplacement de mémoire, toutes les autres mémoires cache dans le système ayant des copies de cet emplacement de mémoire dans sa mémoire cache doivent mettre à j our ou invalider son contenu. Il existe de nombreuses manières connues dans lart concernant la façon dont les données peuvent être compressoes. Celles-ci comprennent des algorithmes de plage, des algorithmes de répétition et des algorithmes LZ78. Les algorithmes de plage sont couramment utilisés dans la transmission de télécopies. Les outils logiciels destinés à compresser et décompresser des données pour le stockage sur disque et la transmission de donnces par modem sont courants dans l'industrie. On connaît des logiciels destinés à compresser et décompresser des données de disques lorsque les données de disque sont mises en mémoire cache dans la mémoire principale. On connaît également des utilitaires logiciels destinés à compresser et décompresser des pages de mémoire principale. La plupart de ces utilitaires et outils utilisent un processeur du système pour effectuer les deux opérations de compression et de décompression, ces ut i l itaires et out il s peuvent prendre suffi samment de temps du processeur pour affecter de manière négative la performance du système. De nombreux systèmes proposent la mise en mémoire cache de données de disque dans la mémoire principale, ou une autre mémoire d'une vitesse similaire à celle de la mémoire principale. Pour les buts de ce brevet, une mémoire cache destinée à mettre en mémoire cache des données de disque dans la mémoire principale ou une mémoire d'une vitesse similaire à celle de la mémoire principale est une mémoire cache de disque; et une mémoire cache pour mettre en mémoire cache des références de mémoire principale alors que les informations sont réaupéréss par un processeur est une mémoire cache de processeur. Une mémoire cache intégrée est une mémoire cache de processeur située sur le même circuit intogré que le processeur. Les donnces stockées dans la mémoire cache ne sont généralement pas stockées sous forme compressoe. Il serait avantageux de faire cela pour atteindre une taille de mémoire cache effective supérieure, et ainsi des taux de réussite supérieurs. Généralement, la compression de données requiert plus de temps que la décompression en raison du temps requis pour compter les plages, détecter les répétitions et créer les dictionnaires. Le brevet US-5 826 054 décrit une mémoire cache de processeur stockant un flux d' instructions compressées. Le brevet US-6 216 213 décrit également une mémoire cache de processeur stockant un flux d' instructions compressées. La figure 8 du brevet 054 décrit la compression d'un flux d' instructions au moment o un module téléchargeable est créé; il ressort qu'un utilitaire de compression logicielle exécutant sur un processeur est envisagé. Les flux d' instructions compressoes des brevets 054 et 213 semblent être décompressés " à la volée " par un matériel dédié à mesure que les instructions sont lues depuis la mémoire cache dans le processeur. Il serait avantageux pour une mémoire cache de processeur de stocker au moins quelques données et instructions sous forme compressée, fournissant de ce fait une mémoire cache effective de taille plus grande que celle disponible sans compression. Il serait également avantageux d'effectuer la compression et la décompression de manière transparente vers les composants du système restant, et d'écrire la mémoire cache sans différé associé à la compression d'informations. Résumé de l' invention Un sous-système de mémoire cache de processeur destiné à stocker des instructions et des donnces est capable de stocker des informations d' instruction et de données à la fois sous forme compressce et non compressoe. Le sous-système de mémoire cache est écrit tout d'abord avec des informations non compressées, un moteur de compression est prévu pour balayer la mémoire cache et remplacer des informations non compressées par des informations compressoes, tout en libérant tout espace libéré pour le réutiliser. Dans un mode de réalisation particulier, le sous- système de mémoire cache forme le second niveau de mémoire cache dans un système, cependant on envisage l' application de la présente invention à des sous- systèmes de mémoire cache de troisième, voire de quatrième niveau. Des références de processeur sont transmises au sous-système de mémoire cache sur un élément non retrouvé dans une mémoire cache de premier niveau. Une partie de chaque adresse de référence est utilisée pour cibler une mémoire marqueur. La mémoire marqueur contient au moins un, et de préférence plusieurs, champs d'adresse marqueur, indicateurs pour la gestion de mémoire cache et pointeurs de lignes de données pour chaque direct ion indiquant l es emplacement s de chaque ligne de mémoire cache de chaque superligne dans une mémoire cache de donnces. Dans un mode de réalisation particulier, la mémoire cache est organisoe comme des lignes de soixante-quatre octets dans des superlignes de quatre lignes. La mémoire cache de donnces est organisée comme un réseau de sous-lignes, dans lesquelles deux ou plusieurs sous-lignes forment chaque ligne de mémoire cache; dans un mode de réalisation particulier, la mémoire cache comprend des sous-lignes de trente-deux octets. Les indicateurs " compressés " sont associés à chaque sous-ligne dans la mémoire cache de données. Les résultats satisfaisants de mémoire cache sont déterminés en comparant les champs d'adresse marqueur de la mémoire marqueur avec des bits supplémentaires de l'adresse de référence. Lors d'un résultat satisfaisant de mémoire cache, des pointeurs de ligne de donnces provenant de la mémoire marqueur sont utilisés pour placer des informations dans la mémoire cache de données. Les informations compressées sont décompressées avant transmission à la mémoire cache de premier niveau et au processeur. Dans l'intérêt de la vitesse, les informations récupérées en provenance d'une mémoire cache de niveau supérieur ou d'une mémoire principale lors d'éléments non retrouvés de mémoire cache sont écrites dans la mémoire cache de données sous forme non compressée, avec des informations de marqueur et des pointeurs mis à j our de manière appropriée. Ces informations sont écrites à un endroit indiqué sur une liste d'espace vide, et restent non compressoes jusqu'à ce leur placement et leur compression par le moteur de compression. Les informations mises en mémoire cache sont supprimoss lorsque les marqueurs sont répétés, ou lorsque la liste d'espace vide descend audessous d'un seuil prédéterminé. Dans un autre mode de réalisation, la mémoire cache est adressée à travers une mémoire cache marqueur dotée de marqueurs d'adresse suffisants pour une associativité à seize directions. Chaque marqueur dadresse est associé à un indicateur de direction et des indicateurs. Parmi les indicateurs de chaque marqueur d'adresse se trouvent un indicateur compressé et un indicateur de largeur. La mémoire cache de données associce comporte suffisamment de mémoire pour stocker douze directions d'informations non compressses. A un emplacement situé dans la mémoire cache de données correspondant à chaque ligne de mémoire marqueur, on stocke un groupe de lignes de mémoire cache. Les marqueurs d'adresse en excès par rapport au nombre nécessaire pour pointer des données non compressées dans chaque groupe de lignes de mémoire cache sont désignés ici comme des marqueurs d'adresse en surplus. L'indicateur de direction associé à chaque marqueur dadresse indique l'endroit o, dans le groupe de lignes de mémoire cache, peut être stockée une ligne de mémoire cache associée au marqueur d'adresse. Le moteur de compression lit réqulièrement le groupe de lignes de mémoire cache, le réécrit sous forme compressoe si les données situées dans le groupe de lignes de mémoire cache sont compressibles, et met à j our les indicateurs compressés et les indicateurs de direction de chaque ligne marqueur associce pour indiquer l'endroit o l'on stocke chaque ligne de données dans le groupe de lignes de mémoire cache. Dans ce mode de réalisation, si tout ou partie des lignes du groupe de lignes de mémoire cache est stockée sous forme compressce, l'espace restant dans le groupe de lignes est utilisable par les donnces de mémoire cache associées aux marqueurs d'adresse en surplus. La présente invention est prévue pour s'appliquer à d'autres associativités et directions de stockage. De manière similaire, on peut par exemple mettre en oeuvre une mémoire cache comportant trente-deux ensembles de marqueurs d'adresse dans chaque ligne de mémoire cache marqueur, et trente-quatre directions de stockage. Brève description des dessins La figure 1 est un schéma de principe d'un système informatique ayant un sous-système de mémoire cache à deux niveaux; La figure 2 est un schéma de principe d'un sous- système de mémoire cache de niveau supérieur prenant en charge la compression de données pour augmenter la taille de la mémoire cache effective; La figure 3 est un schéma de principe d'un second mode de réalisation en variante du sous-système de mémoire cache de niveau supérieur; La figure 4 est une illustration de l'organisation de la mémoire cache de données du sous-système de mémoire cache de niveau supérieur; et La figure 5 est un schéma de principe d'un moteur de compression pour le sous-système de mémoire cache de niveau supérieur. Description détaillée des modes de réalisation Un système informatique 100 (figure 1) comprend un processeur 102 sur un circuit intégré de processeur 103, avec une mémoire cache de premier niveau 104 comme cela est connu dans l'art. La mémoire cache de premier niveau 104 peut être une mémoire cache d' instructions/de données unifiées, ou peut contenir des mémoires caches d' instructions et de données séparces. Le système 100 comprend également une mémoire cache de second niveau 106, et un contrôleur système 108. Le contrôleur système 108 relie la mémoire cache de second niveau 106 à la mémoire principale 110, ainsi qu'à un système de stockage sur disque 112 et autres périphériques E/S 114. Le contrôleur système 108 propose également l'accès à la mémoire principale 110 depuis le système de stockage sur disque 112. La mémoire cache de second niveau 106 (figure 2) est une mémoire cache de processeur. La mémoire cache de second niveau 106 reçoit des rétérences omises dans la mémoire cache de premier niveau 104 à travers le port de processeur 202. Ces références comprennent une adresse de référence, à la fois pour l'opération de lecture et d'écriture et des données pour les opérations d' écriture. L' adresse de référence est divisée en quatre parties, une partie d'adresse marqueur, une partie de bits d'adresse élevoe, une partie de ligne en superligne, et une partie de ligne d'emplacement en ligne. La partie d'adresse marqueur de l'adresse de référence est utilisée pour trouver une ligne marqueur correspondante dans la mémoire marqueur 204. La mémoire cache de second niveau 106 est associative à N-directions, o N est de préférence supérieur à un, et dans un mode de réalisation particulier, est égal à six. Chaque ligne marqueur dans la mémoire marqueur 204 comprend un champ d'adresse marqueur pour chacune des N directions d'associativité et des indicateurs pour la gestion de la mémoire cache. Les champs d'adresse marqueur des N directions d'associativité sont comparés à la partie de bits d'adresse élevés de l'adresse de référence dans le comparateur de marqueur et la logique de réussite 206; les résultats de comparai son et l es indi cateurs de la ligne marqueur sont utilisés pour déterminer s'il existe un résultat satisfaisant. Chaque ligne marqueur de la mémoire marqueur 204 comprend également des pointeurs de ligne de donnces 208 pour chaque direction indiquant des emplacements de chaque sous-ligne de chaque ligne de mémoire cache de chaque superligne dans une mémoire cache de données 210. Dans un mode de réalisation particulier, la mémoire cache est organisoe comme des lignes de soixante-quatre octets en superlignes de quatre lignes, totalisant chacune deux cent cinquante six octets. La mémoire cache de donnces 210 est organisée comme un réseau de sous-lignes, o deux sous-lignes ou plus forment chaque ligne de mémoire cache; dans le mode de réalisation particulier, la mémoire cache comprend des sous-lignes de trente-deux octets. Des indicateurs " compressés " 212 sont associés à chaque sousligne dans la mémoire cache de données. Lorsque la mémoire cache de second niveau 106 recoit une demande de lecture qui obtient un résultat satisfaisant, un premier pointeur de ligne de données des pointeurs de ligne de donnces 208 provenant de la mémoire marqueur est utilisé pour placer la première sous-ligne des informations référencces dans la mémoire cache de donnces 210 et son indicateur compressé associé 212. Si l'indicateur compressé 212 associé à la première sous-ligne est défini, la sous-ligne est développée en ligne de mémoire cache complète par le moteur de décompression 214, les informations décompressées sont transmises à la mémoire cache de niveau inférieur 104 et au processeur 102. Si l'indicateur compressé 212 indique que la sous-ligne contient des informations non compressoes, un second pointeur de ligne de données des pointeurs de ligne de données 208 provenant de la mémoire marqueur est utilisé pour placer une seconde sous- ligne des informations référencées et les première et seconde sous-lignes sont transmises à la mémoire cache de niveau inférieur 104 et au processeur 102. Dans un premier mode de réalisation en variante, un lien avant 216 stocké avec la première sous-ligne est utilisé pour placer la seconde sous-ligne des informations référencées à la place d'un second pointeur de ligne de données des pointeurs de ligne de données 208. Lorsque la mémoire cache de second niveau 106 recoit une demande d'écriture qui obtient une réponse satisfaisante, un premier pointeur de ligne de données des pointeurs de ligne de donnces 208 provenant de la mémoire marqueur est utilisé pour placer la première sous-ligne des informations préalablement stockées dans la mémoire cache de donnces 210 et son indicateur compressé associé 212. Si l' indicateur compressé 212 associé à la première sous-ligne indique que la sous- ligne contient des informations non compressées, la première sous-ligne est écrasée par une première sous ligne d'informations provenant de la mémoire cache de premier niveau 104 ou du processeur 102. Un second pointeur de sous-ligne des pointeurs de sous-lignes 208 est ensuite utilisé pour placer une sous-ligne à écraser par une seconde sous-ligne d'informations provenant de la mémoire cache de premier niveau 104 ou du processeur 102. Dans le premier mode de réalisation en variante, le lien avant 216 stocké avec la première sous-ligne est utilisé pour placer la seconde sous-ligne des informations référencées pour remplacer un second pointeur de ligne de donnces des pointeurs de ligne de donnces 208. Si l'indicateur compressé 212 indique que la sous- ligne contient des informations compressées, la première sous-ligne est écrasée par la première sous- ligne d'informations provenant de la mémoire cache de niveau inférieur 104 et du processeur 102 comme cela est décrit précédemment, et l'indicateur compressé est effacé pour indiquer que la ligne contient des informations non compressées. Une seconde sous- ligne est supprimée d'une liste d'espace vide 218, un second pointeur de ligne de donnés des pointeurs de ligne de données 208 est écrit avec un pointeur sur la seconde sous-ligne, et la seconde sous-ligne écrite avec la seconde sous-ligne d'informations provenant de la mémoire cache de premier niveau 104 ou du processeur 102. Dans le premier mode de réalisation en variante, le lien avant 216 de la première sous-ligne est écrit avec un pointeur vers la seconde sous-ligne des informations écrites au lieu d'écrire un second pointeur de ligne de données des pointeurs de ligne de données 208. La liste d'espace vide 218 est entretenue comme une liste lice. Dans le mode de réalisation particulier, cette liste d'espace vide incorpore des liens avant stockés dans chaque sous-ligne inutilisée. Dans le premier mode de réalisation en variante, des pointeurs associés à la liste d'espace vide sont stockés dans les champs du lien avant 216 de chaque sous-ligne inutilisée. Cette liste est initialisée au moment du démarrage de sorte que toutes les sous-lignes se trouvent sur la liste d'espace vide. Pour éviter la congestion au niveau de la mémoire de données 210, les quelques premières entrées de la liste d'espace vide sont mises en mémoire cache dans une mémoire tampon de liste vide 222; permettant de ce fait à de courtes rafales d'activité de mémoire cache de se produire sans avoir à itérer la mémoire de donnces 210 pour suivre la liste d'espace vide. Lorsque des itérations de mémoire cache de données 210 ne sont pas requises pour lire et écrire, le moteur de compression 230 balaye la mémoire cache de données 210 à la recherche de sous-lignes comportant des indicateurs compressés 212 indiquant la présence d'informations non compressées. Lorsque l'on trouve de telles sous-lignes, le moteur de compression 230 compresse les données et suit les liens inverses 232 pour placer le marqueur de mémoire cache associé à la sousligne. Un second pointeur de ligne de données des pointeurs de ligne de donnéss 208 est obtenu à partir du marqueur de mémoire cache pour placer les sous- lignes restantes de la ligne entière de mémoire cache. Dans le premier mode de réalisation en variante, on suit les liens avant 216 pour placer les sous-lignes restantes de la ligne entière de mémoire cache. Dans ce mode de réalisation, les liens inverses 232 ne sont pas nécessaires. Le moteur de compression essaie ensuite de compresser la ligne de mémoire cache. Si la compression se traduit par des informationsqui conviennent à un nombre plus petit de sous-lignes que les données non compressoes, les données compressées sont écrites dans la mémoire cache de donnéss 210, l' indicateur compressé est défini, et les sous-lignes libérées sont liées à la liste d'espace vide 218. Les éléments non retrouvés de mémoire cache sont transmis à la mémoire cache de niveau supérieur ou à la mémoire principale pour réaupérer de nouvelles données à travers la logique d'omission 234 comme cela est connu dans l'art. Des données sont supprimées par une commande de suppression 244 comme cela est nocessaire pour créor de la place pour stocker les nouvelles donnces. Le système de mémoire cache comporte une logique de contrôle de mémoire cache 240, comprenant une file d'attente d'écritures différces 242, et la logique de commande de suppression 244 comme cela est connu dans l'art. Dans un second mode de réalisation en variante, des références de processeur entrent dans le sous système de mémoire cache selon les éléments non retrouvés dans la mémoire cache de niveau inférieur à travers un port de processeur 300 (figure 3). Chaque adresse de référence est divisce en trois parties, une partie d'adresse marqueur, une partie de bits d'adresse élevés et une partie de ligne d' emplacement en ligne. La partie d'adresse marqueur de l'adresse de référence est utilisée pour trouver une ligne marqueur correspondante dans la mémoire marqueur 304. Dans ce mode de réalisation chaque ligne de mémoire marqueur 304 comprend suffisamment de marqueurs d'adresse 400 (figure 4) pour une associativité à seize directions. Chaque marqueur d'adresse 400 est associé à un indicateur de direction 402 et des indicateurs 404. On trouve un indicateur compressé 406, un indicateur de largeur 408 et un indicateur valide 410, parmi les indicateurs 404 de chaque marqueur d'adresse. La mémoire cache de données associée 306 (figure 3) stocke douze directions d'informations non compressées. On stocke un groupe de lignes de mémoire cache à chaque emplacement de la mémoire cache de données correspondant à une ligne de mémoire marqueur. Les marqueurs d'adresse fournis en surplus du nombre requis pour pointer vers les donnces non compressoes de chaque groupe de lignes de mémoire cache sont désignés ici comme des marqueurs d'adresse en surplus. L'indicateur de direction 402, 422 (figure 4) associé à chaque marqueur d'adresse indique l'endroit dans le groupe de lignes de mémoire cache 440 dans la mémoire cache de données 310 o l'on stocLe une ligne de mémoire cache associce au marqueur d'adresse, telle que des lignes de mémoire cache 412, 432. L'indicateur de largeur 408, 428 indique la largeur de la ligne de mémoire cache sous forme d'un nombre entier de sous- lignes. Le moteur de compression 308 (figure 3) lit périodiquement la mémoire marqueur 304, avec ses indicateurs 306, et le groupe de lignes de mémoire cache 440 provenant de la mémoire cache de donnces 310. Le moteur de compression 308 compresse le groupe de lignes de mémoire cache 440 s'il est compressible, puis le rcécrit sous forme compressce dans la mémoire cache de données 310. Le moteur de compression 308 modifie également l' indicateur de largeur 408, l' indicateur de direction 404, et les indicateurs compressés 404 des indicateurs de mémoire marqueur 306 pour correspondre au groupe de lignes de mémoire cache 440. Lorsque les donnces sont lues à partir de la mémoire cache, elles sont lues par le biais d'un moteur de décompression 314 et décompressées si l'indicateur compressé 404 indique que les données ont été compressoes. Les résultats satisfaisants de mémoire cache sont déterminés en comparant le champ d'adresse d'ordre supérieur de l'adresse de référence avec des marqueurs d'adresse 400 dans le comparateur de marqueur et la logique de réussite 320. Les éléments non retrouvés de mémoire cache sont transmis à la mémoire cache de niveau supérieur ou à la mémoire principale à travers une logique d'omission 322. La mémoire cache comporte également une logique de contrôle 330, comprenant une file d'attente d'écritures différées 332, une logique de lecture anticipée 334, et une logique de commande de suppression 336 comme cela est connu dans l'art. La logique de contrôle de suppression utilise des indicateurs supplémentaires, y compris le caractère récent des indicateurs utilisés, non illustré sur les figures. Dans ce mode de réalisation, le moteur de compression 308 (figure 5) comprend un pointeur d'adresse 500 qui pointe dans la mémoire cache marqueur 304 et dans la mémoire cache de données 310. Dans un mode de réalisation, ce pointeur peut être mis en _uvre sous forme d'un compteur, de sorte que tous les emplacements de mémoire cache marqueur et de mémoire cache de données 310 sont balayés. Dans un autre mode de réalisation, ce pointeur est mis en _uvre sous forme d'une file d'attente d'emplacements récemment écrits dans la mémoire cache, de sorte que les donnces non compressoes peuvent être placées rapidement dans la mémoire cache. Le moteur de compression 308 comprend également une interface 502 pour lire et écrire la mémoire cache marqueur 304 et la mémoire cache de données 210. Le moteur de compression 308 lit des emplacements de mémoire cache marqueur 304 et de mémoire cache de données 310 comme cela est indiqué par le pointeur d'adresse 500 à travers l' interface 502, et transmet les données depuis la mémoire cache de données 310 vers la logique de compression 504. La logique de compression 504 tente d'appliquer un ou plusieurs algorithmes de compression aux donnces. Dans un mode de réalisation particulier, la logique de compression 504 utilise un algorithme de compression par comptage de plages, un algorithme de compression par comptage par séquences de bits répétées et un algorithme de reconnaissance et d'encodage de code opération courant; d'autres modes de réalisation peuvent utiliser d'autres algorithmes de compression. L'algorithme de reconnaissance et d'encodage de code opération courant peut reconnaître de nombreux codes d' instruction courants, comprenant les instructions de non opération, et de les encoder de manière efficace. Lorsque la logique de compression 504 peut appliquer des algorithmes de compression multiples, un indicateur d'algorithme fait partie des données compressées générées par la logique de compression. Etant donné que les algorithmes de compression ne parviennent pas touj ours à compresser les données, une logique de compression 504 produit un indicateur de compression réussie ainsi que des donnces compressoes. L'indicateur de compression réussie est utilisé par la logique de contrôle 506 pour déterminer si les données compressces doivent être réécrites dans la mémoire cache de donnces 310 ou si la mémoire cache marqueur 304 doit être mise à j our par les circuits de mise à j our de mémoire cache marqueur 508. Dans ce mode de réalisation, si tout ou partie des lignes du groupe de lignes de mémoire cache est stocké sous forme compressée, l'espace restant dans le groupe de lignes peut être utilisé par les données de mémoire cache associces aux marqueurs d'adresse en surplus. La fourniture de marqueurs d'adresse en surplus permet de répondre à environ seize directions complètes de donnces de mémoire cache si les données de mémoire cache s'avèrent compressibles, permettant éventuellement à une mémoire cache de trois méga-octets de contenir quatre méga-octets d'informations. La présente invention est prévue pour s'appliquer à d'autres associativités et directions de stockage. Par exemple, une mémoire cache ayant trente-deux ensembles de marqueurs d'adresse dans chaque ligne de mémoire cache marqueur, et vingt directions de stockage peuvent être mise en muvre de manière similaire. On prévoit que l'associativité optimale, le nombre de directions de stockage et la taille de mémoire cache varient avec le niveau de mémoire cache compressible dans la hiérarchie de mémoire cache, les améliorations dans la technologie de fabrication des circuits intégrés et les applications que le circuit intégré est amené à exéauter. On envisage également l'application de la présente invention aux organisations de mémoire cache avec ou sans superlignes, et à des niveaux de mémoire cache autres que le second niveau. En particulier, on envisage la présente invention comme pouvant être utilisoe en tant que mémoire cache de troisième niveau. La présente invention est également est prévue pour s'appliquer à des systèmes de mémoire cache d'écriture immédiate et d'écriture différce. Tandis que la présente invention est en particulier illustrée et décrite en référence à des modes de réalisation particuliers de celle-ci, l'homme du métier comprend que l'on peut apporter différentes modifications dans la forme et les détails sans s'éloigner de l' esprit et de la portée de la présente invention. Il faut comprendre que de nombreuses modifications peuvent être apportées en adaptant l' invention à différents modes de réalisation sans s'éloigner des concepts inventifs plus larges décrits ici et compris dans les revendications suivantes. REVEND I CAT I ONS 1. Moteur de compression (308) pour un sous- système de mémoire cache, le sous-système de mémoire cache comprenant une mémoire cache marqueur (304) et une mémoire cache de donnéss (310), dans lequel la mémoire cache de données (310) est organisoe comme une pluralité de sous-lignes, le moteur de compression (30) comprenant: un pointeur (500) situé dans la mémoire cache marqueur (304) et la mémoire cache de données (310); une interface (502) couplée au pointeur (500), et pouvant être couplée à la mémoire cache marqueur (304), et à la mémoire cache de données (310), l' interface capable de l ire des informat ions marqueur et des données non compressées et d'écrire des informations marqueur modifices et des données compressoes; une logique de compression (504), la logique de compression étant couplée pour appliquer au moins un algorithme de compression aux données lues par l' interface (502) pour générer des données compressées et générer des informations de compression réussie; et un circuit de mise à j our de ligne marqueur (508) pour générer des informations marqueur modifiées selon les informations de compression réussie et les informations marqueur. 2. Moteur de compression selon la revendication 1, dans lequel la logique de compression (504) peuLtenter une compression avec une pluralité d'algorithmes de compression. 3. Moteur de compression selon la revendication 1, dans lequel le pointeur (500) comprend une file d'attente d'adresses écrites récemment. 4. Moteur de compression selon la revendication 1, dans lequel le pointeur (500) comprend un compteur. 5. Mémoire cache comprenant: une mémoire cache marqueur ( 304) pouvant fonctionner avec une logique de comparaison et de réussite marqueur (320) pour déterminer des réponses satisfaisantes de mémoire cache; une mémoire cache de donnces (310); un port de processeur (300) couplé pour permettre des références à la mémoire cache marqueur (304) et à la mémoire cache de donnces (310) par un processeur; un port de mémoire (322) couplé pour transférer des références omises à une mémoire sélectionnée à partir du groupe composé de la mémoire cache de niveau supérieur et de la mémoire principale; un moteur de compression (308) couplé à la mémoire cache de donnces (310), le moteur de compression couplé pour lire des données provenant de la mémoire cache de données (310), écrire des données compressses dans la mémoire cache de donnces (310) et mettre à j our des indicateurs compressés stockés dans une mémoire sélectionnée à partir du groupe composé de la mémoire cache de données (310) et de la mémoire cache marqueur (304) i un moteur de décompression (314) couplé pour recevoir des données compressées provenant de la mémoire cache de données (310) et fournir des donnces décompressces au port du processeur (300); et une logique de contrôle de mémoire cache (330) couplée pour supprimer des données de la mémoire cache si nécessaire pour créer de la place pour de nouvelles données réaupérées sur le port de mémoire (322). 6. Mémoire cache selon la revendication 5, dans laquelle la mémoire cache de données (310) est organisée comme une pluralité de sous-lignes pouvant être attribuées indépendamment, et dans laquelle on maintient une liste liée de sous-lignes disponibles (218) dans la mémoire cache de données (310). 7. Mémoire cache selon la revendication 5, dans laquelle la mémoire cache de données (310) est organisée comme une pluralité de sous-lignes pouvant être attribuées indépendamment à l'intérieur de groupes de lignes, o la mémoire cache marqueur (304) et une logique de comparateur et de réussite (320) comprend une pluralité de directions d'associativité ayant un nombre supérieur de directions d'associativité par rapport aux directions de stockages prévues dans chaque groupe de ligne (440) dans la mémoire cache de données (310). 8. Mémoire cache selon la revendication 7, dans laquelle une pluralité de directions d'associativité en mémoire cache marqueur (304) comprend des indicateurs de direction associés qui indiquent un point de départ de ligne de mémoire cache associée dans un groupe de lignes (440) situé dans la mémoire cache de données