45 votes

Pourquoi la taille de la mémoire cache L1 n'a-t-elle pas beaucoup augmenté au cours des 20 dernières années ?

En Intel i486 dispose de 8 Ko de cache L1. Les Intel Nehalem dispose d'un cache d'instructions L1 de 32 Ko et d'un cache de données L1 de 32 Ko par cœur.

La quantité de cache L1 n'a pas augmenté au même rythme que la fréquence d'horloge.

Pourquoi pas ?

19voto

Ryan Shripat Points 2330

30K de texte Wikipédia n'est pas aussi utile qu'une explication sur les raisons pour lesquelles un cache trop grand n'est pas optimal. Lorsque le cache devient trop grand, le temps de latence pour trouver un élément dans le cache (en tenant compte des échecs du cache) commence à se rapprocher du temps de latence pour trouver l'élément dans la mémoire principale. Je ne sais pas quelles proportions les concepteurs d'unités centrales visent, mais je pense qu'il s'agit de quelque chose d'analogue à la ligne directrice 80-20 : Vous aimeriez trouver vos données les plus courantes dans la mémoire cache 80 % du temps, et les 20 % restants, vous devrez aller les chercher dans la mémoire principale. (ou toute autre proportion voulue par les concepteurs de l'unité centrale).

EDIT : Je suis sûr que c'est loin d'être 80%/20%, alors remplacez X et 1-X. :)

12voto

AJW Points 121

L'un des facteurs est que les extractions L1 commencent avant que les traductions TLB ne soient terminées afin de réduire la latence. Avec un cache suffisamment petit et une voie suffisamment haute, les bits d'indexation du cache seront les mêmes pour les adresses virtuelles et physiques. Cela réduit probablement le coût du maintien de la cohérence de la mémoire avec un cache à indexation virtuelle et à étiquetage physique.

10voto

CoffeDeveloper Points 201

La taille du cache est influencée par de nombreux facteurs :

  1. Vitesse des signaux électriques (qui devrait être, si ce n'est la vitesse de la lumière, quelque chose du même ordre de grandeur) :

    • 300 mètres en une microseconde.
    • 30 centimètres en une nanoseconde.
  2. Coût économique (les circuits à différents niveaux de cache peuvent être différents et certaines tailles de cache peuvent être indignes)

    • Doubler la taille du cache ne double pas les performances (même si la physique permettait à cette taille de fonctionner). Pour les petites tailles, le doublement donne beaucoup plus que le doublement des performances, pour les grandes tailles, le doublement de la taille du cache ne donne presque pas de performances supplémentaires.
    • Sur wikipedia, vous pouvez trouver un graphique montrant par exemple à quel point il est indigne de faire des caches de plus de 1 Mo (en fait, il existe des caches plus grands, mais il faut garder à l'esprit qu'il s'agit de cœurs multiprocesseurs).
    • Pour les caches L1, il devrait y avoir d'autres tableaux (que les vendeurs n'affichent pas) qui justifient la taille de 64 Kb.

Si la taille du cache L1 n'a pas changé après 64 kb, c'est qu'elle n'en valait plus la peine. Notez également qu'il existe aujourd'hui une plus grande "culture" de la mémoire cache et que de nombreux programmeurs écrivent du code "adapté à la mémoire cache" et/ou utilisent des instructions préfabriquées pour réduire le temps de latence.

J'ai essayé une fois de créer un programme simple qui accédait à des emplacements aléatoires dans un tableau (de plusieurs mégaoctets) : ce programme a presque gelé l'ordinateur parce que pour chaque lecture aléatoire, une page entière était déplacée de la RAM vers le cache et comme cela était fait très souvent, ce simple programme épuisait toute la bande passante, laissant très peu de ressources pour le système d'exploitation.

6voto

Andrew Flanagan Points 1960

Je pense que l'on peut résumer la situation en disant simplement que plus la mémoire cache est grande, plus l'accès est lent. Un cache plus grand ne sert donc à rien, puisqu'il est conçu pour réduire la lenteur des communications entre le bus et la mémoire vive.

La vitesse du processeur augmentant rapidement, le cache de même taille doit être de plus en plus performant pour suivre le rythme. Les caches peuvent donc être nettement plus performants (en termes de vitesse), mais pas en termes de stockage.

(Je suis un informaticien, j'espère donc que ce n'est pas totalement faux).

5voto

harrymc Points 394411

De Cache L1 :

T se trouve sur le processeur et est utilisé pour le stockage temporaire d'instructions et de [ ] La mémoire cache primaire est la forme de stockage la plus rapide. Parce qu'il est intégré à la puce avec un délai d'attente nul. interface avec l'unité d'exécution du processeur, il est limité en taille .

S peut conserver les données sans assistance externe, tant qu'il y a de l'électricité le circuit. Ceci est par opposition à la RAM dynamique (DRAM), qui doit être rafraîchie plusieurs fois par secondes afin de conserver son contenu contenu.

I début 1997, s'est distingué par l'augmentation de la taille de son l'augmentation de la taille de son cache de niveau 1 à 32 Ko. Les puces AMD K6 et Cyrix M2 lancées plus tard dans l'année encore plus haut en proposant des caches de niveau 1 de 64 Ko. de 64 Ko. La taille de 64 Ko est restée la taille standard du cache L1, bien que certains processeurs à plusieurs cœurs peuvent l'utiliser l'utiliser différemment.

EDIT : Veuillez noter que cette réponse date de 2009 et que les processeurs ont évolué énormément au cours des 10 dernières années. Si vous êtes arrivé jusqu'ici, ne prenez pas toutes nos réponses trop au sérieux, ne prenez pas toutes nos réponses trop au sérieux.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X