Qu'est-ce que le cache du processeur ?

Les processeurs modernes fonctionnent incroyablement vite; ils peuvent considérablement surpasser la RAM du système. Ce déséquilibre de vitesse entre le processeur et la mémoire ferait que votre processeur resterait souvent inactif, attendant que des données lui soient envoyées pour qu'il puisse continuer à exécuter un processus. Pour éviter que cela ne se produise, permettant aux processeurs de continuer à fonctionner de plus en plus vite, un cache de processeur est utilisé.

Comment un cache CPU accélère-t-il un CPU ?

Le cache du processeur est conçu pour être aussi rapide que possible, puis pour mettre en cache les données demandées par le processeur. Le cache du processeur a sa vitesse optimisée de trois manières: la latence, la bande passante et la proximité. Le cache du processeur fonctionne à des latences très faibles, ce qui minimise le temps nécessaire pour qu'un résultat soit renvoyé. Par exemple, l'Intel i9-9900k a une latence de cache de 0,8, 2,4 et 11,1 nanosecondes pour les caches L1, L2 et L3 respectivement. En comparaison, la latence de la RAM haute vitesse moderne est de l'ordre de 14 nanosecondes.

Astuce: Les niveaux de cache seront expliqués plus en détail plus tard, mais simplement, les couches inférieures de cache sont plus rapides mais sont plus chères et ont donc des capacités plus faibles. Une nanoseconde est un milliardième de seconde, donc une latence de 0,8 seconde signifie qu'il faut moins d'un milliardième de seconde pour renvoyer un résultat.

En termes de bande passante, le cache du processeur offre des améliorations de performances significatives par rapport au stockage et à la RAM traditionnels. Les vitesses de lecture des caches L1 et L3 peuvent culminer à 2,3 To/s et 370 Go/s respectivement, tandis que la bande passante de la RAM est généralement d'environ 40 Go/s. Cette bande passante accrue signifie que le cache du processeur peut transférer des données vers le processeur beaucoup plus rapidement que la RAM.

Pour atteindre les vitesses maximales possibles, le cache du processeur est en fait intégré au silicium de la matrice du processeur elle-même. Cela minimise la distance que les signaux électriques doivent parcourir, gardant ainsi la latence aussi faible que possible. Par exemple, lorsque le cache L3 a été déplacé pour la première fois de la carte mère vers la puce du processeur, le processeur de l'époque (Pentium 4 EE) a pu améliorer ses performances de 10 à 20 %.

Architecture de cache du processeur

Les processeurs modernes utilisent généralement trois couches de cache de processeur étiquetées L1-3, les caches de numéro inférieur étant plus proches des cœurs de processeur, plus rapides et plus chers. Chaque cœur de processeur individuel dans un processeur multicœur possède son propre cache L1. Il est généralement divisé en deux parties, le L1I et le L1D. Le L1I est utilisé pour mettre en cache les instructions pour la CPU tandis que L1D est utilisé pour mettre en cache les données sur lesquelles ces instructions doivent être exécutées.

Chaque cœur de processeur a généralement également son propre cache L2 sur un processeur moderne. Le cache L2 est plus grand et plus lent que le cache L1 et est principalement utilisé pour stocker des données qui ne tiendraient pas autrement dans le cache L2. En ayant un cache L2 dédié par cœur, les conflits de cache sont évités. Les conflits de cache sont l'endroit où différents cœurs se battent pour réclamer de l'espace de cache pour leurs propres charges de travail, ce qui peut entraîner l'effacement de données importantes du cache.

Le cache L3 est généralement partagé entre tous les cœurs CPU du processeur. Encore une fois, le cache L3 est plus lent que le cache L2 mais est moins cher et plus volumineux. En fournissant un cache partagé, il est possible de réduire la quantité de données qui seraient dupliquées sur des niveaux inférieurs de cache par cœur.

Astuce: Par exemple, dans les tailles de cache, Intel i9-9900K a un cache L1 de 64 Ko et un cache L2 de 256 Ko par cœur (pour un total de 512 Ko L1 et 2 Mo L2), il a également un cache L3 partagé de 16 Mo.

Comment le cache CPU est-il utilisé ?

Tous les niveaux du cache du processeur sont utilisés pour accélérer les performances du processeur en mettant en cache les données de la RAM. Lorsqu'un processeur demande des données, il recherche généralement d'abord dans ses couches de cache pour tenter d'obtenir les données le plus rapidement possible. Si les données sont trouvées dans un accès au cache, le processeur peut continuer son traitement. Si les données ne sont pas dans le cache, dans ce qu'on appelle un manque de cache, alors le processeur doit vérifier la RAM, puis le disque dur si les données ne sont pas là non plus. Les couches les plus rapides sont toujours vérifiées en premier pour des performances maximales.

Pour aider le processeur à disposer des données dont il a besoin dans le cache lorsqu'il en a besoin, le cache tente de préempter les données dont le processeur pourrait avoir besoin ensuite. Par exemple, si le processeur a demandé des données pour une image qu'il rend, le cache peut essayer de mettre en cache préventivement davantage de données d'image afin qu'elles puissent être transmises au processeur le plus rapidement possible.