Principes des Caches 1
Plan Principes des caches Caches mémoire Translation Lookaside Buffer (TLB) Caches de fichiers (Buffer Cache) Caches de Pages 2
Principes des Caches Accélérer accès (lecture et/ou écriture) aux informations les plus fréquemment utilisées Hiérarchie de supports de stockage Lent, grande capacité, pas cher Rapide, capacité réduite, onéreux Hiérarchie «géographique» Serveurs intermédiaires proches d'un sousensemble de clients dans un réseau 3
Exemples de Caches Caches matériels Mémoire Translation Lookaside Buffer Caches disque dans contrôleurs Caches logiciels système Caches de fichiers Caches de pages Caches logiciels applicatifs Caches de contenu de fichiers (éditeurs) Caches de page Web 4
Principes des Caches A chaque accès, donnée cherchée dans cache à partir : D'un identificateur - recherche par clé(s) De sa valeur - recherche par contenu Si trouvée, opération d'accès effectuée dans le cache Sinon, «cache miss» Donnée lue dans cache depuis stockage de plus bas niveau Cache mis à jour, si écriture 5
Principes des Caches Caches décomposés en blocs de données Bloc = unité de mise à jour du cache Taille bloc dépend Type de cache (matériel/logiciel) Type de stockage secondaire Latence opération de lecture d'un bloc Taille cache Compromis entre taux de réussite (hit rate) et latence des accès 6
Plan Principes des caches Caches mémoire Translation Lookaside Buffer (TLB) Caches de fichiers (Buffer Cache) Caches de Pages 7
Caches Mémoire Processeur Accès mot, byte lent Mémoire principale Processeur Lent RapideCache Lent RapideWrite Buffer Mémoire principale Accès mot, byte lent 8
Cache Logique Bus d'adresses Base Traduction MMU Processeur Cache Mémoire principale Bus de Données 9
Cache Physique Bus d'adresses Base Traduction MMU Processeur Cache Mémoire principale Bus de Données 10
Composition d'un Cache Cache décomposé en «lignes de cache» Ligne chargée avec des "blocs" Zones contiguës de mots mémoire Lignes identifiées à partir de l'adresse États Ligne valide ou non Ligne modifiée ou non 11
Caches - Politique de gestion Writethrough Toute modification est immédiatement répercutée en mémoire centrale => lent Writeback (utilisation du dirty bit) Écrit dans une ligne de cache valide Ligne contient des données plus récentes Ligne écrite quand nécessité de la remplacer Politiques de remplacement Round-robin ou pseudo aléatoire 12
Architecture d'un cache 31 12 11 4 3 0 T a g I n d e x = Hit Miss Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 V = valide D = dirty (modifié) 13
Caches Associatifs 31 12 11 4 3 0 T a g I n d e x Compare Miss Hit Way 3 Cache-tagvd Mot3 Mot2 Mot 1Way Mot 02 Cache-tag vd vd Mot3 Mot3Mot2 Mot2 Mot Mot 1 Mot 1Way Mot 0 01 Cache-tag vd vd Mot3 vd Mot3 Mot3 Mot2 Mot2 Mot2 Mot Mot 1 Mot 1 Mot 1 Mot 0Way 0 0 0 Cache-tag vd vd Mot3 vd Mot3 Mot3 Mot2 Mot2 Mot2 Mot Mot 1 Mot 1 Mot 1 Mot 0 0 0 Cache-tag vd vd Mot3 Mot3Mot2 Mot2 Mot Mot 1 Mot 1 Mot 0 0 Cache-tag Cache-tag vd Mot3 vdmot2 Mot3 Mot2 1 Mot 01 Mot 0 Cache-tag vd vd Mot3 Mot3Mot2 Mot2 Mot Mot 1 Mot 1 Mot 0 0 Cache-tag vd vd Mot3 vd Mot3 Mot3 Mot2 Mot2 Mot2 Mot Mot 1 Mot 1 Mot 1 Mot 0 0 0 Cache-tag vd vd Mot3 vd Mot3 vd Mot3 Mot2 Mot3 Mot2 Mot2 Mot2 Mot 1 Mot 1 Mot 1 Mot 01 Mot 0 0 0 Cache-tag vd vd Mot3 vd Mot3 Mot3 Mot2 Mot2 Mot2 Mot Mot 1 Mot 1 Mot 1 Mot 0 0 0 Cache-tag vd vd Mot3 Mot3Mot2 Mot2 Mot Mot 1 Mot 1 Mot 0 0 Cache-tagvd Mot3 Mot2 Mot 1 Mot 0 14
Opérations de Contrôle Flush: vider tout le contenu Clean: écrire toutes les données modifiées en mémoire Possibilité d'effectuer ces opérations par portion, avec une granularité par ligne Distinction entre cache d'instructions et cache de données Possibilité de verrouiller du code et/ou des données en cache 15
Plan Principes des caches Caches mémoire Translation Lookaside Buffer (TLB) Caches de fichiers (Buffer Cache) Caches de Pages 16
Translation Lookaside Buffer Cache pour accélérer la translation adresses virtuelles -> adresses physiques Nombre fixe d'emplacements contenant des «Page Table Entry» (PTE) Clé de recherche : adressse virtuelle Résultat adresse physique contenue dans PTE si OK Sinon, PTE pas trouvée => TLB miss TLB miss : chercher PTE dans table de pages 17
Hardware-Managed TLB TLB miss géré par CPU (Intel) CPU parcours table de pages (à partir du registre cr3 sur Intel x86, par exemple) Si exite PTE associée à adresse virtuelle, Copie PTE dans TLB (round-robin, LRU) Recommence instruction Sinon, déclenche exception «page fault» 18
Software-Managed TLB TLB miss déclenche exception (PowerPC, MIPS) Système parcours table de pages Si existe PTE associée à adresse virtuelle Système copie PTE dans TLB Relance instruction «fautive» Sinon, système invoque le traitement de «page fault» 19
Changement de contexte En général, PTE du processus précédent ne sont pas partagées avec PTE du nouveau processus PTE non valides dans nouveau ou associées à pages différentes TLB vidé entièrement => pénalise changement de contexte Optimisation : «Address Space Id.» (ASID) associé à chaque entrée du TLB TLB contient ASID courant 20
Plan Principes des caches Caches mémoire Translation Lookaside Buffer (TLB) Caches de fichiers (Buffer Cache) Caches de Pages 21
Buffer Cache (Cache SGF) Contient parties des fichiers explicitement accédés par appels système read/write Taille bloc fixe (512 ou 1024 octets) Bloc identifié par couple (numéro vnode associé à fichier, offset dans fichier) Opérations d'entrées/sorties disque effectuées vers/depuis buffer cache 22
Buffer Cache - Fonctionnement Appel système read/write Cherche bloc (File Vnode, File offset) dans buffer cache Si trouvé, attend fin opération E/S éventuelle Sinon, alloue nouveau bloc mémoire dans buffer cache associé à (File Vnode, File offset) Garantir cohérence (éviter allocations multiples du «même» bloc) Copie données entre buffer application et bloc du buffer cache 23
Buffer Cache - Cohérence Thread système de basse priorité met à jour périodiquement sur disque les blocs modifiés Libére blocs pour réaffectation rapide Minimise dégats en cas d'arrêt brutal Commande système pour forcer mise à jour des disques Mise à jour effectuée automatiquement lors de l'arrêt normal du système 24
Plan Principes des caches Caches mémoire Translation Lookaside Buffer (TLB) Caches de fichiers (Buffer Cache) Caches de Pages 25
Cache de Pages Contient pages des fichiers mappés par des processus Binaires exécutés, bibliothèques partagées Fichiers de données explicitement mappés Page identifiée par (objet fichier, offset page dans fichier) Objet fichier : Identificateur fichier Table fonctions d'i/o Liste pages propres, modifiées, verrouillées 26
Cache de Pages Pages appartiennent à espace mémoire utilisateur Pages potentiellement partagées entre processus «Reverse mapping» Facile de démapper une page de tous les espaces d'adressage Optimise remplacement de page (parcours basé sur pages physiques) 27
Page Reverse Mapping PROC 1 PROC 2 PROC 3 Page physique 28