Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 216-217
Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C11 Codage des nombres en base 2, logique booléenne, portes logiques, circuits combinatoires Circuits séquentiels Construction circuits complexes Micro-architecture et fonctionnement des mémoires Machines à état Synthèse de circuits PC/PO Optimisation de circuits PC/PO Interprétation d'instructions Interprétation d'instructions Interprétation d'instructions Introduction aux caches 2 / 15
Plan Plan détaillé du cours d'aujourd'hui 1 Introduction aux caches Machine Quelques chires 2 Caches 3 / 15
Introduction aux caches Plan 1 Introduction aux caches Machine Quelques chires 2 Caches 4 / 15
Introduction aux caches Machine Structure d'une machine CPU (circuit intégré) Banc de registres ALU Bus mémoire Mémoire centrale Interface Bus système Pont E/S Controleur mémoire Controleur USB Carte graphique Bus périphérique Controleur de disque Extensions (réseau, son,...) Souris Clavier Moniteur Disque 5 / 15
Introduction aux caches Machine Structure d'une machine Accès mémoire centrale Processeur émet requête activant : Interface processeur bus système pont bus mémoire contrôleur mémoire mémoire Purement électronique, symétrique Processeur en attente du résultat Accès disque Processeur émet (commande, numéro de secteur, adresse) : Interface E/S bus système pont bus périphérique contrôleur de disque Contrôleur disque disque bus périphérique pont bus mémoire contrôleur mémoire mémoire (DMA) Contrôleur disque processeur (interruption). Électronique et mécanique Transfert asymétrique Processeur en attente ou passe à une autre tâche 6 / 15
Introduction aux caches Quelques chires À propos du stockage des données Évolution de la taille et du temps d'accès Mémoire statique Metrique 198 1985 199 1995 2 25 21 21 198 $/MB 19,2 2,9 32 256 1 75 6 32 T acc (ns) 3 15 35 15 3 2 1.5 2 Mémoire dynamique Metrique 198 1985 199 1995 2 25 21 21 198 $/MB 8, 88 1 3 1.1.6 13, T acc (ns) 375 2 1 7 6 5 4 9 Taille typ.(mb).64.256 4 16 64 2, 8, 125, Disque Metrique 198 1985 199 1995 2 25 21 21 198 $/MB 5 1 8.3.1.5.3 1,6, T acc (ms) 87 75 28 1 8 4 3 29 Taille typ.(mb) 1 1 16 1, 2, 16, 1,5, 1,5, 7 / 15
Introduction aux caches Quelques chires À propos de la fréquence des CPU INTEL 198 199 1995 23 24 25 21 21 :198 CPU 88 386 Pentium P-III P-4 Core 2 Core i7 MHz 1 2 15 6 33 2 25 25 T cycle (ns) 1 5 6 1.6.3.5.4 25 C urs 1 1 1 1 1 2 4 4 T eff (ns) 1 5 6 1.6.3.25.1 1, Tendance similaire chez les autres constructeurs 8 / 15
Introduction aux caches Quelques chires Tendance Écart grandissant entre temps cycle CPU et temps accès mémoire 1,,. Disk 1,,. 1,,. 1,. SSD ns 1,. 1,. 1. DRAM Disk seek time Flash SSD access time DRAM access time SRAM access time CPU cycle time Effective CPU cycle time 1. 1..1 CPU. 198 1985 199 1995 2 23 25 21 Année 9 / 15
Caches Plan 1 Introduction aux caches Machine Quelques chires 2 Caches 1 / 15
Caches Principe de la hiérarchie mémoire Constat Larges espaces de stockage lents et lointains Petits espaces de stockage proches et rapides Idée Copier les zones utiles de la grosse mémoire dans la petite Et le faire automatiquement sans intervention du programme Problème Collisions! Comment faire tenir des données d'adresses très variées dans le cache? 11 / 15
Caches Pourquoi cela marche-t-il? Repose sur une propriété fondamentale des programmes : la localité Principe de localité Les programmes tendent à utiliser des instructions et des données dont les adresses sont identiques ou proches de celles qu'ils ont utilisé récemment Localité temporelle Des variables accédées récemment ont de fortes chances d'être accédées de nouveau dans le futur proche Localité spatiale Des variables qui ont des adresses proches ont de fortes chances d'être accédés à des temps proches 12 / 15
Caches Utilisation de la localité Spatiale et temporelle Lecture d'un mot 1 recopie le mot et ses n voisins (une ligne) de la mémoire centrale dans le cache s'il n'y est pas 2 retourne le mot qui est dans le cache numéro de ligne 1 2 3 CPU Cache 1 2 3 t nn l ff s mm k ee r ll j dd q kk i cc CPU émet @18. Que se passe-t-il? 1 2 3 t nn l ff s mm k ee r ll j dd q kk i cc adresse ligne déplacement 4 8 C 1 14 18 1C 2 24 28 2C Mémoire d c b h g f l k j p o n t s r x w v bb aa z ff ee dd jj ii hh nn mm ll rr qq pp ww uu tt 3 2 1 a e i m q u y cc gg kk oo ss 4 8 C 1 14 18 1C 2 24 28 2C d c b h g f l k j p o n t s r x w v bb aa z ff ee dd jj ii hh nn mm ll rr qq pp ww uu tt 3 2 1 a e i m q u y cc gg kk oo ss 4 8 C 1 14 18 1C 2 24 28 2C d c b h g f l k j p o n t s r x w v bb aa z ff ee dd jj ii hh nn mm ll rr qq pp ww uu tt 3 2 1 a e i m q u y cc gg kk oo ss 13 / 15
Caches Architecture d'un cache à correspondance directe Principe Structure : l = 2 n lignes de m = 2 p mots on ignore les octets dans le mot : les adresses considérés nissent par adresse d'une ligne en mémoire : alignée sur la taille de la ligne, i.e. multiple de m 4 numéro de ligne de cache index dans le cache d'une donnée placée en am : index = am n+p+1..p+1 adresse offset de la donnée dans la ligne : offset = am p+1..2 comment diérencier les diérentes lignes? nécessaire de conserver am 31..n+p+2 pour comparaison 14 / 15
Caches Architecture d'un cache à correspondance directe ADDR[31:] tag index offset 31 n+p+2 n+p+1 p+2p+1 2 1 DOUT[31:] DIN[31:] SDx SD WEDx WED ADDR[m-1:] OE WE CE DATA[u-2:v] == DATA[u-1] HIT DATA[v-1:] 15 / 15