800 likes | 975 Views
Référence à un mot Xn dans le cache. X4 X1 Xn-2 Xn-1 X5 X3. UC. Mémoire Centrale. 1. Référence à un mot Xn dans le cache. X4 X1 Xn-2 Xn-1 X5 X3. UC. Mémoire Centrale. Xn. UC veut faire référence à Xn. 2. Référence à un mot Xn dans le cache. X4 X1 Xn-2 Xn-1 X5 X3. UC.
E N D
Référence à un mot Xn dans le cache X4 X1 Xn-2 Xn-1 X5 X3 UC Mémoire Centrale
1 Référence à un mot Xn dans le cache X4 X1 Xn-2 Xn-1 X5 X3 UC Mémoire Centrale Xn UC veut faire référence à Xn
2 Référence à un mot Xn dans le cache X4 X1 Xn-2 Xn-1 X5 X3 UC Mémoire Centrale Xn Recherche de Xn dans le cache
2 Référence à un mot Xn dans le cache X4 X1 Xn-2 Xn-1 X5 X3 UC Mémoire Centrale Xn Défaut de cache Recherche de Xn dans le cache
3 Référence à un mot Xn dans le cache X4 X1 Xn-2 Xn-1 X5 Xn X3 UC Mémoire Centrale Extraction de Xn dans la mémoire Insertion dans le cache
Bilan : Référence à un mot Xn X4 X1 Xn-2 Xn-1 X5 Xn X3 X4 X1 Xn-2 Xn-1 X5 X3 Après la référence à Xn Avant la référence à Xn
Question 1 : Où placer un bloc? Question 2 : Comment un bloc est-il trouvé ? Question 3 : Quel bloc remplacé lors d’un défaut ? Question 4 : Comment sont traités les écritures? Questions à résoudre
Où placer un bloc? Caches à correspondances directes Caches totalement associatifs Caches associatifs par ensemble Question 1 :
Les caches à correspondance directe Le moyen le plus simple est d’assigner un emplacement unique dans le cache. Cet emplacement est fonction du mot en mémoire. La correspondance est la suivante : numéro de bloc modulo le nombre de blocs dans le cache adresse Cette structure du cache est dite à correspondance directe. Rappel : Modulo n = reste de la division par n
Cache à correspondance directe 8 entrées Exemple : UC Mémoire Centrale
Cache à correspondance directe 8 entrées ? 00001 00101 000 001 010 011 100 101 110 111 UC 01001 01101 10001 10101 11001 11101 Adresse Donnée Donnée Adresse
Cache à correspondance directe 8 entrées 00001 00101 000 001 010 011 100 101 110 111 UC 1 mod 8 = 1 01001 01101 10001 10101 11001 11101
Cache à correspondance directe 8 entrées 00001 00101 000 001 010 011 100 101 110 111 UC 01001 01101 10001 10101 11001 11101
Cache à correspondance directe 8 entrées 00001 00101 000 001 010 011 100 101 110 111 UC 01001 01101 Aux 4 adresses 00001, 01001, 10001, 11001 correspond la même entrée d’index (adresse dans le cache) 001 du cache 10001 10101 11001 11101
00001 00101 01001 01101 10001 10101 11001 11101 Cache à correspondance directe 8 entrées 000 001 010 011 100 101 110 111 UC
00001 00101 01001 01101 10001 10101 11001 11101 Cache à correspondance directe 8 entrées 000 001 010 011 100 101 110 111 UC PROBLEME : Un emplacement dans le cache peut appartenir à plusieurs emplacements mémoire. Comment savoir si la donnée correspond au mot demandé ?
00001 00101 01001 01101 10001 10101 11001 11101 Cache à correspondance directe 8 entrées Etiquette Donnée 000 001 010 011 100 101 110 111 UC Réponse : Une Étiquette permet de savoir si le mot demandé est dans le cache
Cache à correspondance directe 8 entrées 00001 00101 000 001 010 011 100 101 110 111 01 UC 01001 01101 10001 10101 00 11001 11101 Index Etiquette donnée
Où placer un bloc? Caches à correspondance directe Caches totalement associatifs Caches associatifs par ensemble Question 1 :
Les caches totalement associatifs Si un bloc peut être placé n’importe où dans le cache, celui ci est totalement associatif.
Les caches totalement associatifs ? 00001 00101 000 001 010 011 100 101 110 111 UC 01001 01101 10001 10101 11001 11101
Les caches totalement associatifs 00001 00101 000 001 010 011 100 101 110 111 UC 01001 01101 10001 10101 11001 11101
Où placer un bloc? Caches à correspondance directe Caches totalement associatifs Caches associatifs par ensemble Question 1 :
Si un bloc peut être placé dans un ensemble restreint de places dans le cache, le cache est dit associatif par ensemble de blocs. Un ensemble est un groupe de blocs dans le cache. Un bloc est d’abord affecté à un ensemble, puis placé n’importe où dans l’ensemble. numéro de l’ensemble = numéro de bloc (=adresse) modulo le nombre d’ensembles dans le cache Caches associatif par ensemble
Cache associatif par ensemble de 2 00001 00101 Et D Et D UC 0 1 2 3 01001 01101 10001 10101 Ensembles 11001 11101
Cache associatif par ensemble de 2 00001 00101 Et D Et D UC 0 1 2 3 01001 01101 10001 10101 17 mod 4 = 1 11001 11101
Augmenter le degré d’associativité présente généralement l’avantage de diminuer le taux de défaut. (Voir TD) Mais cela a tendance à augmenter le coût et le temps d’accès. Alors quel cache est à utiliser ?
Question 1 : Où placer un bloc? Question 2 : Comment un bloc est-il trouvé ? Question 3 : Quel bloc remplacé lors d’un défaut ? Question 4 : Comment sont traités les écritures? But du cours
Organisation de la mémoire principale Rappels : Adresse de l’octet Adresse du mot 0 1 2 3 4 5 6 7 8 9 10 11 0 4 8
Organisation de la mémoire principale Adresse de l’octet Adresse du mot Mémoire 0 1 2 3 4 5 6 7 8 9 10 11 0 4 8 Transfert du mot de 32 bits Cache 4 5 6 7 Pour me déplacer dans le bloc il faut 2 bits d’adresse
Comment trouver un bloc ? Réponse : Quelle est la relation de l’adresse UC avec le cache ? Cache direct Déplacement dans le bloc Index Etiquette Taille =Log2(blocCache)-1 Cache associatif par ensemble de bloc Déplacement dans le bloc N° ensemble Etiquette Remarque : en augmentant d’un facteur de deux l’associativité on diminue de 1 bit la taille de l’index.
Exemple : Cache à correspondance directe Succès Validité Etiquette donnée Index 0 1 2 ... ... ... ... ... ... 1022 1023
UC UC veut la donnée qui est à l’adresse : 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet Index Etiquette Validité Etiquette donnée Index 0 1 2 ... ... ... ... ... ... 1022 1023 32
UC L’index sélectionne une entrée du cache : 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet Index Etiquette Validité Etiquette donnée Index 0 1 2 ... ... ... ... ... ... 1022 1023 32
UC Compare l’étiquette 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet Index Etiquette Validité Etiquette donnée Index 0 1 2 ... ... ... ... ... ... 1022 1023 =
UC Le mot est délivré au processeur. 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet Index Etiquette SUCCES Validité Etiquette donnée Index 0 1 2 ... ... ... ... ... ... 1022 1023 32 ET
En cas de défaut UC 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Index Etiquette Donnée Cache Défaut/succès Adresse Donnée Mémoire Un défaut de cache génère une suspension (ou attente), semblable aux suspension de pipeline
Exemple : Par ensemble (256) de 4 blocs 4 Blocs V E D V E D V E D V E D Index 0 1 2 ... ... ... ... ... ... 253 254 255 256 Ensembles Multiplexeur 4 par 1 Succès Donnée
UC Par ensemble (256) de 4 blocs 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet 4 Blocs V E D V E D V E D V E D Index 0 1 2 ... ... ... ... ... ... 253 254 255 256 Ensembles Multiplexeur 4 par 1 Succès Donnée
Par ensemble (256) de 4 blocs 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet 22 8 V E D V E D V E D V E D Index 0 1 2 ... ... ... ... ... ... 253 254 255 Multiplexeur 4 par 1 Succès Donnée
Par ensemble (256) de 4 blocs 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet 22 8 V E D V E D V E D V E D Index 0 1 2 ... ... ... ... ... ... 253 254 255 Multiplexeur 4 par 1 Succès Donnée
Par ensemble (256) de 4 blocs 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet 22 8 V E D V E D V E D V E D Index 0 1 2 ... ... ... ... ... ... 253 254 255 Multiplexeur 4 par 1 Succès Donnée
Les étiquettes en fonction du type de caches Pour des caches de même dimension : Correspondance directe 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Index Etiquette Associatif par ensemble de bloc 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Etiquette Adresse d’octet Index Totalement associatif 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse d’octet Etiquette
Question 1 : Où placer un bloc? Question 2 : Comment un bloc est-il trouvé ? Question 3 : Quel bloc remplacé lors d’un défaut ? Question 4 : Comment sont traités les écritures? But du cours
Il existe trois stratégies principales employées pour choisir le bloc à remplacer : FIFO (Pas bonne) Le hasard (facile à réaliser) Le plus ancien (LRU Least Rencently Used). Ceci utilise un corollaire de la localité temporelle. Quel bloc remplacé lors d’un défaut ? Remarque = de LRU.
Défauts obligatoires de chargement (défaut de démarrage à froid). Un bloc accédé pour la première fois n’est pas dans le cache. Défauts de capacité.Si le cache ne peut contenir tous les blocs nécessaires au cours de l’exécution d’un programme Défauts de conflits (défaut de collision). Si la stratégie de placement de bloc est associative par ensembles de blocs ou à correspondance directe, des défauts de conflit surviendront, car un bloc peut être rejeté puis récupéré si trop de blocs sont en correspondance avec le même ensemble. Les défauts de caches
Question 1 : Où placer un bloc? Question 2 : Comment un bloc est-il trouvé ? Question 3 : Quel bloc remplacé lors d’un défaut ? Question 4 : Comment sont traités les écritures? But du cours
L’écriture simultanée (ou rangement simultané) : L’information est écrite à la fois dans le bloc du cache et dans le bloc de la mémoire de niveau inférieur. La réécriture (la recopie) : L’information est écrite uniquement dans le bloc du cache. Le bloc modifié du cache est recopié en mémoire principale uniquement quand il est remplacé. Comment sont traités les écritures?
Le cache que nous avons décrit jusqu’à présent ne tire pas parti de la localité spatiale dans les requêtes. En effet, chaque mot dispose de son propre bloc. EXEMPLE Supposons que les adresses d’octets suivantes soient demandées par un programme : Comment tirer parti de la localité spatiale ?
Exemple : 16,...,19,...,17 00001 00101 000 001 010 011 100 101 110 111 UC 01001 01101 10001 10101 11001 11101