Question Pourquoi avons-nous besoin de plusieurs niveaux de mémoire cache?


En général, une mémoire cache est utile car la vitesse du processeur est supérieure à la vitesse du bélier (elles augmentent toutes les deux en vitesse, mais la différence demeure). Il est donc souhaitable de réduire le nombre d’accès à la mémoire pour augmenter les performances.

Ma question est la suivante: pourquoi avons-nous besoin de plusieurs niveaux de caches (L1, L2, L3) et non d'un seul?

Je sais que L1 est le plus rapide et le plus petit, L2 est un peu plus lent et un peu plus grand et ainsi de suite ... mais pourquoi créent-ils le matériel de cette façon?


4
2018-01-01 12:02


origine


Question un peu connexe: Qu'est-ce que le cache multiniveau dans les processeurs? (Les réponses ne vont pas beaucoup dans le sens du plus grand, donc la question n'est même pas presque un double, mais les questions semblent liées.) - Paul A. Clayton


Réponses:


Cela concerne la taille physique du dé. Chaque bit dans un cache est tenu par un ou plusieurs transistors, donc si vous voulez beaucoup de cache, vous avez besoin de beaucoup de transistors. La vitesse de la mémoire cache est inversement proportionnelle à la localité de l’unité qui souhaite y accéder - dans les petits appareils comme celui-ci, la communication est plus lente lorsque le chemin du signal s'allonge. Cela est dû en partie à l'impédance du substrat, mais à ce niveau, il existe des phénomènes physiques plus complexes.

Si nous voulons inclure une grande mémoire cache singulière, celle-ci doit se trouver à une distance très courte du MMU, de l’ALU, etc., en même temps. Cela rend la conception physique du processeur assez difficile, car un grand cache prend beaucoup de place. Pour rendre le cache "local" à ces sous-unités, vous devez sacrifier la localité des sous-unités les unes aux autres.

En utilisant un petit cache local rapide (L1), nous pouvons maximiser la localité et la vitesse, mais nous perdons de la taille. Nous utilisons alors un cache secondaire (L2) pour conserver de plus grandes quantités de données, avec un léger sacrifice de localité (et donc de vitesse). Cela nous donne le meilleur des deux mondes: nous pouvons stocker beaucoup de données, mais nous avons toujours un cache local très rapide pour les sous-unités de traitement.

Dans les processeurs multicœurs, le cache L3 est généralement partagé entre les cœurs. Dans ce type de conception, les caches L1 et L2 sont intégrés à la matrice de chaque cœur et le cache L3 se situe entre les cœurs. Cela donne une localisation raisonnable à chaque cœur, mais permet également un très grand cache.

La fonctionnalité des caches dans les processeurs modernes est très compliquée, donc je ne vais même pas tenter une description correcte, mais un processus très simpliste est que les adresses cibles sont recherchées dans le L1, puis le L2, puis le L3, avant de recourir à une récupération de la mémoire système. Une fois cette récupération effectuée, elle est remontée dans les caches.


10
2018-01-01 12:32



Agréable! Avez-vous des sources à relier? - Thor
Un aspect intéressant de l'impact de la taille physique sur les mémoires volumineuses est qu'un concepteur peut envisager d'utiliser des périphériques de stockage plus lents pour chaque bit tout en augmentant la vitesse d'accès si les périphériques les plus lents sont suffisamment petits. Cela signifie que DRAM peut avoir un sens pour les très grandes caches. (Il existe également des techniques d'architecture de cache non uniforme dans lesquelles les latitudes plus faibles de la couche 2 sont plus faibles. Avec les caches L3 partitionnés, la proximité physique [ou sur réseau] peut être exploitée par des choix de placement pour améliorer les performances.) - Paul A. Clayton
@Thor Ceci est un de ces éléments de connaissance bizarres que j'ai pris au fil des années de lecture aléatoire et de jeu avec les microprocesseurs, mais la article wiki est assez complet, en particulier la partie sur les architectures de cache multi-niveaux. - Polynomial