Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAgathe Favreau Modifié depuis plus de 6 années
1
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
fait partie de son cours d’introduction à l’information, à la communication, et au calcul. Il s’inscrit dans le 3e module de ce cours qui porte sur le fonctionnement et la sécurité des systems informatiques.
2
Où en sommes-nous ? Technologie des mémoires Hiérarchie de mémoires
Concept Objectif Réalisation Lecture Ecriture Gestion LRU Exemple Pourquoi – Localité Reste à expliquer dans ce clip comment gérer le contenu de la cache qd celle-ci se remplit …
3
Suivent encore 2 questions
Proc Comment le processeur lit-il un mot … … quand le mot est en cache ? … quand le mot est hors cache ? Comment le processeur écrit-il un mot … Q1: Que se passe-t-il quand la cache est pleine ? Q2: Que se passe-t-il quand un bloc a été modifié en cache? … ce qui répondra aux deux questions restantes: Q1: Que faire quand la cache est pleine ? … et Q2: Que faire quand un bloc a été modifié en cache mais pas en mémoire principale ? cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104
4
Que se passe-t-il quand la cache est pleine ?
Proc Il faut remplacer un bloc => Quel bloc choisir ? => On remplace automatiquement le bloc utilisé le moins récemment = algorithme Least Recently Used (LRU) (i.e. on fait l’hypothèse qu’on n’en a plus besoin !?) adresse 4 Q1: quand il faut importer un nouveau bloc dans une cache déjà pleine il faut clairement éjecter de la cache un des blocs présents … mais lequel choisir? La règle d’or – supportée par l’évidence de l’expérience – est d’éjecter de la cache le bloc utilisé le moins récemment suivant un algorithme appelé LRU (Least Recently Used). Ce faisant on émet en fait l’hypothèse (typiquement vérifiée en pratique) qu’on n’a plus besoin de ce bloc dans un avenir immédiat. (Et nous verrons ultérieurement pourquoi ce pari est généralement gagnant.) cache 40 45 100 16 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
5
Que se passe-t-il quand la cache est pleine ?
Proc Comment savoir quel est le bloc utilisé le moins récemment ? A chaque bloc de la cache est associé un compteur Ces compteurs contiennent autant de bits que le nombre de blocs de cache A chaque accès à la cache Le compteur du dernier bloc adressé est mis à 1 Et tous les autres compteurs glissent de 1 bit vers la gauche Chaque compteur contient donc une puissance de 2 Le plus grand compteur indique le plus “ancien” bloc adresse 4 Encore faut-il savoir quel est le bloc utilisé le moins récemment. 1 Pour le savoir la cache associe à chaque bloc un compteur. 2 Ces compteurs contiennent autant de bits que le nombre de blocs de cache. 3 A chaque accès à la cache le compteur du bloc adressé est mis à 1. 4 … et tous les autres compteurs glissent de 1 bit vers la gauche. 5 Chaque compteur contient donc une puissance de 2. 6 Le plus grand compteur indique donc naturellement le bloc dont le dernier accès remonte le plus loin dans le passé. cache 0 1 40 45 100 16 1 1 8 23 17 90 104 2 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
6
Que se passe-t-il quand la cache est pleine ?
Proc 1. Le processeur donne l’ordre d’accès à l’adresse du mot à référencer Lire / adresse 4 Etant donné l’adjonction de ces circuits à la cache, voyons le déroulement des opérations. Le processeur donne l’ordre d’accès (lecture ou écriture) à l’adresse du mot désiré. cache cache 40 40 45 45 100 100 16 16 1 8 8 23 23 17 17 90 90 104 104 2 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
7
Que se passe-t-il quand la cache est pleine ?
Proc 2. Défaut de cache et cache pleine L’absence du mot désiré dans la cache déclenche non seulement un défaut de cache mais aussi la nécessité préalable de libérer une entrée de la cache en en éjectant le bloc qu’elle contient. cache cache 40 40 45 45 100 100 16 16 1 8 8 23 23 17 17 90 90 104 104 2 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
8
Que se passe-t-il quand la cache est pleine ?
Proc 3. Effacement du bloc le plus ancien Les derniers circuits ajoutés à la cache indiquent immédiatement le bloc utilisé le moins récemment qui peut donc être effacé. cache cache 40 40 45 45 100 100 16 16 1 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
9
Que se passe-t-il quand la cache est pleine ?
Proc 4. Puis le système procède comme quand la cache n’est pas pleine La cache demande à la mémoire centrale d’importer le bloc manquant Le système procède ensuite comme quand la cache n’est pas pleine. La cache demande à la mémoire centrale d’importer le bloc manquant. cache 40 45 100 16 1 Importer block 4 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
10
Que se passe-t-il quand la cache est pleine ?
Proc 5. La mémoire centrale renvoie le bloc manquant La mémoire centrale lui envoie ledit bloc. cache cache 40 40 45 45 100 100 16 16 1 5 5 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
11
Que se passe-t-il quand la cache est pleine ?
Proc 6. La mémoire cache enregistre le bloc manquant et son adresse et met les compteurs à jour La cache l’enregistre avec son adresse associée et met les compteurs à jour. cache 40 45 100 16 2 4 5 5 1 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
12
Que se passe-t-il quand le bloc remplacé a été modifié ?
Proc La 3e opération devient: 3. Le bloc le plus ancien doit être renvoyé en mémoire centrale Enfin dernière question en suspens: Que se passe-t-il si le bloc à éjecter (le moins récemment utilisé) a été modifié ? Il ne peut évidemment pas être simplement effacé sans quoi on perdrait trace de sa modification et les résultats des calculs seraient faussés. Pour éviter cela, avant de l’effacer la cache en renvoie une copie en mémoire principale. cache cache 40 40 45 45 100 100 16 16 1 8 8 23 23 28 17 90 90 104 104 2 23 28 90 104 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.