Mémoire cache
La mémoire cache est un type de mémoire vive (RAM) à laquelle le microprocesseur peut accéder plus rapidement qu'à la mémoire RAM habituelle. Généralement, cette mémoire cache est directement intégrée dans la puce de l’unité centrale (UC) ou placée sur une puce distincte dotée d'une interconnexion par bus à l'UC.
La fonction de base de la mémoire cache est de stocker les instructions de programme qui sont fréquemment re-référencées par les logiciels en cours d'exécution. L'accès rapide à ces instructions accroît la vitesse globale des logiciels.
Lorsque le microprocesseur traite des données, il cherche d'abord dans la mémoire cache ; s'il y trouve les instructions (stockées suite à une précédente lecture des données), cela lui évite d'effectuer une lecture des données plus longue dans une mémoire plus volumineuse ou sur d'autres périphériques de stockage.
La plupart des programmes utilisent très peu de ressources une fois qu'ils ont été ouverts et utilisés pendant un certain temps, principalement parce que les instructions souvent re-référencées ont tendance à être placées en mémoire cache. Cela explique pourquoi les mesures des performances système des ordinateurs équipés de processeurs plus lents mais de mémoires caches plus grandes ont tendance à être plus élevées que celles des ordinateurs plus rapides mais plus limités en espace mémoire cache.
La mise en cache multiniveau est devenue courante dans les architectures serveur et des postes de travail, les différentes couches améliorant le rendement grâce à la gestion en niveaux. En termes simples, moins l'accès à certaines données ou instructions est fréquent, plus leur niveau d'écriture dans la mémoire cache est bas.
Comment fonctionne la gestion en niveaux de la mémoire cache
La mémoire cache est rapide et coûteuse. Traditionnellement, elle est classée « par niveaux » en fonction de sa proximité avec le microprocesseur et de son degré d'accessibilité à ce dernier :
- La mémoire cache de niveau 1 (L1) est extrêmement rapide mais relativement petite, et généralement incorporée dans le processeur.
- La mémoire cache de niveau 2 (L2) a souvent une plus grande capacité que la L1 ; elle peut être placée sur l'UC, sur une puce distincte ou sur un coprocesseur équipé d'un autre bus système à grande vitesse assurant son interconnexion avec l'UC afin qu'elle ne soit pas ralentie par le trafic du bus principal.
- La mémoire cache de niveau 3 (L3) est généralement une mémoire spécialisée qui améliore les performances des mémoires L1 et L2. Elle peut être beaucoup plus lente que ces dernières, mais le plus souvent elle est deux fois plus rapide que la RAM. En cas d'utilisation de processeurs multi-cœur, chaque cœur peut être équipé de ses propres mémoires cache L1 et L2, mais partager avec les autres une mémoire L3. Lorsqu'une instruction est référencée dans la mémoire cache L3, elle est généralement transférée dans une mémoire cache à un niveau plus élevé.
Configurations de la mémoire cache
Les configurations de mise en cache continuent d'évoluer, mais on distingue traditionnellement trois configurations différentes :
- La correspondance directe, dans laquelle chaque bloc est mis en correspondance avec une seule adresse dans la mémoire cache. Sur le plan conceptuel, on peut la comparer à des rangées dans un tableau à trois colonnes : le bloc de données ou la ligne de cache qui contient les données extraites et stockées, une balise qui contient tout ou partie de l'adresse des données extraites et un bit indicateur qui dénote la présence d'un bit valide de données dans l'entrée de ligne.
- La correspondance pleinement associative a une structure similaire à celle de la correspondance directe, mais elle permet de mettre un bloc en cache dans n'importe quel emplacement plutôt qu'à une adresse pré-spécifiée de la mémoire cache (comme c'est le cas dans la correspondance directe).
- La correspondance associative par ensemble peut être considérée comme un compromis entre la correspondance directe et la correspondance pleinement associative dans lequel chaque bloc est mis en correspondance avec un sous-ensemble d'adresses du cache. Parfois appelée correspondance associative par ensemble de n blocs, elle met en correspondance chaque emplacement de la mémoire principale avec « N » emplacements de la mémoire cache L1.
Caches spécialisés
Outre les caches d'instructions et de données, il existe des caches qui ont des fonctions spécialisées dans un système. Selon certaines définitions, le L3 est un cache spécialisé à cause de sa conception partagée. D'autres définitions font la distinction entre le cache d'instructions et le cache de données, tous deux considérés comme des caches spécialisés.
Parmi les autres mémoires caches spécialisées, citons le tampon de traduction (TLB, translation lookaside buffer), dont le rôle consiste à convertir les adresses virtuelles en adresses physiques.
Mais d'autres ne sont pas, techniquement parlant, de véritables mémoires caches. Ainsi par exemple, les caches de disque peuvent tirer parti de la RAM ou de la mémoire Flash pour fournir en grande partie le même type de mise en cache que les mémoires caches avec les instructions de l'UC. En cas d'accès fréquents aux données sur le disque, les données sont mises en cache dans la DRAM ou un système de stockage Flash afin d'accélérer les accès et les réponses.
Il existe également des caches spécialisés pour des applications telles que les navigateurs Web, les bases de données, la liaison des adresses réseau et la prise en charge du protocole NFS (Network File System) côté client. Ces types de caches peuvent être répartis entre plusieurs hôtes en réseau afin que les applications qui les utilisent bénéficient d'une évolutivité et de performances plus importantes.
Augmentation de la taille du cache
Autrefois, les caches L1, L2 et L3 fonctionnaient grâce à l'association d'un processeur et de composants de carte mère. La tendance récente consiste à regrouper les trois niveaux de mémoire cache sur l'UC elle-même.
Par conséquent, le principal moyen utilisé pour augmenter la taille du cache, qui était d'acquérir une carte mère spécifique avec différents jeux de composants et architectures de bus, consiste de plus en plus à acheter l'UC appropriée avec le niveau adéquat de caches L1, L2 et L3 intégrés.
Contrairement aux idées reçues, la mise en œuvre de la mémoire Flash ou de plus grandes quantités de DRAM dans un système n'augmente pas la mémoire cache. Cela peut prêter à confusion parce que le terme mise en mémoire cache (mise en mémoire tampon sur le disque dur) est souvent utilisé de manière interchangeable avec mémoire cache.
Or, dans le premier cas, l'utilisation d'une DRAM ou d'une mémoire Flash vise à améliorer les E/S de stockage en mettant en mémoire cache les données fréquemment référencées dans un tampon de préférence à un disque magnétique ou une bande fonctionnant plus lentement.
En revanche, la mémoire cache permet de mettre les données lues dans un tampon pour l'UC.
Vidéo
Ce tutoriel vidéo pour la certification CompTIA A+ explique ce qu'est la mémoire cache :