Qu'est-ce qui rend la mémoire cache du CPU beaucoup plus rapide que la mémoire principale? Je peux voir certains avantages dans un système de cache à plusieurs niveaux. Il est logique qu'un cache plus petit soit plus rapide à rechercher. Mais il doit y avoir plus que cela.
58
Réponses:
Dans le cas d'un cache de processeur, il est plus rapide car il se trouve sur le même dé que le processeur. En d'autres termes, les données demandées ne doivent pas nécessairement être transmises au processeur; c'est déjà là.
Dans le cas du cache sur un disque dur, le processus est plus rapide car il se trouve dans la mémoire SSD et non sur les plateaux en rotation.
Dans le cas du cache sur un site Web, le processus est plus rapide car les données ont déjà été extraites de la base de données (qui, dans certains cas, peuvent être situées n'importe où dans le monde).
Il s’agit donc principalement de localité . Le cache élimine l' étape de transfert de données .
La localisation est une manière élégante de dire des données "proches", dans le temps ou dans l'espace. La mise en cache avec une mémoire plus petite, plus rapide (mais généralement plus coûteuse) fonctionne, car une quantité relativement faible de données globales correspond aux données auxquelles on accède le plus souvent.
Cache de lecture supplémentaire
(informatique) sur Wikipedia
la source
Il est plus rapide parce qu’il est plus proche et qu’il s’agit d’une mémoire SRAM et non de DRAM.
SRAM est et peut être considérablement plus rapide que la DRAM les valeurs sont conservées statiquement (S en S RAM) de sorte qu'ils ne doivent pas être rafraîchi qui enlève les cycles. La DRAM est dynamique, comme des piles rechargeables minuscules, vous devez les recharger régulièrement pour ne pas les épuiser et en faire des zéros. Cela vole le temps de cycle en plus de la façon dont vous devez accéder aux bits, etc.
Être sur le même dé que ou plus près du processeur réduit l'aller-retour, L1 et L2 sont plus rapides que la DRAM du point de vue de l'accès.
La mémoire SRAM est plus rapide d'accès que la DRAM prise de pommes en pommes, et les caches sont généralement sur puce, plus proches ou sur des bus plus rapides que la DRAM, ce qui accélère également le temps d'accès.
la source
Une chose à mentionner explicitement est l’impact de la vitesse de la lumière. Dans cette vidéo, Grace Hopper montre un fil de fer d'environ un pied de long, qui représente la distance parcourue par un signal électrique en une nanoseconde *. Si un processeur fonctionne à 3 GHz, cela implique une distance de 4 "par cycle d'horloge. Il s'agit d'une limite physique stricte pour les vitesses d'accès à la mémoire. C'est une des raisons pour lesquelles être proche du processeur (comme le cache L1) permet la mémoire pour être plus rapide.
EDIT * La distance parcourue cuivre / silicium est inférieure à la distance parcourue par la lumière dans le vide.
la source
D'autres réponses couvraient déjà tous les bits pertinents: localité (et le coût de transfert de données associé, largeur de bus et horloge, etc.); vitesse de la lumière (encore une fois associée aux coûts de transfert, à la largeur et au débit du bus); technologie de mémoire différente (SRAM vs. DRAM). Tout cela à la lumière de l’ équilibre coût / performance .
Un commentaire qui a été laissé de côté et qui vient d’être mentionné dans le commentaire de Darkhogg: les caches plus volumineux ont un meilleur taux de réussite, mais une latence plus longue. Plusieurs niveaux de cache ont également été introduits pour remédier à ce problème.
Il y a une excellente question et réponse sur ce point sur l' électronique SE
D'après les réponses, il me semble qu'un point à souligner est le suivant: la logique qui exécute toutes les opérations requises pour une lecture de cache n'est pas si simple (surtout si le cache est associatif, comme la plupart des caches actuels). Cela nécessite des portes et de la logique. Donc, même si nous excluons les coûts et mourons de l'espace
la source
Les autres réponses soulèvent de nombreux points positifs, mais il manque un facteur: la latence de décodage d'adresse.
Ce qui suit est une vaste simplification excessive du fonctionnement du décodage d’adresses mémoire, mais il donne une bonne idée de la raison pour laquelle les grandes puces DRAM sont généralement assez lentes.
Lorsque le processeur doit accéder à la mémoire, il envoie une commande à la puce de mémoire pour sélectionner le mot spécifique qu'il souhaite utiliser. Cette commande s'appelle une sélection d'adresse de colonne (nous ignorerons les adresses de ligne pour l'instant). La puce de mémoire doit maintenant activer la colonne demandée, ce qu'elle fait en envoyant l'adresse via une cascade de portes logiques pour créer une écriture unique qui se connecte à toutes les cellules de la colonne. Selon la manière dont elle est mise en œuvre, il y aura un certain délai pour chaque bit d'adresse jusqu'à ce que le résultat apparaisse à l'autre bout. C'est ce qu'on appelle la latence CAS de la mémoire. Étant donné que ces bits doivent être examinés de manière séquentielle, ce processus prend beaucoup plus de temps qu'un cycle de processeur (qui n'a généralement que quelques transistors en attente). Cela prend également beaucoup plus de temps qu'un cycle de bus (qui est généralement quelques fois plus lent qu'un cycle de processeur). Une commande CAS sur une puce mémoire typique risque de prendre de l'ordre de 5 ns (IIRC - cela fait un moment que j'ai examiné les timings), ce qui est plus lent d'un ordre de grandeur qu'un cycle de processeur.
Heureusement, nous divisons les adresses en trois parties (colonne, ligne et banque), ce qui permet de réduire la taille de chaque partie et de les traiter simultanément, sans quoi le temps de latence serait encore plus long.
Le cache du processeur, cependant, n'a pas ce problème. Non seulement elle est beaucoup plus petite, donc la traduction d'adresse est un travail plus facile, elle n'a en fait besoin de traduire qu'un petit fragment de l'adresse (dans certaines variantes, aucune de celle-ci), car elle est associative. Cela signifie que, à côté de chaque ligne de mémoire en cache, il existe des cellules de mémoire supplémentaires qui stockent une partie (ou la totalité) de l'adresse. Évidemment, cela rend le cache encore plus cher, mais cela signifie que toutes les cellules peuvent être interrogées pour savoir si elles ont simultanément la ligne de mémoire que nous voulons, puis le seul (avec l'espoir) qui possède les bonnes données le videra. sur un bus qui relie la totalité de la mémoire au cœur du processeur principal. Cela se produit en moins d’un cycle, car c’est beaucoup plus simple.
la source
L'une des philosophies que j'ai étudiées était le mouvement matériel obtenir-maximum-débit-dans-minimum- lorsque nous parlons de toute mémoire à base de cache, qu'il s'agisse de cache CPU, cache cache ou cache mémoire. La motivation de base est atteinte lorsque le mouvement matériel nécessaire pour extraire / lire / écrire des données est minimal ou inexistant et que l'opération est effectuée plus rapidement.
Les données sont transférées du disque -> mémoire principale (RAM) (stockage temporaire) -> cache CPU (stockage temporaire plus petit à proximité de la CPU pour les données fréquemment consultées) -> CPU (traitement).
Le cache de la CPU est un espace mémoire plus petit et plus rapide qui stocke des copies des données à partir des emplacements de mémoire principale les plus récemment utilisés.
Le cache de mémoire tampon est une zone de mémoire principale dans laquelle sont stockées des copies des données des derniers emplacements de disque utilisés.
Le cache du navigateur est un répertoire ou un espace similaire qui stocke des copies des données des sites Web les plus récemment visités par les utilisateurs.
Référence: Fonctionnement de la mémoire informatique
la source