- La mémoire cache du processeur (L1, L2, L3 et même L4) réduit considérablement la latence par rapport à la RAM et est essentielle aux performances réelles.
- La hiérarchie du cache équilibre capacité et vitesse : L1 et L2 par cœur, L3 partagé et, dans certains cas, L4 pour la prise en charge du GPU.
- La latence, la bande passante et le taux d'accès au cache déterminent les performances dans les jeux et les charges de travail intensives, tout comme la vitesse de la RAM.
- Des technologies comme le V-Cache 3D d'AMD étendent le cache L3 grâce à un empilement 3D, améliorant considérablement les performances de jeu.
Lorsqu'on parle de processeurs, on s'attarde presque toujours sur les cœurs, la fréquence et le processus de fabrication, mais la mémoire cache et sa latence sont largement négligées, alors qu'elles sont essentielles aux performances réelles du système. Comprendre les interactions entre le processeur, le cache et la RAM permet de saisir pourquoi deux processeurs ayant la même fréquence peuvent avoir des performances très différentes.
Ces dernières années, des concepts comme la latence du cache, la bande passante L1/L2/L3 et des technologies telles que le cache virtuel 3D d'AMD sont devenus essentiels dans les benchmarks, les jeux et les tests de performance C++, où mesurer une différence de quelques nanosecondes seulement peut radicalement changer le résultat. Analysons en détail la latence du cache du processeur, son importance et comment elle est mesurée concrètement.
Du fossé entre le processeur et la RAM à la naissance de la mémoire cache
Dans les années 80, la vitesse des processeurs a progressé bien plus rapidement que celle de la mémoire . Les unités centrales exécutaient les instructions à un rythme effréné, tandis que les temps d'accès à la RAM restaient relativement longs. Il en résultait un goulot d'étranglement permanent : le processeur passait un temps considérable à attendre l'arrivée des données.
Pour pallier cet écart de performance, les ingénieurs ont introduit la mémoire cache comme couche intermédiaire entre le processeur et la RAM. L'idée est simple mais efficace : stocker, au plus près du processeur et dans une mémoire extrêmement rapide, les données et les instructions dont le processeur est le plus susceptible d'avoir besoin à court terme. Cela réduit la latence effective et masque la relative lenteur de la RAM.
Dans un PC moderne, on peut clairement distinguer trois niveaux de stockage : le stockage de masse (HDD, SSD), volumineux mais lent ; la RAM , beaucoup plus rapide mais avec une latence toujours significative ; et la mémoire cache intégrée au processeur , de capacité minuscule, mais de loin la plus rapide.
Le cache n'est pas l'apanage du processeur : les disques durs, les SSD, les GPU, les imprimantes et autres périphériques possèdent également leur propre cache interne pour accélérer l'accès aux données. Toutefois, le cache du processeur a l'impact le plus direct sur l'expérience utilisateur au quotidien.
Qu'est-ce que la mémoire cache du processeur et comment fonctionne-t-elle ?
La mémoire cache du processeur est une mémoire SRAM intégrée à la puce , capable de fonctionner à des vitesses extrêmement élevées avec des latences de l'ordre de la fraction de nanoseconde. Contrairement à la RAM (DRAM), elle ne nécessite pas de rafraîchissement constant, est plus coûteuse à fabriquer et possède une capacité bien moindre ; de ce fait, elle est réservée aux données critiques stockées à très court terme.
Sa fonction principale est de servir de tampon ultrarapide entre les cœurs du processeur et la mémoire vive (RAM) . Au lancement d'un programme, son code et ses données sont d'abord chargés depuis le stockage vers l'espace d'adressage de la RAM. Ensuite, le contrôleur de mémoire intégré au processeur transfère dans le cache les blocs les plus susceptibles d'être utilisés, en fonction des modèles d'accès et des algorithmes de prédiction.
Le processus typique est le suivant : le processeur demande une adresse mémoire, en consultant d’abord le cache L1 , puis le L2 et enfin le L3. Si les données sont trouvées dans l’un de ces caches, on parle de « succès », la requête est traitée rapidement et de nombreux cycles d’horloge sont économisés. Si les données ne sont trouvées dans aucun de ces caches, on parle d’« échec », et les données doivent être récupérées depuis la RAM, ce qui entraîne une latence plus élevée et une bande passante effective moindre pour les petites opérations.
La conception de cette hiérarchie mémoire vise un équilibre : des caches de petite taille et extrêmement rapides à proximité du cœur , et des caches de plus en plus grands mais plus lents à mesure qu’on s’éloigne des unités d’exécution. Toute la magie des performances d’un processeur moderne repose sur la maximisation du nombre d’accès réussis et la minimisation du coût des échecs.
Niveaux de cache : L1, L2, L3 et même L4
Les processeurs modernes intègrent généralement trois niveaux de cache : L1, L2 et L3 . Certains modèles spécifiques incluent également un niveau L4, généralement implémenté sur une puce séparée, similaire à l’eDRAM, pour des tâches très spécifiques, comme l’apport de ressources supplémentaires au GPU intégré.
Chaque niveau de cache est caractérisé par un triangle de facteurs : la distance physique par rapport au cœur, la latence et la capacité. Plus il est proche des unités d’exécution, plus la latence est faible, mais plus sa taille est réduite, car le coût en transistors augmente considérablement.
Cache L1 : la première ligne de feu
Le cache L1 est le plus proche du noyau et le plus rapide de tous les caches . Il est généralement divisé en deux blocs distincts : le cache de données L1 (L1D) et le cache d’instructions L1 (L1I). Le premier stocke les opérandes à traiter, tandis que le second stocke les instructions décodées que le noyau exécutera.
Chaque cœur possède son propre cache L1, non partagé avec les autres, ce qui signifie qu'il n'y a pas de cohérence L1 directe entre les différents cœurs. Généralement, on parle de 32 Ko de cache L1D et 32 Ko de cache L1I par cœur dans de nombreuses architectures modernes, bien que certaines conceptions augmentent ces valeurs. Des quantités légèrement supérieures peuvent être trouvées dans certains processeurs haut de gamme ou serveurs.
En termes de performances, le cache L1 offre des latences inférieures à la nanoseconde et des vitesses de lecture maximales de plusieurs milliers de Go/s dans des outils de test comme AIDA64. Par exemple, un processeur Ryzen moderne peut atteindre une latence L1 d'environ 0,7 ns avec des bandes passantes dépassant 2 700 Go/s, au prix d'une taille réduite, comme 512 Ko de cache L1 total sur tous les cœurs.
Cache L2 : l’équilibre entre taille et vitesse
Le cache L2 se situe juste après le cache L1 et constitue une seconde couche de sauvegarde . Sa latence est légèrement supérieure, mais reste très faible comparée à celle de la RAM. Il sert à stocker les données qui ne tiennent pas dans le cache L1 mais qui sont fréquemment utilisées.
Dans la plupart des architectures grand public, chaque cœur possède son propre cache de couche 2 privé , non divisé en données et instructions, et dont la taille varie généralement de 256 Ko à 1 Mo par cœur. Toutefois, dans les serveurs de dernière génération, des tailles de 1 Mo par cœur, voire plus, sont courantes. En termes de performances, des bandes passantes supérieures à 1 300 Go/s avec des latences d'environ 2,7 ns sont typiques.
Plus étendue, la couche L2 contribue à réduire les erreurs qui, en l'absence de la seule couche L1, atteindraient la couche L3 ou la RAM, assurant ainsi un bon équilibre entre capacité et latence . Dans certaines topologies, plusieurs cœurs sont regroupés en clusters partageant une couche L2 commune, ce qui introduit des fonctionnalités de cohérence supplémentaires et des bus internes.
L3 ou LLC (cache de dernier niveau)
Le cache L3 est aussi souvent appelé LLC (Last Level Cache) car, dans la plupart des processeurs de bureau, il s'agit du dernier niveau de cache avant la RAM. C'est le cache le plus volumineux et aussi le plus lent du processeur.
Contrairement aux caches L1 et L2, le cache L3 est généralement partagé entre tous les cœurs ou de grands groupes de cœurs (par exemple, des blocs de huit dans certaines architectures AMD). Cela permet à chaque cœur de réutiliser des données chargées par un autre, augmentant ainsi le taux d'accès global, même si cela complexifie considérablement la logique de cohérence.
Sur un processeur de bureau de milieu de gamme, la mémoire cache L3 est généralement comprise entre 4 et 32 Mo, tandis que sur les processeurs de serveurs, comme certains modèles AMD EPYC, elle atteint facilement plusieurs centaines de Mo. En contrepartie, la latence est plus élevée (environ 10 ns) et la bande passante est inférieure à celle des caches L1 et L2, bien que toujours significative : environ 900 Go/s sur les systèmes performants.
cache L4 : cas particuliers
Le cache L4 est un cas particulier qui n'apparaît pas dans la plupart des processeurs grand public . Il est généralement implémenté sous forme de mémoire eDRAM externe au processeur, mais physiquement très proche de celui-ci sur la carte mère, et est utilisé dans les processeurs avec GPU intégré pour augmenter la bande passante graphique.
Un exemple classique en est le processeur Intel Core i5-5775C, qui combinait 6 Mo de cache L3 à 128 Mo d'eDRAM utilisés comme cache L4 pour son GPU intégré Iris Pro 6200. Cette mémoire servait de tampon pour les données graphiques, réduisant ainsi la charge sur la RAM système et améliorant les performances de jeu par rapport aux autres iGPU dépourvus de cette fonctionnalité.
Latence du cache et son impact sur les performances
Le mot clé lorsqu'on parle de cache du processeur est la latence : le temps nécessaire au processeur pour accéder aux données stockées à un niveau de mémoire spécifique. Cette latence se mesure en nanosecondes (ns), et bien que ces temps puissent paraître infimes, cumulés à l'échelle de millions d'accès par seconde, ils font une différence significative.
Dans une hiérarchie de cache classique, la latence du cache L1 est la plus faible (moins de 1 ns), celle du cache L2 est multipliée par plusieurs facteurs (par exemple, 2,7 ns), et celle du cache L3 augmente encore (elle peut atteindre 10 ns, voire plus, surtout s'il est situé sur une puce distincte). Lorsqu'aucun cache n'est disponible, le processeur doit accéder à la RAM, où les latences peuvent grimper en flèche jusqu'à plusieurs dizaines de nanosecondes, même avec une mémoire DDR5 rapide.
Un exemple concret : avec un Ryzen 7 7700X et de la mémoire DDR5 à 6 000 MT/s et CL30, on observe des latences RAM moyennes d’environ 70 ns, contre 0,7 ns pour le cache L1, 2,7 ns pour le cache L2 et environ 10 ns pour le cache L3. Cette différence explique pourquoi il est crucial que le processeur trouve les données dans le cache : chaque défaut de cache entraîne un temps d’attente considérablement plus long.
La latence dépend non seulement de la technologie mémoire utilisée, mais aussi de la distance physique et de la topologie . Dans les anciennes conceptions où les caches L2 et L3 étaient montés sur la carte mère, beaucoup plus loin du processeur, la latence était bien plus élevée et les performances s'en trouvaient dégradées. L'intégration de tous les caches au sein du processeur a permis de réduire considérablement ces délais.
Outre la latence, la bande passante effective du cache (mesurée en Go/s) indique la quantité de données transférables par unité de temps. Le cache L1 domine à nouveau ce domaine avec des vitesses de lecture dépassant les 2 000 Go/s lors des tests de performance synthétiques, suivi des caches L2 et L3 dont les valeurs sont plus modestes, mais restent nettement supérieures à celles de la RAM.
Succès, échecs de cache et cohérence inter-cœurs
Lorsque le processeur trouve des données dans un niveau de cache, on parle de succès de cache . S'il ne les trouve pas, on parle d' échec de cache , et le processeur doit alors accéder au niveau de cache inférieur ou, en dernier recours, à la mémoire principale. Plus le nombre de succès de cache est élevé, meilleures sont les performances globales du système.
Les défauts de cache n'ajoutent pas seulement de la latence ; ils peuvent également obliger le processeur à répéter des cycles de travail ou à réorganiser les instructions parce que les données ne sont pas encore disponibles, ce qui « perturbe » le pipeline interne du processeur et réduit l'utilisation de ses unités fonctionnelles.
Dans les processeurs multicœurs, la cohérence du cache joue également un rôle crucial ; il s’agit de maintenir une vue cohérente des données partagées entre les cœurs possédant leurs propres caches L1 et L2. Des protocoles de cohérence complexes gèrent l’invalidation et la mise à jour des lignes de cache lorsqu’un autre cœur modifie des données, ce qui génère du trafic interne et peut impacter la latence effective.
L'architecture interne joue également un rôle. Dans les architectures monolithiques, comme de nombreux processeurs Intel Core, tous les cœurs accèdent à un seul cache L3 avec des latences relativement uniformes. Dans les architectures à chiplets ou MCM, telles que les premières générations d'AMD Ryzen, le cache L3 est organisé en blocs (CCX, CCD), et certains cœurs ne peuvent accéder directement qu'à une partie de ce cache, ce qui introduit des latences supplémentaires lors du passage d'un bloc à l'autre.
Latence du cache par rapport à la RAM : fréquence, timings et bus
Lorsque les informations ne sont pas présentes dans le cache, la mémoire vive (RAM) entre en jeu . Deux concepts sont souvent confondus : la latence et la fréquence. La fréquence (généralement exprimée en MT/s ou MHz) indique la quantité de données transférables par seconde, tandis que la latence (en ns ou via des intervalles de temps comme CL16, CL30, etc.) indique le temps nécessaire à la réception de la première donnée.
La mémoire vive (RAM) à haute fréquence mais à latence très élevée offre une bonne bande passante, mais un temps de réponse plus long, ce qui pénalise les processus sensibles à la latence comme les jeux ou certaines charges de travail à accès non séquentiel. À l'inverse, les modules à latence plus faible améliorent la vitesse de premier accès, même si leur bande passante brute est moins importante.
La largeur du bus entre le processeur et la RAM est également importante. Sur la plupart des ordinateurs de bureau, chaque canal mémoire dispose d'un bus 64 bits ; avec une configuration double canal, ce nombre passe à 128 bits effectifs, doublant ainsi la quantité de données pouvant transiter simultanément entre le processeur et la RAM.
Plus la combinaison de fréquence, de latence et de largeur de bus est efficace , moins un défaut de cache sera pénalisant. Cependant, aucune mémoire RAM actuelle n'atteint les performances de latence et de bande passante des caches L1, L2 ou L3 ; la priorité reste donc d'optimiser le taux d'accès au cache.
RAM du bloc-notes vs cache automatique
À l'intérieur du processeur, on trouve non seulement des caches automatiques gérés par le matériel, mais aussi, selon les modèles, de la mémoire vive temporaire (Scratchpad RAM) , un type de mémoire interne très rapide qui, contrairement au cache, n'est pas autogérée.
La différence est flagrante : la mémoire cache réplique de manière transparente les lignes de données proches des adresses utilisées, selon des algorithmes internes, et le programmeur n’a aucun contrôle direct sur elle. À l’inverse, une mémoire vive temporaire (ou mémoire tampon) fonctionne comme une petite mémoire vive locale, où le logiciel décide lui-même des données à stocker, de leur organisation et du moment où il faut les effacer.
Cette approche est plus courante dans les processeurs embarqués, les DSP et certains GPU, où des schémas d'accès très prévisibles sont nécessaires et où l'incertitude liée à la mise en cache automatique doit être évitée. Sur les PC de bureau et les serveurs, l'utilisateur final interagit rarement directement avec la mémoire vive temporaire (Scratchpad RAM).
Latence du cache, tests de performance et effets curieux
Dans le monde des benchmarks, il est courant de mesurer les latences de cache en nanosecondes et les bandes passantes en Go/s pour chaque niveau (L1, L2, L3) à l'aide d'outils tels que AIDA64, ou en développant vos propres tests en C++ qui effectuent des analyses spécifiques de grands tableaux.
Ces tests peuvent révéler des comportements curieux. Par exemple, lors de la mesure de la bande passante de lecture L2 et L3 sur un système apparemment inactif, il est possible d'observer que les valeurs L2 chutent parfois d'environ 80 Go/s à environ 60 Go/s , et que les valeurs L3 peuvent chuter d'environ 45 Go/s à un peu plus de 35 Go/s sans raison apparente.
Une explication courante est la limitation de fréquence, ou les variations dynamiques de la fréquence interne et de l'état de consommation du processeur. Cependant, il arrive que, lors de l'ouverture d'un outil de surveillance comme HWINFO, les scores reviennent comme par magie à des valeurs « correctes ». Dès la fermeture de l'outil, les scores fluctuent à nouveau à la baisse.
En général, les programmes comme HWINFO maintiennent le processeur dans des états de hautes performances , ce qui impose des fréquences plus stables et empêche certaines parties du cache ou de l'anneau interne de passer en mode veille profonde. Si le test de performance est exécuté sans qu'aucun autre processus ne soit actif, le processeur tend à économiser de l'énergie, ce qui peut réduire ponctuellement la bande passante effective mesurée, même si les latences moyennes restent globalement inchangées.
Dans de tels cas, des solutions ont été proposées, comme le maintien d'un thread « keep-alive » qui effectue des tâches légères pour empêcher le processeur de se mettre en veille, mais il n'est pas toujours facile de reproduire l'effet d'un outil de surveillance, car chaque microarchitecture possède son propre ensemble d'états de veille et de politiques internes.
mémoire cache et performances de jeu
Dans les jeux vidéo, le cache L3 joue un rôle crucial. De nombreuses applications bénéficient grandement de la possibilité de stocker davantage de données et d'instructions au plus près du processeur , qu'il s'agisse des structures de scène, des données physiques ou de la logique du jeu. Moins il y a d'accès à la RAM, plus le nombre d'images par seconde est stable et moins il y a de fluctuations de fréquence d'images.
Un processeur doté d'un cache L3 généreux et bien utilisé peut améliorer considérablement la stabilité de la fréquence d'images, notamment dans les jeux modernes qui gèrent un grand nombre d'objets et effectuent de nombreuses requêtes répétitives sur des structures de données. Au lieu d'accéder constamment à la RAM (beaucoup plus lente et présentant une latence plus élevée), le processeur peut répondre à la plupart des requêtes directement depuis son cache L3.
Cependant, le cache ne fait pas de miracles. Un processeur avec peu de cœurs, un IPC faible et des fréquences modestes restera limité, même avec une grande quantité de cache L3. La combinaison gagnante pour le jeu est généralement un IPC élevé, une bonne fréquence, un cache conséquent et une RAM rapide à faible latence , afin de minimiser les goulots d'étranglement.
Lorsqu'un jeu gourmand en ressources est lancé, si l'on effectue des mesures en parallèle avec un outil de benchmark comme AIDA64, on constate une augmentation soudaine des accès au cache . De nombreux micro-saccades perceptibles dans certains titres sont dues à des défauts de cache qui forcent le système à accéder à la RAM, ou à des changements de thread qui rompent la localité des données établie.
Le cache virtuel 3D d'AMD et la course au cache L3.
Pour repousser les limites physiques de l'intégration d'un cache L3 sur une seule puce de silicium, AMD a introduit sa technologie 3D V-Cache , qui consiste à empiler verticalement une puce de cache L3 supplémentaire sur un CCD (chiplet) du processeur. Ceci augmente considérablement la capacité du cache L3 sans accroître la taille de la puce.
Les processeurs Ryzen avec le suffixe X3D, tels que les Ryzen 7 7800X3D et 7950X3D, poussent ce concept à l'extrême. Le 7800X3D, par exemple, combine 32 Mo de cache L3 dans le CCD de base avec 64 Mo supplémentaires, soit un total de 96 Mo de cache L3 accessibles par cet ensemble de cœurs. Le 7950X3D va encore plus loin avec 128 Mo de cache L3, auxquels s'ajoutent 1 Mo de cache L1 et 16 Mo de cache L2 répartis entre tous ses cœurs.
L'impact sur les performances de jeu est considérable, car le taux d'accès au cache explose , réduisant ainsi le besoin d'accéder à la RAM pour de nombreuses structures qui, auparavant, ne pouvaient pas être entièrement stockées dans le cache L3. Ceci explique pourquoi ces modèles X3D sont devenus la référence en matière de performances de jeu pures, même comparés à des processeurs dotés de plus de cœurs ou de fréquences d'horloge légèrement supérieures.
Pour l'instant, son principal concurrent, Intel, n'a pas proposé de solution identique. L'entreprise a indiqué privilégier, pour le moment, des performances globales équilibrées plutôt qu'une approche axée sur le jeu, comme l'utilisation de grands blocs de cache L3 empilés. Cela ne l'empêche pas d'augmenter progressivement la taille de ses propres caches dans les générations futures, mais il est peu probable qu'elle adopte un système V-Cache exactement identique à court terme.
Comment connaître la quantité de cache de votre processeur ?
Pour connaître la taille des caches L1, L2 et L3 de votre processeur sans avoir à éplucher la documentation technique, l'une des solutions les plus rapides consiste à utiliser un outil comme CPU-Z sous Windows. Ce logiciel gratuit affiche, dans des onglets dédiés, la taille de chaque niveau de cache, ainsi que le nombre de cœurs, de threads et d'autres données pertinentes.
Une autre option consiste à consulter le site web officiel du fabricant (Intel ARK, fiches produits AMD, etc.), mais souvent seul le cache L3 y est détaillé, et il faut parcourir la documentation technique pour trouver les informations sur les caches L1 et L2. Les tests et analyses des médias spécialisés fournissent généralement ces informations, ainsi que des benchmarks de latence et de bande passante.
Choisir et utiliser judicieusement la mémoire RAM et la mémoire cache
La mémoire cache peut masquer bon nombre des limitations de la RAM, mais pas toutes. Lors de l'assemblage d'un ordinateur, il est important de choisir une RAM dont la fréquence, la latence et la capacité sont adaptées à l'utilisation prévue. Un ordinateur destiné à la bureautique ou à une navigation web légère peut fonctionner correctement avec 8 à 16 Go de RAM et des modules de milieu de gamme, tandis que pour les jeux et le montage vidéo, 16 Go ou 32 Go sont généralement recommandés.
Il est toujours conseillé de vérifier la compatibilité de la RAM avec la carte mère et le processeur (type DDR3, DDR4, DDR5, fréquences maximales prises en charge, profils XMP/EXPO, etc.). Il est également préférable de trouver un bon compromis entre une fréquence élevée et des latences raisonnables, plutôt que de se focaliser uniquement sur une fréquence en MHz impressionnante.
Pour optimiser l'utilisation de la mémoire et du cache, il est fortement conseillé de désinstaller les programmes inutiles en arrière-plan , de mettre à jour le BIOS et les pilotes, et, sur les ordinateurs fréquemment utilisés, de supprimer les fichiers temporaires et le cache du navigateur devenus obsolètes. Toute action réduisant la charge sur la RAM et le processeur permet de libérer ces ressources pour les tâches essentielles.
Au niveau du BIOS, l'activation des profils de mémoire automatiques (XMP, DOCP, EXPO) est généralement un moyen simple de garantir que la RAM fonctionne à la vitesse promise par le fabricant, évitant ainsi d'être bloqué sur des valeurs conservatrices qui limitent la bande passante.
Comprendre le fonctionnement de la latence du cache, sa hiérarchie L1/L2/L3, sa relation avec la RAM et des technologies comme le V-Cache 3D permet de lire les spécifications du processeur et les résultats des tests de performance sous un nouveau jour : au-delà des GHz et du nombre de cœurs, une grande partie de la fluidité du système se joue dans ces quelques nanosecondes que met le processeur à trouver ou non des données dans sa mémoire la plus proche.