L’informatique : une grande cuisine 1 Les caches Dans l’exemple de la bibliothèque, le bureau fait office de cache. UC Mémoire Centrale Cache est le nom qui a été choisi pour représenter le niveau de hiérarchie de mémoire situé entre l’UC et la mémoire principale. L’élément de base est le bloc. 2 Hiérarchie mémoire 100 Ko 512 Ko 64-128 Méga 10 Téra UC Cache RAM Disque 5 ns 10-12 ns 60 ns 8 ms mots Blocs de mots Pages de mots 3 Problématique 4 Référence à un mot Xn dans le cache X4 X1 Xn-2 UC Xn-1 Mémoire Centrale X5 X3 5 Référence à un mot Xn dans le cache 1 X4 X1 Xn-2 UC Xn-1 Mémoire Centrale X5 UC veut faire référence à Xn X3 6 Référence à un mot Xn dans le cache 2 X4 X1 Xn-2 UC Xn-1 Mémoire Centrale X5 X3 Recherche de Xn dans le cache 7 Référence à un mot Xn dans le cache 2 X4 X1 Xn Xn-2 UC Xn-1 Mémoire Centrale X5 X3 Recherche de Xn dans le cache 8 Référence à un mot Xn dans le cache X4 3 X1 Xn-2 UC Xn-1 Mémoire Centrale X5 Xn X3 Extraction de Xn dans la mémoire Insertion dans le cache 9 Bilan : Référence à un mot Xn X4 X4 X1 X1 Xn-2 Xn-2 Xn-1 Xn-1 X5 X5 Xn X3 Avant la référence à Xn X3 Après la référence à Xn 10 But du cours • • • • 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? 11 Question 1 : • Où placer un bloc? • Caches à correspondances directes • Caches totalement associatifs • Caches associatifs par ensemble 12 web • cachespentium3 13 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 14 Rappel modulo 15 Rappel modulo 27 27 mod 8 =3 16 Cache à correspondance directe 8 entrées Exemple : UC Mémoire Centrale 17 Cache à correspondance directe 8 entrées ? 000 UC 00001 001 00101 010 01001 011 01101 100 101 10001 110 10101 111 Adresse 11001 Donnée Donnée Adresse 11101 18 Cache à correspondance directe 8 entrées 00001 000 00101 001 010 UC 1 mod 8 = 1 01001 011 100 01101 101 10001 110 10101 111 11001 11101 19 Cache à correspondance directe 8 entrées 00001 000 UC 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 20 Simulateur 21 Cache à correspondance directe 8 entrées 00001 000 001 UC 010 Aux 4 adresses 011 00001, 01001, 100 10001, 101 11001 correspond la même entrée 110(adresse dans le d’index cache) 111 001 du cache 00101 01001 01101 10001 10101 11001 11101 22 Cache à correspondance directe 8 entrées 00001 000 UC 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 23 Cache à correspondance directe 8 entrées 00001 000 UC 001 00101 010 PROBLEME : 011 01001 01101 Un emplacement 100 dans le cache peut appartenir à plusieurs emplacements mémoire. 101 si la donnée correspond au10001 Comment savoir mot demandé ? 110 10101 111 11001 11101 24 Cache à correspondance directe 8 entrées Etiquette Donnée 00001 000 UC 001 00101 010 01001 011 01101 100 101 10001 110 10101 111 Réponse : 11001 Une Etiquette permet de savoir si le mot demandé est dans 11101le cache 25 Cache à correspondance directe 8 entrées 00001 000 001 01 010 UC 00101 01001 011 01101 100 101 00 110 111 10001 10101 11001 Index Etiquette donnée 11101 26 Question 1 : • Où placer un bloc? Caches à correspondance directe • Caches totalement associatifs Caches associatifs par ensemble 27 Les caches totalement associatifs Si un bloc peut être placé n’importe où dans le cache, celui ci est totalement associatif. 28 Les caches totalement associatifs 000 UC ? 00001 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 29 Les caches totalement associatifs 00001 000 UC 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 30 Simulateur Simulateurdecache 31 Question 1 : • Où placer un bloc? Caches à correspondance directe Caches totalement associatifs • Caches associatifs par ensemble 32 Caches associatif par ensemble 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 modulo le nombre d’ensembles dans le cache 33 Cache associatif par ensemble de 4 000 E0 00101 001 010 UC 00001 E1 01001 011 01101 100 101 E2 110 111 10001 10101 E3 11001 11101 34 Cache associatif par ensemble de 4 000 E0 00101 001 010 UC E1 01001 011 01101 100 101 E2 110 17 mod 4 = 1 00001 111 10001 10101 E3 11001 11101 35 Alors quel cache est à utiliser ? • 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. 36 But du cours 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? 37 Organisation de la mémoire principale Adresse de l’octet Adresse du mot 0 4 8 0 1 2 3 4 5 6 7 8 9 10 11 38 Organisation de la mémoire principale Adresse de l’octet Adresse du mot 0 4 8 0 1 2 3 4 5 6 7 8 9 10 11 6 7 Mémoire Mémoire Transfert du mot de 32 bits 4 5 Cache Pour se déplacer dans le bloc il faut 2 bits d’adresse, mais tous les octets Ont le même index. 39 Comment trouver un bloc ? Quelle est la relation de l’adresse UC avec le cache ? Cache direct Etiquette Index Taille =Log2(blocCache)-1 Déplacement dans le bloc Cache associatif par ensemble de bloc Etiquette Index Déplacement Numéro de l’ensemble dans le bloc Remarque : en augmentant d’un facteur de deux l’associativité on diminue de 1 bit la taille de l’index. 40 Cache à correspondance directe Succès Validité Index 0 1 2 ... ... ... ... ... ... 1022 1023 Etiquette donnée 41 UC veux 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 Index Etiquette d’octet Validité Index 0 1 2 ... ... ... ... ... ... 1022 1023 Etiquette U C donnée 32 42 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 Index Etiquette d’octet Validité Index 0 1 2 ... ... ... ... ... ... 1022 1023 Etiquette U C donnée 32 43 Compare l’étiquette 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse Index Etiquette d’octet Validité Index 0 1 2 ... ... ... ... ... ... 1022 1023 Etiquette U C donnée = 44 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 Index Etiquette d’octet SUCCES Validité Index 0 1 2 ... ... ... ... ... ... 1022 1023 Etiquette U C donnée 32 ET 45 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 U C Cache Défaut/succès Adresse Donnée Mémoire 46 Comment tirer parti de la localité spatiale ? • 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 : 47 Exemple : 16,...,19,...,17 00001 000 UC 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 48 Exemple : 16,...,19,...,17 00001 000 UC 16 16 10000 Etiquette Index 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 49 Exemple : 16,...,19,...,17 00001 000 UC 16 16 10000 Etiquette Index 001 00101 010 01001 011 100 DEFAUT 01101 101 10001 110 10101 111 11001 11101 50 Exemple : 16,...,19,...,17 00001 000 UC 16 16 10000 Etiquette Index 10 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 51 Exemple : 16,...,19,...,17 00001 000 UC 19 19 10011 Etiquette Index 001 00101 010 01001 011 100 01101 101 10001 110 10101 111 11001 11101 52 Exemple : 16,...,19,...,17 00001 000 UC 19 19 10011 Etiquette Index 001 00101 010 01001 011 100 DEFAUT 01101 101 10001 110 10101 111 11001 11101 53 Exemple : 16,...,19,...,17 00001 000 UC 19 19 10011 Etiquette Index 001 00101 010 01001 011 100 10 01101 101 10001 110 10101 111 11001 11101 54 Exemple : 16,...,19,...,17 00001 000 UC 17 17 10001 Etiquette Index 001 00101 010 01001 DEFAUT 011 100 10 01101 101 10001 110 10101 111 11001 11101 55 Exemple : 16,...,19,...,17 000 Bilan : 3 défauts 001 010 UC 011 10 100 101 110 111 56 J’ai une idée ! = Augmenter la taille des blocs Ce Dupont .... Dans mes bras 57 Caches à 4 mots mémoire 00001 000 UC 001 00101 010 01001 011 01101 100 101 10001 110 10101 111 11001 11101 58 Caches à 4 mots mémoire 00001 000 UC 001 00101 010 01001 011 01101 100 101 10001 110 10101 111 3 bits index 11001 2 bits adresse dans le bloc remarque : pas d’étiquette 11101 59 Exemple : 16,...,19,...,17 00001 000 001 00101 010 01001 UC 011 16 100 DEFAUT 101 10001 110 10101 111 11001 100 index 01101 00 adresse dans le bloc remarque : pas d’étiquette 11101 60 Exemple : 16,...,19,...,17 00001 000 001 00101 010 01001 UC 011 16 100 16 10000 index 16 17 18 19 01101 101 10001 110 10101 On ramène les ref : 111 16,17,18,19 adresse dans le bloc remarque : pas d’étiquette 11001 11101 61 Exemple : 16,...,19,...,17 00001 000 001 succès 010 UC 011 19 100 19 10011 index 00101 01001 16 17 18 19 01101 101 10001 110 10101 111 adresse dans le bloc remarque : pas d’étiquette 11001 11101 62 Exemple : 16,...,19,...,17 00001 000 001 succès 010 UC 011 17 100 17 10001 index 00101 01001 16 17 18 19 01101 101 10001 110 10101 111 adresse dans le bloc remarque : pas d’étiquette 11001 11101 63 Exemple : 16,...,19,...,17 • Bilan : 1 seul défaut survient pour trois références. • SUPER : JE SUIS LE MEILLEUR 64 Exemple : 16,...,19,...,17 • Bilan : 1 seul défaut survient pour trois références. • SUPER : JE SUIS LE MEILLEUR DUPONT and Co 65 Si nous avons les temps d’accès suivants : 1 cycle d’horloge pour envoyer l’adresse 10 cycles d’horloge pour chaque accès mémoire 1 cycle d’horloge pour envoyer un mot de donnée. Total = 3* (1+10+1) = 36 cycles 66 Exemple : 16,...,19,...,17 • • • • Reprenons les chiffres précédent : 1 cycle d’horloge pour envoyer l’adresse 10 cycles d’horloge pour chaque accès mémoire 1 cycle d’horloge pour envoyer un mot de donnée. • Total = 1+4*10+4*1 = 45 cycles • Le gain n’est pas ici enorme !!!!!. • Comment diminuer ce temps ? 67 Tirer parti de la localité spatiale • Question : De quelle manière une plus grande taille de bloc influence-t-elle les performances ? • Le taux de défauts chute lorsque nous augmentons la taille de bloc. • Attention : il faut adapter le système mémoire en conséquence. 68 Encore plus compliqué : • Le taux de défaut peut augmenter, si la taille de bloc est prise très grande par rapport à la taille du cache, car le nombre de blocs pouvant être contenus dans le cache deviendra petit, et la compétition entre ces blocs sera rude. Par conséquent un bloc sera éjecté du cache avant qu’un grand nombre de ses mots soit accédé. • Le coût du défaut croît. Car le temps nécessaire(si on ne modifie pas le système mémoire) pour accéder à une données augmente. 69 Les caches par ensemble 70 Par ensemble (256) de 4 blocs 4 Blocs Index 0 1 2 ... ... ... ... ... ... 253 254 255 V E D V E D V E D V E D 256 Ensembles Multiplexeur 4 par 1 Succès Donnée 71 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 U C 4 Blocs Index 0 1 2 ... ... ... ... ... ... 253 254 255 V E D V E D V E D V E D 256 Ensembles Multiplexeur 4 par 1 Succès Donnée 72 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 Index 0 1 2 ... ... ... ... ... ... 253 254 255 V E D V E D V E D V E U C D Multiplexeur 4 par 1 Succès Donnée 73 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 Index 0 1 2 ... ... ... ... ... ... 253 254 255 V E D V E D V E D V E D Multiplexeur 4 par 1 Succès Donnée 74 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 Index 0 1 2 ... ... ... ... ... ... 253 254 255 V E D V E D V E D V E U C D Multiplexeur 4 par 1 Succès Donnée 75 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 Index Adresse d’octet Totalement associatif 31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0 Adresse Etiquette d’octet 76 But du cours • • • • 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? 77 Quel bloc remplacé lors d’un défaut ? 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. Remarque = FIFOdifférent de LRU. 78 Les défauts de caches • 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. 79 But du cours • • • • 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? 80 Comment sont traités les écritures? 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é. 81 Si nous avons les temps d’accès suivants : 1 cycle d’horloge pour envoyer l’adresse 10 cycles d’horloge pour chaque accès mémoire 1 cycle d’horloge pour envoyer un mot de donnée. Total = 3* (1+10+1) = 36 cycles 82 Exemple : 16,...,19,...,17 Reprenons les chiffres précédent : 1 cycle d’horloge pour envoyer l’adresse 10 cycles d’horloge pour chaque accès mémoire 1 cycle d’horloge pour envoyer un mot de donnée. Total = 1+4*10+4*1 = 45 cycles Le gain n’est pas ici énorme !!!!!. Comment diminuer ce temps ? 83 Tirer parti de la localité spatiale Question : De quelle manière une plus grande taille de bloc influence-t-elle les performances ? Le taux de défauts chute lorsque nous augmentons la taille de bloc. Attention : il faut adapter le système mémoire en conséquence. 84 Organisation des mémoires UC UC UC Cache Cache Cache Bus Bus Bus Mémoire Mémoire B M B B B M M M 85 Organisation d’une mémoire entrelacée Adresse externe a=4b b b b 0 4 8 . 1 5 9 2 6 . 3 7 . Mot 1 Mot 2 Mot 3 Mot 4 Mémoire entrelacée b 86 Encore plus compliqué : ATTENTION (voir TD) Le taux de défaut peut augmenter, si la taille de bloc est prise très grande par rapport à la taille du cache, car le nombre de blocs pouvant être contenus dans le cache deviendra petit, et la compétition entre ces blocs sera rude. Par conséquent un bloc sera éjecté du cache avant qu’un grand nombre de ses mots soit accédé. Le coût du défaut croît. Car le temps nécessaire(si on ne modifie pas le système mémoire). 87 Les performances des caches • Le temps UC est divisé entre les cycles d’horloge passés par l’UC à exécuter le programme et les cycles d’horloge que l’UC passe à attendre le système mémoire. Tps UC = (Cycles d’exécution UC + Cycles d’attente mémoire) * Tps C 88 Les cycles d’attente mémoire • Les cycles d’horloge d’attente mémoire proviennent principalement des défauts de cache. (Une prédiction précise des performances implique généralement des simulations très détaillées du processeur et du système mémoire). Cycles d’attente = mémoire (Nb. d’inst/programmes) *(Nb. de défauts/instruction) *Coût défaut Cycles d’attente = mémoire (Nb. d'accès par programme) *(taux de défaut) *Coût défaut 89 Résumé • Où peut être placer un bloc ? Un corresp. direct, plusieurs (associatif par ensembles), ou tout (totalement associatif) endroit. • Comment un bloc est il trouvé ? Indexation (correspondance direct) Recherche limitée (associatif par ensembles) Recherche totale (totalement associatif) • Quel bloc est remplacé lors d’un défaut ? Généralement, soit le moins récemment utilisé, soit un bloc au hasard, de manière aléatoire. • Comment sont traitées les écritures ? Chaque niveau de la hiérarchie peut utiliser soit l’écriture simultanée soit la réécriture. 90 Résumé • Le défi lancé par la conception des hiérarchies de mémoires est que tout changement qui peut améliorer le taux de défauts peut aussi affecter de façon négative les performances globales. • C’est une combinaison d'effets positifs et négatifs pour chaque paramètre de conception qui rend délicate la conception d’une hiérarchie de mémoires Changement de Conception Effet sur le taux de défauts Effet négatif possible sur les performances Augmenter la taille Réduit les défauts de capacité Peut augmenter le Tps d’accès Augmenter l’associativité Réduit le taux de défaut Peut augmenter le temps dû aux défauts de conflit d’accès Augmenter la taille de bloc Réduit le taux de défaut Peut augmenter le coût pour un large éventail de défaut de tailles de bloc 91 Caches : taille des blocs Coût de l’échec Taux d’échec Tps transfert Tps d’accès Taille du bloc Taille du bloc T ps d’accès Augmenter la taille du cache indéfiniment Taille du bloc 92