Maison  >  Article  >  Qu’est-ce que le cache ?

Qu’est-ce que le cache ?

青灯夜游
青灯夜游original
2022-11-25 11:48:1331963parcourir

le cache est appelé mémoire cache, qui est une mémoire à grande vitesse et de petite capacité entre l'unité centrale et la mémoire principale. Elle est généralement composée de SRAM à grande vitesse, ce type de mémoire locale est orienté vers le CPU, et il est introduit pour réduire ou éliminer la connexion entre le processeur et la mémoire principale. L'impact des différences de vitesse entre les mémoires sur les performances du système. La capacité du cache est petite mais rapide, la vitesse de la mémoire est faible mais la capacité est grande. En optimisant l'algorithme de planification, les performances du système seront grandement améliorées.

Qu’est-ce que le cache ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.

Qu'est-ce que le cache ?

Mémoire cache : La mémoire cache d'un ordinateur est une mémoire petite mais à grande vitesse située entre le CPU et la mémoire principale DRAM (Dynamic Random Access Memory), généralement composée de SRAM (Static Random Access Memory). Mémoire vive).

Qu’est-ce que le cache ?

Comme le montre la figure 3.28, le cache est une mémoire de petite capacité entre le CPU et la mémoire principale M2, mais la vitesse d'accès est plus rapide que la mémoire principale et la capacité est beaucoup plus petite que la mémoire principale. Le cache peut fournir des instructions et des données au processeur à grande vitesse, accélérant ainsi l'exécution du programme. D'un point de vue fonctionnel, il s'agit d'une mémoire tampon de la mémoire principale, composée de SRAM à grande vitesse. Dans la recherche d'une vitesse élevée, toutes les fonctions, y compris la gestion, sont implémentées dans le matériel et sont donc transparentes pour les programmeurs.

Actuellement, avec les progrès de l'intégration des dispositifs semi-conducteurs, les caches et les processeurs de petite capacité peuvent être intégrés dans la même puce, et leur vitesse de fonctionnement est proche de la vitesse du processeur, formant ainsi un système de cache à deux niveaux ou plus. .

Fonction du cache

La fonction du cache est d'augmenter le taux d'entrée et de sortie des données du processeur. La capacité du cache est petite mais rapide, la vitesse de la mémoire est faible mais la capacité est grande. En optimisant l'algorithme de planification, les performances du système seront grandement améliorées, comme si la capacité du système de stockage était équivalente à la mémoire et que la vitesse d'accès était similaire à celle-ci. la Cache.

La vitesse du CPU est bien supérieure à celle de la mémoire. Lorsque le CPU accède directement aux données de la mémoire, il doit attendre un certain temps, tandis que le cache peut enregistrer une partie des données du CPU. vient d'être utilisée ou recyclée, si le CPU a besoin de réutiliser cette partie des données. Elle peut être appelée directement depuis le Cache, ce qui évite les accès répétés aux données, réduit le temps d'attente du CPU, et améliore ainsi l'efficacité du système. . Le cache est divisé en L1Cache (cache de niveau un) et L2Cache (le cache de niveau deux est principalement intégré au CPU, tandis que L2Cache est intégré sur la carte mère ou le CPU).

Principes de base du cache

En plus de la SRAM, le cache dispose également d'une logique de contrôle. Si le cache est à l'extérieur de la puce CPU, sa logique de contrôle est généralement combinée avec la logique de contrôle de la mémoire principale, appelée contrôleur de mémoire principale/chace ; si le cache est à l'intérieur du CPU, le CPU fournit sa logique de contrôle ; C L'échange de données entre le CPU et le cache est basé sur des mots, tandis que l'échange de données entre le cache et la mémoire principale est basé sur des blocs. Un bloc est composé de plusieurs mots et a une longueur fixe. Lorsque le CPU lit un mot en mémoire, il envoie l'adresse mémoire du mot au cache et à la mémoire principale. A ce moment, la logique de contrôle du cache détermine si le mot est actuellement dans le cache en fonction de l'adresse : si c'est le cas, le cache arrive et le mot est immédiatement transféré au CPU, sinon, le cache est manquant (manqué), et ; le cycle de lecture de la mémoire principale est utilisé pour lire le mot dans la mémoire principale. La lecture est envoyée au CPU. En même temps, l'intégralité du bloc de données contenant ce mot est lue dans la mémoire principale et envoyée au cache.

Qu’est-ce que le cache ?La figure 3.29 montre le diagramme schématique du cache. Supposons que le temps de lecture du cache soit de 50 ns et que le temps de lecture de la mémoire principale soit de 250 ns. Le système de stockage est modulaire, et chaque module 8K de la mémoire principale est associé à un cache d'une capacité de 16 mots. Le cache est divisé en 4 lignes, chaque ligne comporte 4 mots (W). L'adresse attribuée au cache est stockée dans une mémoire associative CAM, qui est une mémoire adressable par le contenu. Lorsque le CPU exécute une instruction d'accès à la mémoire, il envoie l'adresse du mot auquel accéder au CAM si W n'est pas dans le cache, W est transféré de la mémoire principale vers le CPU ; Dans le même temps, une ligne de données composée de quatre mots consécutifs contenant W est envoyée au cache, remplaçant la ligne de données d'origine dans le cache. Ici, l'algorithme de remplacement est implémenté par des circuits logiques matériels qui gèrent toujours l'utilisation du cache.

Taux de réussite du cacheDu point de vue du processeur, le but de l'ajout de cache est de rendre le temps de lecture moyen de la mémoire principale aussi proche que possible du temps de lecture du cache en termes de performances. Afin d'atteindre cet objectif, la part de tous les accès mémoire qui est satisfaite par le cache pour répondre aux besoins du processeur doit représenter une proportion élevée, c'est-à-dire que le taux de réussite du cache doit être proche de 1. Atteindre cet objectif est possible grâce à la localité d’accès au programme.

Lors de l'exécution d'un programme, soit Nc représente le nombre total d'accès effectués par le cache, Nₘ représente le nombre total d'accès effectués par la mémoire principale, et h est défini comme le taux de réussite, alors h=Nc/( Nc+Nₘ)

Si tc représente le temps d'accès au cache lorsqu'un hit se produit, tₘ représente le temps d'accès à la mémoire principale lorsqu'un échec se produit, 1-h représente le taux d'échec (taux manquant), puis le temps d'accès moyen tₐ du cache/ le système de mémoire principale est

tₐ=htc+(1−h)tₘ

L'objectif que nous poursuivons est de rendre le temps d'accès moyen tₐ du système cache/mémoire principale aussi proche que possible de tc avec un faible coût matériel. Supposons que r = tₘ/tc représente le rapport du temps d'accès entre la mémoire principale et le cache, et e représente l'efficacité de l'accès, alors

e=tc/ta=tc/(htc+(1−h)tm)=1/(h+(1−h)r)=1/(r+(1−r)h)

On peut voir à partir de cette formule que pour améliorer l'efficacité de l'accès, plus le taux de réussite h est proche à 1, mieux c'est. La valeur r appropriée est comprise entre 5 et 10 et ne doit pas être trop élevée.

Le taux de réussite h est lié au comportement du programme, à la capacité du cache, à la méthode d'organisation et à la taille des blocs.

Problèmes qui doivent être résolus dans la conception de la structure du cache

Il ressort du principe de fonctionnement de base du cache que la conception du cache doit suivre deux principes : Premièrement, nous espérons que le taux de réussite du cache est aussi élevé que possible, qui devrait en fait être proche de 1 ; La seconde est d'espérer que le cache soit transparent pour le CPU, c'est-à-dire qu'il y ait ou non un cache, le CPU accède à la mémoire de la même manière et le logiciel peut y accéder. le cache sans ajouter d'instructions. Les problèmes de taux de réussite et de transparence sont résolus du point de vue de l'accès à la mémoire du CPU, la mémoire aura la capacité de la mémoire principale et une vitesse proche du cache. À cette fin, un certain circuit matériel doit être ajouté pour compléter la fonction de contrôle, c'est-à-dire le contrôleur de cache.

Lors de la conception de la structure du cache, plusieurs problèmes doivent être résolus : ① Comment stocker le contenu de la mémoire principale lorsqu'il est transféré dans le cache ? ② Comment retrouver les informations dans le cache lors de l'accès à la mémoire ? les informations existantes dans le cache lorsque l'espace du cache est insuffisant Contenu ? ④ Comment réécrire le contenu du cache lorsqu'une opération d'écriture est requise

Parmi elles, les deux premières questions sont liées les unes aux autres, c'est-à-dire comment localiser le ? informations sur la mémoire principale dans le cache et comment convertir l'adresse de la mémoire principale en adresse de cache. Par rapport à la capacité de la mémoire principale, la capacité du cache est très petite. Le contenu qu'il enregistre n'est qu'un sous-ensemble du contenu de la mémoire principale, et l'échange de données entre le cache et la mémoire principale s'effectue en unités de bloc. Afin de placer le bloc de mémoire principale dans le cache, une méthode doit être utilisée pour localiser l'adresse de la mémoire principale dans le cache, appelée mappage d'adresses. La signification physique du mot « mappage » est de déterminer la relation correspondante entre les emplacements et de la mettre en œuvre avec du matériel. De cette façon, lorsque le CPU accède à la mémoire, l'adresse mémoire d'un mot qu'il donne sera automatiquement convertie en adresse de cache, c'est-à-dire la conversion d'adresse de cache.

Le problème du remplacement du cache consiste principalement à sélectionner et à exécuter l'algorithme de remplacement pour remplacer le contenu du cache lorsque le cache manque. La dernière question concerne la stratégie d'opération d'écriture du cache, qui se concentre sur le maintien de la cohérence entre la mémoire principale et le cache lors des mises à jour.

Pour plus de connaissances connexes, veuillez visiter la rubrique FAQ !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Qu'est-ce que le protocole SSLArticle suivant:Qu'est-ce que le protocole SSL