Pourquoi le cache L1 est-il plus rapide que le cache L2?

14

J'essaie de comprendre pourquoi certaines mémoires cache du processeur sont plus rapides que d'autres. Lorsque vous comparez la mémoire cache à quelque chose comme la mémoire principale, il existe des différences de type de mémoire (SRAM vs DRAM) et des problèmes de localité (sur puce vs devoir traverser un bus mémoire) qui peuvent affecter les vitesses d'accès. Mais L1 et L2 sont généralement sur la même puce, ou du moins sur la même puce, et je pense que ce sont le même type de mémoire. Alors pourquoi L1 est-il plus rapide?

ConditionRacer
la source
9
Parce que c'est construit de cette façon.
Ignacio Vazquez-Abrams
Il existe plusieurs façons de créer le même type de RAM. Certaines façons entraînent une RAM plus rapide que la RAM construite d'autres manières.
Ignacio Vazquez-Abrams
La même raison pour laquelle votre RAM DDR plus rapide que votre disque dur ...
hassan789
1
Liés: ma réponse sur et SO question sur les tailles de cache explique également certaines raisons de compromis vitesse / consommation d'énergie pour avoir des caches à plusieurs niveaux. Fondamentalement, rendre un cache ultra-rapide coûte de la puissance et de la zone de matrice pour faire plus en parallèle, et est incompatible avec les grandes tailles / associativité que vous souhaitez dans un cache de dernier niveau.
Peter Cordes

Réponses:

24

Non, ce n'est pas le même type de RAM, même si elles sont sur la même puce qui utilise le même processus de fabrication.

De tous les caches, le cache L1 doit avoir le temps d'accès le plus rapide possible (latence la plus faible), par rapport à la capacité dont il a besoin pour fournir un taux de "hit" adéquat. Par conséquent, il est construit à l'aide de transistors plus grands et de pistes métalliques plus larges, échangeant espace et puissance contre de la vitesse. Les caches de niveau supérieur doivent avoir des capacités plus élevées, mais peuvent se permettre d'être plus lents, ils utilisent donc des transistors plus petits qui sont plus serrés.

Dave Tweed
la source
3
C'est ce que je recherche, merci. Connaissez-vous de bonnes sources où je pourrais en savoir plus sur les différences?
ConditionRacer
Non, pas désinvolte. Les détails de ces compromis espace / puissance / temps, ainsi que les choix concernant la capacité et l'architecture du cache, sont très étroitement liés aux détails propriétaires des processus du fabricant, donc très peu (voire rien) est publié à ce sujet. Je ne peux parler qu'en termes généraux.
Dave Tweed
10
L1 est également plus petite, ce qui signifie que la propagation du signal à travers elle prend moins de cycles d'horloge: souvent, la taille de L1 est décidée comme la plus grande mémoire accessible en 1 (ou 2) horloges.
Brian Drummond
6
En plus du point de Brian Drummond, L1 utilise également généralement l'accès parallèle aux balises de données. L2 accède généralement aux balises en premier (déterminant de quelle façon s'il y a un coup), puis aux données, augmentant la latence mais économisant de l'énergie (importante compte tenu de la plus grande taille, de l'associativité plus élevée et du taux d'échecs plus élevé). (L'accès en L2 commence généralement après la confirmation d'un échec en L1, ce qui augmente la latence effective.)
Paul A. Clayton
@BrianDrummond - plus petit en termes de charge de fil et de profondeur de grille (je ne pense pas que cela soit évident d'après votre commentaire).
Sean Houlihane
5

L1 est généralement utilisé comme stockage pour les instructions décodées, tandis que L2 est un cache général pour un seul cœur. Plus le cache est petit, plus sa taille est petite et rapide. En règle générale, pour les processeurs PC:

Cache L1: accès au cycle d'horloge 2-3

Cache L2: ~ 10 accès au cycle d'horloge

Cache L3: ~ 20-30 accès au cycle d'horloge

La conception du cache L1 doit être de maximiser le taux de succès (la probabilité que l'adresse d'instruction ou l'adresse de données souhaitée se trouve dans le cache) tout en maintenant la latence du cache aussi faible que possible. Intel utilise un cache L1 avec une latence de 3 cycles. Le cache L2 est partagé entre un ou plusieurs caches L1 et est souvent beaucoup plus volumineux. Tandis que le cache L1 est conçu pour maximiser le taux de succès, le cache L2 est conçu pour minimiser la pénalité pour échec (le retard encouru lorsqu'un échec L1 se produit). Pour les puces qui ont des caches L3, l'objectif est spécifique à la conception de la puce. Pour Intel, les caches L3 ont fait leur apparition pour la première fois dans des systèmes multiprocesseurs à 4 voies (processeurs Pentium 4 Xeon MP) en 2002. Les caches L3 dans ce sens ont considérablement réduit les délais dans les environnements multithreads et ont allégé le FSB. À l'époque,

Citation tirée ici de la réponse de "Pinhedd".

EasyOhm
la source
1
L1 est également utilisé pour les données en général, mais il est vrai que souvent les données L1 et les instructions L1 sont séparées tandis que L2 est partagé: programmers.stackexchange.com/questions/44731/… (une des raisons pour lesquelles il peut être partagé est qu'il a plus de façons ).
Guy Sirton
1
Il est courant que les processeurs aient des caches d'instructions et de données distincts au niveau L1. Certainement vrai pour les puces x86 et SPARC ultérieures. Et certains caches d'instructions L1 ne stockent pas les instructions décodées. Le Pentium 4 a stocké des instructions décodées, mais Intel est ensuite revenu aux caches I normaux, puis a récemment ajouté des caches d'instructions décodées dans leurs puces.
Craig S. Anderson
3

Il y a plusieurs raisons pour lesquelles la vitesse est inversement proportionnelle à la taille. Le premier qui me vient à l'esprit est la domination physique des conducteurs, où la propagation du signal est limitée à un certain facteur de la vitesse de la lumière. Une opération peut prendre aussi longtemps qu'il faudra un signal électrique pour parcourir la plus longue distance à l'intérieur et à l'arrière de la tuile mémoire. Une autre raison connexe est la séparation des domaines d'horloge. Chaque CPU fonctionne avec son propre générateur d'horloge, ce qui permet au CPU de fonctionner sur des horloges multi-GHz. Le cache de niveau 1 s'exécute et est synchronisé avec l'horloge du processeur, qui est la plus rapide du système. Le cache de niveau 2, en revanche, doit desservir de nombreux processeurs et s'exécute dans un domaine d'horloge différent (plus lent). Non seulement l'horloge L2 est plus lente (tuile plus grande), mais le franchissement d'une limite de domaine d'horloge ajoute un autre retard. Ensuite, bien sûr, il y a les problèmes de fan-out (déjà mentionnés).

LR24
la source
1

Outre les caractéristiques de performance inhérentes, la localité a également un rôle (L1 est plus proche du CPU). Selon ce que tout programmeur doit savoir sur la mémoire :

Il est intéressant de noter que pour le cache L2 sur puce, une grande partie (probablement même la majorité) du temps d'accès est causée par des retards de câblage. Il s'agit d'une limitation physique qui ne peut qu'empirer avec l'augmentation des tailles de cache. Seul le rétrécissement des processus (par exemple, passant de 60 nm pour Merom à 45 nm pour Penryn dans la gamme Intel) peut améliorer ces chiffres.

assylias
la source
Je pense que cela s'applique principalement lorsque les caches sont volumineux - Cela ne s'applique pas à tous les types de processeurs (bien que le délai de connexion soit important).
Sean Houlihane