TUTORIEL ALGO/METHODES 
Expliquez-moi... La mémoire cache
Description du mode de fonctionnement de cette mémoire nécessaire à une utilisation optimale du processeur. Structure, méthodes, règles. (17/11/2005)
Nous savons tous ce à quoi correspondent les deux principaux types de mémoire d'un ordinateur : ROM et RAM. La ROM (Read-Only Memory), ou "mémoire morte", contient les données nécessaires au démarrage de l'ordinateur, à commencer par le BIOS et l'amorce. Comme son nom l'indique, elle ne peut pas se modifier. La RAM (Random Access Memory), ou mémoire vive, quant à elle, contient les données volatiles envoyées par le système d'exploitation. Elle est beaucoup plus rapide que la ROM.

La mémoire cache (ou "cache"), qui a fait son apparition vers les années 80, est quant à elle placée près du processeur, voire greffée sur ce dernier. Étant encore plus rapide que la RAM, le processeur s'en sert pour stocker les données auxquelles il accède particulièrement souvent, réduisant d'autant le temps de latence entre deux requêtes. La mémoire fait office de tampon entre le processeur et la mémoire vive.

Si cette mémoire est jusqu'à 10 fois plus rapide que la RAM, elle a cependant une capacité beaucoup plus limitée, notamment pour une question de prix. Pour disposer d'un système équilibré, il faut donc combiner différents types de mémoires plus ou moins rapides et onéreuses (en prenant également en compte les temps d'accès et tant de cycle).

Il peut y avoir de nombreux caches pour un seul processeur, chacun pouvant se spécialiser dans un jeu d'instruction particulier. Un cache peut même être placé entre le processeur et un autre cache, si cela peut servir les performances. Ainsi, plus le processeur est rapide, plus il profitera d'un grand nombre de mémoires caches - sans quoi ses capacités ne pourront être exploitées au mieux.

Concrètement, la mémoire cache fonctionne de la même manière que le cache d'un navigateur Internet : si le cache dispose de l'information demandée, il la fournit au processeur ; autrement, il récupère cette information envoyée par le fournisseur original, et la stocke pour une utilisation à venir.

Par ailleurs, si le processeur souhaite écrire une donnée en mémoire, il vérifie d'abord si l'adresse de la mémoire est dans le cache, par un système de comparaison interne. S'il la trouve, il écrit dans la mémoire cache, sinon celle-ci crée une nouvelle entrée dans laquelle elle stocke la donnée, en la recopiant depuis la mémoire principale

Parce qu'il n'offre pas autant d'espace que la RAM, le cache ne peut pas créer une entrée pour l'ensemble des données stockées par cette dernière. Elle doit donc à chaque création d'entrée faire un choix : décider quelle donnée cachée est la moins susceptible d'être utilisée dans les prochains cycles du processeur.

Plusieurs méthodes ont été développées au fil des années pour décider efficacement. L'une des plus logiques consiste à compter le nombre d'utilisations d'une entrée, et à évincer la moins utilisée au moment de la création d'une nouvelle entrée - c'est la méthode LFU, pour Least Frequently Used. Pareillement, la méthode LRU (Least Recently Used) visera l'entrée la plus anciennement utilisée.

D'autres éléments peuvent également entrer en compte dans ces choix. Tout d'abord, le "prix", ou disponibilité : si une entrée vieille ou peu utilisée a été difficile à obtenir lors de sa création, ne vaut-il mieux pas en évincer une moins "chère" ? La taille : évincer une entrée qui prend beaucoup de place permettra de stocker plusieurs petites entrées. Plus simplement, certaines entrées peuvent simplement avoir une date d'utilisation maximale, après quoi l'entrée est supprimée sans plus de test.

  Forum

Réagissez dans les forums de JDN Développeurs

Il faut également faire la correspondance d'écriture entre cache et RAM : une entrée créée dans le cache profitera également d'être stockée en RAM, ne serait-ce que pour toujours exister en cas d'éviction du cache.

Là encore, plusieurs méthodes existent : copier l'entrée en RAM dès qu'elle est créée dans le cache, ou seulement quand elle en est évincée ? La question n'est pas anodine, car étant donné le temps d'accès de la RAM, la première méthode requiert deux accès à cette mémoire dix fois plus lente...

D'autres méthodes consistent à copier les données du cache périodiquement, ou à les stocker dans un tampon afin de copier plusieurs entrées en même temps (et ainsi économiser en temps d'accès du bus).
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages