Hiérarchie de mémoire
Transcription
Hiérarchie de mémoire
Hiérarchie de mémoire Architecture des microprocesseurs – GIF-3000 Professeur : Christian Gagné Semaine 11 : 17 novembre 2011 GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 1 / 93 Partie I Notions de base sur les caches GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 2 / 93 Principe de localité Besoins toujours grandissant en mémoire I I I Solution : hierarchie de mémoire Tirer avantage des technologies de mémoire (différents compromis coût-performance) Tirer avantage du principe de localité Principe de localité I I I I Programmes informatiques ne font pas des accès mémoire (code et données) uniformément Règle du 90%-10% : 90% du temps l’accès est pour 10% des données Localité temporelle : plusieurs accès aux mêmes données dans un court laps de temps Localité spatiale : accès à des données proches dans l’espace mémoire GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 3 / 93 Performance mémoire vs processeur 5.1 Introduction ■ 289 100,000 Performance 10,000 1,000 Processor 100 10 Memory 1 1980 1985 1990 1995 Year 2000 2005 2010 Figure 5.2 Starting with 1980 performance as a baseline, the gap in performance between memory and processors is plotted over time. Note that the vertical axis Progression des performance de processeurs beaucoup plus rapide must be on a logarithmic scale to record the size of the processor-DRAM performance qu’avec accès mémoire gap. The memory baseline is 64 KB DRAM in 1980, with a 1.07 per year performance I I improvement in latency (see Figure 5.13 on moyens page 313). de The 7% processor line assumes a Temps accès mémoire : progrès par année, depuis 1980 1.25 improvement per year until 1986, and a 1.52 improvement until 2004, and a 1.20 Processeurs : 25% (1980-1986), 52% (1987-2004), 20% (depuis 2004) improvement thereafter; see Figure 1.1 in Chapter 1. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 4 / 93 advanced innovations that address the processor-memory performance gap. When a word is not found in the cache, the word must be fetched from the memory and placed in the cache before continuing. Multiple words, called a Hiérarchie de mémoire C a c h e CPU Registers Register reference Size: 500 bytes Speed: 250 ps Memory bus Memory Cache reference Memory reference 64 KB 1 ns 1 GB 100 ns I/O bus I/O devices Disk memory reference C.1 1 TB Introduction 10 ms ■ C-3 Figure 5.1 The levels in a typical memory hierarchy in embedded,4 desktop, and Level 1 2 3 server computers. As weregisters move farther away from the processor, the memory in the Name cache main memory disk storage level below that the time units Typical size becomes slower < 1 KBand larger. Note < 16 MB < 512 GB change > 1by TB factors of 10—from picoseconds to milliseconds—and the size units changemagnetic by factors of Implementation technology custom memory with on-chipthat or off-chip CMOS DRAM disk multiple ports, CMOS CMOS SRAM 1000—from bytes to terabytes. Access time (ns) 0.25–0.5 0.5–25 50–250 Bandwidth (MB/sec) 50,000–500,000 5000–20,000 2500–10,000 5,000,000 50–500 Managed by compiler hardware operating system operating system/ operator Backed by cache main memory disk CD or tape Figure C.1 The typical levels in the hierarchy slow down and get larger as we move away from the processor for a large workstation or small server. Embedded computers might have no disk storage, and much smaller memories and caches. The access times increase as we move to lower levels of the hierarchy, which makes it feasible to manage the transfer less responsively. The implementation technology shows the typical technology used for these functions. The access time is given in nanoseconds for typical values in 2006; these times will decrease over time. Bandwidth is given in megabytes per second between levels in the memory hierarchy. Bandwidth for disk storage includes both the media and the buffered interfaces. Temps d’accès : facteur 10 Capacités de stockage : facteur 1000 GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 5 / 93 Mécanisme des hiérarchies de mémoire À chaque niveau, vérifie si la donnée est en cache I I Si donnée est en cache, valeur obtenue immédiatement Si donnée n’est pas en cache, on doit la charger du niveau inférieur et la placer en cache : délais Organisation de données en blocs I I I Pour efficacité et exploitation de localité spatiale : données organisées en blocs Si donnée n’est pas en cache, on charge le bloc entier associé en cache Chaque bloc indique adresses mémoires associées GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 6 / 93 Latence et bande passante Temps d’accès hors cache : dépend de la latence et de la bande passante de la mémoire I I Latence : temps pour obtenir le premier mot d’un bloc de mémoire Bande passante : temps pour obtenir le reste des données du bloc Effet sur le programme I I Exécution dans l’ordre, on doit attendre que le mot du bloc de mémoire soit chargé Exécution dans le désordre, on peut lancer d’autres instructions, mais instruction actuelle est bloquée GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 7 / 93 Mémoire virtuelle Organisation de la mémoire au niveau suivant : mémoire virtuelle I I I I Objets ne sont pas tous dans la mémoire vive d’un processeur, ils peuvent aussi être sur le disque Mémoire virtuelle : diviser la mémoire en pages (équivalent aux blocs au niveau supérieur) Programme qui référe à une donnée pas en cache, ni dans la mémoire vive : faute de page Comme délai sont trop long, les fautes de pages sont gérées par le système d’exploitation Conceptuellement très similaire à la gestion de la mémoire au niveau inférieur (accès cache/hors cache) GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 8 / 93 Quatre questions pour gérer les caches 1 Placement de blocs : comment placer les blocs de mémoire en cache ? I I I Correspondance directe (direct association) : chaque bloc est toujours à la même position en cache Totalement associatif (fully associative) : blocs peuvent être n’importe où en cache Associatif par ensemble (set associative) : blocs sont restreints à certaines positions 2 Identification de blocs : comment trouve-t’on les blocs d’intérêt au niveau supérieur ? 3 Remplacement de blocs : quel bloc doit être remplacé lors d’un manquement de cache ? 4 Stratégie d’écriture : qu’est-ce qui survient lors d’une écriture en mémoire ? GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 9 / 93 (Block address) MOD (Number of sets in cache) Organisation de blocs en cache Fully associative: block 12 can go anywhere Block no. 0 1 2 3 4 5 6 7 Direct mapped: block 12 can go only into block 4 (12 mod 8) Block no. 0 1 2 3 4 5 6 7 Set associative: block 12 can go anywhere in set 0 (12 mod 4) Block 0 1 2 3 4 5 6 7 no. Cache Set Set Set Set 0 1 2 3 Block frame address Block no. 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Memory Figure C.2(U.This example cache has eight de block frames and memory hasC.32 blocks.10 / 93 GIF-3000 Laval) Hiérarchie mémoire Gagné Placement de blocs Placement avec correspondance directe : un bloc mémoire ne peut se trouver que dans un seul bloc de la cache I I Adresse du bloc mémoire mod nombre de blocs en cache Bits moins significatifs de l’adresse F Exemple de cache avec 1024 blocs : on utilise les 10 bits moins significatifs du bloc mémoire Placement totalement associatif : bloc mémoire se retrouve dans n’importe lequel des blocs de cache I Rarement utilisé dans architectures modernes GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 11 / 93 Placement de blocs Placement associatif par ensemble : un bloc peut se trouver dans n’importe lequel des blocs d’un ensemble I Associativité à deux voies (2-way set associative) F I Cache divisée en ensemble de deux blocs, chaque bloc mémoire peut se retrouver dans un des deux blocs Adresse de l’ensemble F F Adresse du bloc mémoire mod nombre d’ensembles dans la cache Exemple de cache avec 1024 blocs, ensemble de deux blocs (512 ensembles) : adresse de l’ensemble donné par les 9 bits moins significatifs du bloc GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 12 / 93 on this address. Before proceeding to the next question, let’s explore the relationship of a processor address to the cache. Figure C.3 shows how an address is divided. The first division is between the block address and the block offset. The block frame address can be further divided into the tag field and the index field. The block offset field selects the desired data from the block, the index field selects the set, and the tag field is compared against it for a hit. Although the comparison could be made on more of the address than the tag, there is no need because of the following: Identification de blocs Adresse divisée en trois éléments I Adresse de ■ The bloc offset should not be used in the comparison, since the entire block is F F I present orde not,bloc and hence all blockunique offsets result in alequel match byladefinition. Étiquette : adresse avec comparison doit être ■ Checking the index is redundant, since it was used to select the set to be faite checked. An address stored in set 0, for example, must have 0 in the index Index bloc : correspond numéro de anl’ensemble fieldde or it couldn’t be stored in setau 0; set 1 must have index value ofassocié 1; and au bloc so on. This optimization saves hardware and power by reducing the width of mémoire memory size for the cache tag. Déplacement dans le bloc : inchangé car à l’intérieur du bloc Block address Tag Index Block offset Figure C.3 The three portions of an address in a set-associative or direct-mapped Bloc mémoire associé selon cache. The tag is usedàtoun checkensemble all the blocks in the set, andl’index the index isdu used bloc to select the set. The block offset is the address of the desired data within the block. Fully asso- caches have no indexd’un field. bloc mémoire en cache via l’étiquette Recherche ciative de la présence du bloc GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 13 / 93 Remplacement de blocs Comment choisir le bloc en cache à remplacer lors d’un manquement de cache ? I I Correspondance directe : décision évidente ! Associativité partielle/totale : choisir parmi les blocs d’un ensemble Aléatoire (random) : choisir le bloc remplacé aléatoirement Moins récemment utilisé (LRU) : remplacer le bloc le moins récemment utilisé (corolaire de localité) F Bloc plus ancien (FIFO) : remplacement le bloc le plus ancien de l’ensemble (implantation plus simple que celle du moins récemment Appendix C Review of Memory Hierarchy utilisé) F F C-10 ■ Associativity Two-way Size Four-way Eight-way LRU Random FIFO LRU Random FIFO LRU Random FIFO 16 KB 114.1 117.3 115.5 111.7 115.1 113.3 109.0 111.8 110.4 64 KB 103.4 104.3 103.9 102.4 102.3 103.1 99.7 100.5 100.3 256 KB 92.2 92.1 92.5 92.1 92.1 92.5 92.1 92.1 92.5 Figure C.4 Data cache misses per 1000 instructions comparing least-recently used, random, and first in, first out replacement for several sizes and associativities. There is little difference between LRU and random for the largestGIF-3000 Laval) Hiérarchie de mémoire C. Gagné 14 / 93 size cache,(U. with LRU outperforming the others for smaller caches. FIFO generally outperforms random in the smaller Stratégie d’écriture Écriture d’une donnée : bloc mémoire en cache ? I Donnée en cache, quand doit-on mettre la mémoire à jour ? F F I Écriture simultanée (write through) : écrit dans la cache et la mémoire Réécriture (write back) : écrit seulement dans la cache Donnée hors cache, doit-on toucher à la cache ? F F Écriture allouée (write allocate) : charge donnée en cache Écriture non allouée (no-write allocate) : écrit directement en mémoire Dans tous les cas, préserver la cohérence I Cache et mémoire doivent avoir les mêmes données F Ou alternativement, faire une gestion correcte de tous les cas GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 15 / 93 Écriture avec bloc mémoire en cache Écriture simultanée : mise-à-jour de la cache et de la mémoire I I I Lecture subséquente : on peut écraser le bloc car données sont en mémoire Simple à réaliser et maintient facilement cohérence des données Tampon nécessaire pour cacher la latence d’écriture en mémoire Réécriture : mise-à-jour uniquement de la cache I I La mémoire doit être mise à jour avant de remplacer le bloc dans la cache Contrôle supplémentaire : bit « sale » (dirty bit) F I Vaut 1 si le bloc a été modifié par une écriture, mais que modification pas transmise à la mémoire Avantages F F F Écriture faite à la vitesse de la cache Circulation sur le bus réduite (si même bloc modifié plusieurs fois) Combine écriture à adresses consécutives GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 16 / 93 Écriture avec bloc mémoire hors cache Écriture allouée : allocation d’un bloc dans la cache I Traiter une écriture similairement à une lecture de donnée hors cache Écriture non allouée : écrire directement en mémoire Combinaisons fréquentes d’approches I Réécriture avec écriture allouée F I Avec écriture hors cache, bloc alloué dans la cache et donc disponible pour écritures subséquentes Écriture simultanée avec écriture non allouée F Éviter d’allouer de l’espace en cache pour écriture GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 17 / 93 Exemple : écriture hors cache Comparer nombre d’accès en cache et hors cache des approches d’écriture allouée vs écriture non-allouée pour cinq accès en mémoire 1 2 3 4 5 Write Write Read Write Write Mem[100] Mem[100] Mem[200] Mem[200] Mem[100] Écriture allouée : 2 manquements et 3 accès en cache I Premiers accès à adresses 100 et 200 hors cache, les autres en cache Écriture non allouée : 4 manquements et 1 accès en cache I I Trois écritures à adresse 100 sont hors cache Lecture d’adresse 200 hors cache, lecture suivante en cache GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 18 / 93 Partie II Performances des caches GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 19 / 93 Performances des caches Effet des caches : nombre de cycles où le processeur est bloqué pour des accès mémoire temps total = (nb. cycles calcul + nb. cycles bloqués mémoire) × temps d’un cycle I Suppose que temps pour accéder à une donnée en cache est dans temps de calculs et que processeur est complètement bloqué sur un accès hors cache GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 20 / 93 Temps de bloquage Nombre de cycles où le processeur est bloqué pour un accès mémoire dépend du nombre de manquements et de la pénalité de manquement I NI : nombre d’instructions nb. cycles bloqués mémoire = = = nb. de manquements × pénalité de manquement manquements NI × × pénalité de manquement instructions accès mémoire NI × × taux de manquement instructions × pénalité de manquement Exemple de la page C-5 I I I I I Ordinateur avec CPI de 1,0, sauf pour lecture/écriture en mémoire 50% instructions sont des lectures/écritures 2% des accès mémoire sont hors cache, avec pénalité de 25 cycles Comparer ordinateur idéal (accès tous en cache) avec ordinateur réaliste (avec accès hors cache) Développements au tableau. . . GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 21 / 93 Temps d’accès mémoire moyen TAMM : temps d’accès mémoire moyen TAMM = temps accès cache + taux manquement × pénalité manquement Exemple des pages C-15 à C-17 I Cas 1 : caches séparées F F I I I I I I 16 Ko pour instructions : 3,82 manquements par 1000 instructions ; délai un cycle accès en cache 16 Ko pour données : 40,9 manquements par 1000 instructions ; délai deux cycles accès en cache Cas 2 : cache unifiée de 32 Ko : 43,3 manquements par 1000 instructions ; délai un cycle accès en cache 36% des instructions sont des transferts de données Pénalité de 100 cycles pour chaque manquement Écriture simultanée avec tampon d’écriture (aucun délai écriture en cache) Calculer temps d’accès mémoire moyen pour les deux cas Développements au tableau. . . GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 22 / 93 Partie III Optimisations élémentaires des caches GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 23 / 93 Performance et temps d’accès mémoire moyen TAMM : temps d’accès mémoire moyen TAMM = temps accès cache + taux manquement × pénalité manquement Comment augmenter performance de la cache ? I Réduire la pénalité lors de manquement F F F I Réduire le taux de manquement F F I Plus grande taille de blocs Plus grande taille de cache Plus grande associativité Caches multi-niveaux Priorité à la lecture sur l’écriture Réduire le temps d’accès en cache F Éviter des traductions d’adresses lors de l’indexation de la cache GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 24 / 93 Causes d’accès hors cache Trois causes d’accès hors cache (les trois « C ») 1 Accès obligatoires (compulsary) F F 2 Capacité (capacity) F F 3 Premier accès à un bloc mémoire ne peut être dans la cache Présent même pour caches de taille infinie Cache trop petite pour contenir tous les blocs utilisés Des blocs seront relus après avoir été écrasés Conflits (conflicts) F F Manquements parce qu’un ensemble est trop populaire (collisions) Manquements qui seraient évités si la cache était totalement associative GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 25 / 93 Causes d’accès hors cache C.3 Six Basic Cache Optimizations ■ C-23 Miss rate components (relative percent) (sum = 100% of total miss rate) Cache size (KB) 4 4 4 4 8 8 8 8 16 16 16 16 32 32 32 32 64 64 64 64 128 128 128 128 256 256 256 256 512 512 512 512 Degree associative 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way 1-way 2-way 4-way 8-way Total miss rate 0.098 0.076 0.071 0.071 0.068 0.049 0.044 0.044 0.049 0.041 0.041 0.041 0.042 0.038 0.037 0.037 0.037 0.031 0.030 0.029 0.021 0.019 0.019 0.019 0.013 0.012 0.012 0.012 0.008 0.007 0.006 0.006 Compulsory 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.1% 0.1% 0.1% 0.1% 0.1% 0.1% 0.1% 0.1% 0.1% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.2% 0.3% 0.3% 0.3% 0.3% 0.5% 0.5% 0.5% 0.5% 0.8% 0.9% 1.1% 1.1% Capacity 0.070 0.070 0.070 0.070 0.044 0.044 0.044 0.044 0.040 0.040 0.040 0.040 0.037 0.037 0.037 0.037 0.028 0.028 0.028 0.028 0.019 0.019 0.019 0.019 0.012 0.012 0.012 0.012 0.005 0.005 0.005 0.005 72% 93% 99% 100% 65% 90% 99% 100% 82% 98% 99% 100% 89% 99% 100% 100% 77% 91% 95% 97% 91% 100% 100% 100% 94% 99% 99% 99% 66% 71% 91% 95% Conflict 0.027 0.005 0.001 0.000 0.024 0.005 0.000 0.000 0.009 0.001 0.000 0.000 0.005 0.000 0.000 0.000 0.008 0.003 0.001 0.001 0.002 0.000 0.000 0.000 0.001 0.000 0.000 0.000 0.003 0.002 0.000 0.000 28% 7% 1% 0% 35% 10% 1% 0% 17% 2% 0% 0% 11% 0% 0% 0% 23% 9% 4% 2% 8% 0% 0% 0% 6% 0% 0% 0% 33% 28% 8% 4% Figure C.8 Total miss rate for each size cache and percentage of each according to the “three C’s.” Compulsory misses are independent of cache size, while capacity misses decrease as capacity increases, and conflict misses GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 26 / 93 Review of Memory Hierarchy Taux de manquement selon causes et tailles 0.10 0.09 0.08 1-way 2-way 4-way 8-way Capacity Compulsory 0.07 0.06 Miss rate per type 0.05 0.04 0.03 0.02 0.01 0.00 4 8 16 32 64 128 256 512 1024 Cache size (KB) 100% GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 27 / 93 0.01 0.00 selon causes et tailles Pourcentages 4 8 16 32 64 128 256 512 1024 Cache size (KB) 100% 80% Miss rate per type 60% 1-way 2-way 4-way 8-way Capacity Compulsory 40% 20% 0% 4 8 16 32 64 128 256 512 1024 Cache size (KB) Figure C.9 Total miss rate (top) and distribution of miss rate (bottom) for each size cacheGIF-3000 according to the three C’sHiérarchie for thededata in Figure C.8. The top diagram28is/ 93 the (U. Laval) mémoire C. Gagné 1ère optimisation : blocs de plus grande taille Blocs de plus grande taille I Avantages F F F I Réduire les délais des accès obligatoires Transferer plus de données à chaque accès Tirer avantage de la localité spatiale Désavantages F F Augmente la pénalité lors d’un manquement, car plus de données à transférer Augmentation des conflits : à taille égale, moins de blocs conservés en cache Exige un compromis entre le taux de manquement et la pénalité de manquement I I Grande latence et bonne largeur de bande : blocs plus grands Petite latence et faible largeur de bande : blocs plus petits GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 29 / 93 C.3 Six Basic Cache Optimizations Taux de manquement selon taille de blocs ■ C-27 Appendix C Review of Memory Hierarchy Cache size Block10% size 16K 64K 256K 16 8.57% 3.94% 2.04% 1.09% 32 7.24% 2.87% 1.35% 0.70% 64 7.00% 2.64% 1.06% 0.51% 128 Miss rate 5% 7.78% 2.77% 1.02% 0.49% 9.51% 3.29% 1.15% 0.49% 256 4K 4K 16K Figure C.11 Actual miss rate versus block size for five different-sized caches in Figure C.10. Note that for a 4 KB cache, 256-byte blocks have a higher miss rate than 32-byte blocks. In this example, the cache would have to be 256 KB in order for a 64K 256256K byte block 0% to decrease misses. 16 32 64 128 256 Block size Cache sizecaches. Note that miss Figure C.10 Miss rate versus block size for five different-sized rate actually goes up if the block size is too large relative to the cache size. Each line repBlock size Miss penalty 4K 16K 64K 256K resents a cache of different size. Figure C.11 shows the data used to plot these lines. 16 82 would take 8.027too long 4.231 Unfortunately, SPEC2000 traces if block 2.673 size were 1.894 included, so these data [Gee et al.2.134 1993]. 1.588 32 are based on SPEC92 84 on a DECstation 7.082 5000 3.411 64 88 7.160 3.323 1.933 1.449 128 96 8.469 3.659 1.979 1.470 At the same time, larger blocks increase the miss penalty. Since they reduce 256 112 11.651 4.685 2.288 1.549 the number of blocks in the cache, larger blocks may increase conflict misses and C.12 Average access time versus Clearly, block sizethere for fiveisdifferent-sized evenFigure capacity misses memory if the cache is small. little reason to caches in block Figure C.10. Block sizes of 32 that and 64 bytes dominate. The smallest average increase the size to such a size it increases the miss rate. There is also GIF-3000 (U. Laval) time per cache size is boldfaced.Hiérarchie de mémoire C. Gagné 30 / 93 2ième optimisation : cache plus grande taille C-24 ■ Appendix C Review of Memory Hierarchy Solution évidente : caches plus grandes 0.10 0.09 0.08 1-way 2-way 4-way 8-way Capacity Compulsory 0.07 0.06 Miss rate per type 0.05 0.04 0.03 0.02 0.01 0.00 4 8 16 32 64 128 256 512 1024 Cache size (KB) 100% Effets de caches plus grandes I I Augmentation du80%temps d’accès de données en cache Coût plus élevé Miss rate per type GIF-3000 (U. Laval) 60% 40% Hiérarchie de mémoire 1-way 2-way 4-way C. Gagné 31 / 93 0.07 2-way 4-way 8-way Capacity Compulsory 0.06 3ième optimisation : plus grande associativité Miss rate per type 0.05 0.04 0.03 0.02 Plus grande associativité réduit le TAMM 0.01 I Pour associativité à 80.00voies, résultats presque équivalents à 4 8 16 32 64 128 256 512 1024 associativité totale (sauf pour 1024 Cache Ko)size (KB) 100% 80% Miss rate per type 60% 1-way 2-way 4-way 8-way Capacity Compulsory 40% 20% 0% 4 8 16 32 64 128 256 512 1024 Cache size (KB) I I Figure C.9 Total miss rate (top) and distribution of miss rate (bottom) for each size Cache à correspondance directe à N octets a taux de manquement que cache according to the three C’s for the data in Figure C.8. The top diagram is the actual data cache rates, while bottom octets diagram shows the percentage in each cache à associativité à miss 2 voies detheN/2 category. (Space allows the graphs to show one extra cache size than can fit in Augmentation Figuredu C.8.)temps d’accès de données en cache GIF-3000 (U. Laval) To show the benefit of associativity, conflict misses are divided into misses caused by each decrease in associativity. Here are the four divisions of conflict Hiérarchie de mémoire C. Gagné 32 / 93 TAMM selon associativité C.3 Six Basic Cache Optimizations ■ C-29 Associativity Cache size (KB) One-way Two-way Four-way Eight-way 4 3.44 3.25 3.22 3.28 8 2.69 2.58 2.55 2.62 16 2.23 2.40 2.46 2.53 32 2.06 2.30 2.37 2.45 64 1.92 2.14 2.18 2.25 128 1.52 1.84 1.92 2.00 256 1.32 1.66 1.74 1.82 512 1.20 1.55 1.59 1.66 Figure C.13 Average memory access time using miss rates in Figure C.8 for parameters in the example. Boldface type means that this time is higher than the number to the left; that is, higher associativity increases average memory access time. Tient compte de temps d’accès plus long Ne tient pas compte de l’augmentation de la durée du cycle Answer Average memory access time for each associativity is e memory access time8-way = Hit time8-way + Miss rate8-way × Miss penalty8-way = 1.52 + Miss rate8-way × 25 GIF-3000 Hiérarchie de mémoire C. Gagné e memory access time(U. Laval) = 1.44 + Miss rate × 25 33 / 93 4ième optimisation : cache multi-niveau Compromis dans la conception d’une cache I I Augmenter la grandeur de la cache pour compenser augmentation des temps accès en mémoire Augmenter la vitesse de la cache (donc réduire la taille) pour suivre vitesse du processeur Solution : faire les deux avec une cache multi-niveau I I Cache de niveau 1 (L1) : petite et rapide, pour temps d’accès courts Cache de niveau 2 (L2) : grande et plus lente, pour minimiser les accès à la mémoire Cache L2 réduit la pénalité d’un manquement à la cache L1 GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 34 / 93 dixTaux C Review Memory Hierarchy deof manquement selon taille de cache multi-niveau 100% 90% 99% 99% 98% 96% Local miss rate 88% 80% Global miss rate Single cache miss rate 70% 67% 60% Miss rate 55% 50% 51% 40% 46% 39% 30% 34% 20% 10% 0% 6% 5% 4% 4 4% 4% 3% 2% 2% 16 3% 3% 32 64 128 256 512 4% 8 4% 2% 1% 1% 1024 2048 4096 Cache size (KB) Figure C.14 Miss rates versus cache size for multilevel caches. Second-level caches smaller than the sum of the two 64 KB first-level caches make little sense, as reflected in Variation de la taille de la cache L2 the high miss rates. After 256 KB the single cache is within 10% of the global miss rates. The misscaches rate of a single-level cache versus size is plotted thechacune local miss rate and Deux L1 (instruction et données) deagainst 64 Ko global miss rate of a second-level cache using a 32 KB first-level cache. The L2 caches (unified) were two-way set associative Hiérarchie with LRUdereplacement. Each had split L1 instruction GIF-3000 (U. Laval) mémoire C. Gagné 35 / 93 and data caches that were 64 KB two-way set associative with LRU replacement. The block size for both L1 and L2 caches was 64 bytes. Data were collected as in Figure C.4. Taux d’exécution relatif selon taille de cache multi-niveau 8192 1.02 1.06 L2 hit = 8 clock cycles L2 hit = 16 clock cycles 4096 1.10 1.14 1.60 1.65 2048 Second-level cache size (KB) 1.76 1.82 1024 1.94 1.99 512 2.34 2.39 256 1.00 1.25 1.50 1.75 2.00 2.25 2.50 Relative execution time Figure C.15 Relative execution time by second-level cache size. The two bars are for different clock :cycles for L2 an L2 Theet reference time of 1.00 is for an Référence cache decache 8192hit.Ko latenceexecution de 1 cycle 8192 KB second-level cache with a 1-clock-cycle latency on a second-level hit. These data were(U.collected the same wayHiérarchie as in Figure C.14, using a simulator toC.imitate GIF-3000 Laval) de mémoire Gagné the36 / 93 Performances de cache multi-niveau Temps d’accès mémoire moyen avec cache multi-niveau TAMM = temps accès cacheL1 + taux manquementL1 × pénalité manquementL1 Pénalité de manquement pénalité manquementL1 = temps accès cacheL2 + taux manquementL2 × pénalité manquementL2 I taux manquementL2 calculé localement, sur accès en L2 Cycles d’arrêts mémoire par instruction cycles d’arrêts instructions = = = GIF-3000 (U. Laval) nb. manquementL1 × pénalité manquementL1 instructions nb. manquementL1 × (taux accès cacheL2 instructions + taux manquementL2 × pénalité manquementL2 ) nb. manquementL1 × taux accès cacheL2 instructions nb. manquementL2 × pénalité manquementL2 + instructions Hiérarchie de mémoire C. Gagné 37 / 93 Inclure L1 dans L2 ? Approche naturelle : inclure L1 dans L2 I Facilite le maintien de la cohérence Inclusion implique de gérer des blocs de taille différente I Petits blocs en L1, grands blocs en L2 F I P4 : blocs de 64 octets en L1 et 128 octets en L2 Manquement en L2 : doit invalider plusieurs blocs en L1 Lorsque L2 ne peut être que légèrement plus grand que L1 I I I Plus efficace d’exclure L1 de L2 Manquement dans L1 : échange de blocs avec L2 Approche suivie par Athlon (2 L1 de 64 Ko, 1 L2 de 256 Ko) GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 38 / 93 5ième optimisation : priorité aux manquements en lecture Prioriser manquements en lecture de cache aux manquements en écriture I Intention : réduire durée de bloquage du processeur attendant après une lecture en mémoire Approche pour cache avec écriture simultanée I I Possibilité de RAW avec tampon d’écriture Solution : lors d’échec de lecture en cache, attendre que tampon d’écriture soit vide F Alternative : vérifier contenu du tampon d’écriture Approche pour cache avec réécriture I I I Manquement en lecture force remplacement d’un bloc Si bloc est sale, écriture en mémoire nécessaire avant lecture Solution : transfert de bloc sale dans un tampon et poursuite de lecture avant écriture GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 39 / 93 6ième optimisation : éviter les traductions d’adresses Adresses virtuelles I I Utilisées pour supporter mémoire virtuelle (présenté plus loin) Indirection vers une adresse physique en mémoire (ou sur disque) Rendre le cas commun rapide I I En principe, la plupart des accès mémoire se fait sur des données en cache Donc, utiliser directement l’adresse virtuelle pour adresser la cache Permet de réduire le temps d’accès à des données en cache GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 40 / 93 Résumé des optimisations de base des caches C.4 Virtual Memory Hit time Technique Larger block size Miss penalty – Larger cache size – Higher associativity – Multilevel caches Miss rate Hardware complexity Comment 0 Trivial; Pentium 4 L2 uses 128 bytes + 1 Widely used, especially for L2 caches + 1 Widely used 2 Costly hardware; harder if L1 block size ≠ L2 block size; widely used + Avoiding address translation during cache indexing C-39 + + Read priority over writes ■ + 1 Widely used 1 Widely used Figure C.17 Summary of basic cache optimizations showing impact on cache performance and complexity for the techniques in this appendix. Generally a technique helps only one factor. + means that the technique improves the factor, – means it hurts that factor, and blank means it has no impact. The complexity measure is subjective, with 0 being the easiest and 3 being a challenge. GIF-3000 (U. Laval) Hence, there must be a means of sharing a smaller amount of physical memory among many processes. Hiérarchie de mémoire C. Gagné 41 / 93 Partie IV Optimisations avancées des caches GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 42 / 93 Onze optimisations avancées des caches Optimisations pour réduire les temps d’accès de données en cache 1 2 3 Caches petites et simples Prédiction des voies Cache des traces Augmenter la bande passante 4 5 6 Caches pipelinées Caches non bloquantes Caches avec plusieurs banques Réduire la pénalité de manquement 7 8 Mot critique en premier et départ rapide Tampons de fusion d’écriture Réduire le taux de manquement 9 Optimisations du compilateur Réduire pénalité/taux de manquement avec le parallélisme 10 11 Préchargement matériel Préchargement logiciel GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 43 / 93 Optimisation 1 : caches petites et simples Garder les caches petites et simples I Goulot d’étranglement dans les caches : recherche d’index d’adresses en cache F I I I Partie plus longue pour accès de données en cache : recherche de l’index de l’adresse en cache Petites caches permet de réduire le temps de recherche (moins d’adresses) Cache L2 suffisamment petite pour être dans la puce du microprocesseur : pénalité réduite Cache à correspondance directe : simplifie la cache Approche moderne dans conception de caches I I Garder cache L1 petite et simple Compromis complexité/vitesse pour cache L2 GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 44 / 93 way is l.02–1.11 times faster than four-way; and four-way is 1.0–1.08 times faster than fully associative. Temps d’accès en cache vs taille et associativié 2.50 1-way 2-way 2.00 4-way Access time (ns) 8-way 1.50 1.00 0.50 0 16 KB 32 KB 64 KB 128 KB Cache size 256 KB 512 KB 1 MB Figure 5.4 Access times as size and associativity vary in a CMOS cache. These data GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 45 / 93 Optimisations 2 et 3 : prédiction des voies et trace Optimisation 2 : prédiction des voies I I I Prédire le bloc (en cache) d’un ensemble du prochain accès en cache Si prédiction bonne, accès immédiat, sinon, comparaison et accès au cycle suivant Simulation avec associativité à 2 voies : prédictions correctes à 85% Optimisation 3 : cache des traces I I I I Conserver une cache d’instruction dynamique, formée à partir de l’historique d’exécution Prédiction des branchements intégrée à la cache d’instructions Permet de garder les instructions d’une trace en cache, contrairement à une approche classique Complexe et pas très populaire : présenté essentiellement car présent dans Pentium 4 GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 46 / 93 Optimisation 4 : caches pipelinées Organiser l’accès à une donnée en cache selon plusieurs étages I I I Permet d’augmenter l’horloge de processeurs Augmente bande passante à la cache, mais réduit les temps d’accès Impacts pour mauvaise prédiction de branchements Approche suivie par Intel I I I Pentium : 1 cycle pour accès en cache Pentium Pro à P3 : 2 cycles pour accès en cache Pentium 4 : 4 cycles pour accès en cache GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 47 / 93 Optimisation 5 : caches non bloquantes Permettre à la cache de continuer de fournir des données suite à un manquement I Amène une complexification du contrôleur Pertinent pour une exécution dans le désordre Difficile d’en évaluer les performances I I Manquement de cache ne bloque pas nécessairement le processeur Pénalité effective : temps des manquements non couverts par d’autres activités GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 48 / 93 5.2 Eleven Advanced Optimizations of Cache Performance Temps d’arrêt avec caches bloquantes ■ 297 100% 90% 80% 70% Percentage of the average 60% memory 50% stall time 40% 30% Hit under 1 miss Hit under 2 misses Hit under 64 misses 20% 10% or a xl es isp pr e co sso m pr es eq s nt ot t p2 al vi n sp n ic e2 g6 r jd ea dl m sw m 2 to 56 m ca tv fp pp su p 2c or hy dr o2 m d dl js p2 na sa 7 do du c w av e5 0% Benchmarks Figure 5.5 Ratio of the average memory stall time for a blocking cache to hit-underGIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 49 / 93 Optimisation 6 : caches avec plusieurs banques Séparer la cache en plusieurs « banques » indépendantes pour permettre des accès simultanés I Fonctionne bienAdvanced lorsque les accès sont bien dispersés entre les banques 5.2 Eleven Optimizations of Cache Performance ■ 299 I Organisation simple de la cache : distribuer les blocs séquentiellement entre les banques Block address 0 Bank 0 Block address 1 Bank 1 Block address 2 Bank 2 Block address 3 4 5 6 7 8 9 10 11 12 13 14 15 Bank 3 Figure 5.6 Four-way interleaved cache banks using block addressing. Assuming 64 bytes per blocks, each of these addresses would be multiplied by 64 to get byte addressing. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 50 / 93 Optimisation 7 : mot critique en premier et départ rapide Observation : processeur a besoin que du mot accédé et non le bloc entier Impatience dans les accès I I Envoyer le mot critique au processeur aussitôt que possible Redémarrer le processeur aussitôt que le mot critique est obtenu, poursuivant en simultané le chargement des données restantes du bloc Stratégies possibles I I Lire en premier le mot critique Lire le bloc dans l’ordre, mais transmettre le mot critique aussitôt qu’il est lu Efficace pour des caches avec de grands blocs GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 51 / 93 5.2 Eleven Advanced Optimizations of Cache Performance Optimisation 8 : tampons de fusion d’écriture Write address V V V V 100 1 Mem[100] 0 0 0 108 1 Mem[108] 0 0 0 116 1 Mem[116] 0 0 0 124 1 Mem[124] 0 0 0 Write address V V V V 100 1 Mem[100] 1 Mem[108] 1 Mem[116] 1 0 0 0 0 0 0 0 0 0 0 0 0 ■ 301 Mem[124] FigureGIF-3000 5.7 To(U.illustrate write merging, the write buffer on top does not use it while Laval) Hiérarchie de mémoire C. Gagné 52 / 93 Optimisation 9 : optimisations du compilateur Changer l’ordre d’exécution des procédures I I Aligner le code sur la taille des blocs Organiser les branchements pour que la trace soit séquentielle en mémoire Réorganiser le code pour préserver la localité des données I I Changer l’ordre de boucles imbriquées Traitement par blocs GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 53 / 93 Changer l’ordre de boucles imbriquées Code original for (j=0; j<100; ++j) { for (i=0; i<5000; ++i) { x[i][j] = 2 * x[i][j]; } } Code modifié for (i=0; i<5000; ++i) { for (j=0; j<100; ++j) { x[i][j] = 2 * x[i][j]; } } Accès séquentiel plutôt que sauts de 100 mots GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 54 / 93 Traitement par blocs Traitement par blocs, code original for (i=0; i<N; ++i) { for (j=0; j<N; ++j) { r = 0; for (k=0; k<N; ++k) { r = r + y[i][k] * z[k][j]; } x[i][j] = r; } } 304 ■ Chapter Five Memory Hierarchy Design Éléments traités j x 0 1 2 k 3 4 y 5 0 1 2 j 3 4 z 5 0 1 1 2 3 4 5 1 2 i 0 0 1 2 i 0 2 k 3 3 3 4 4 4 5 5 5 Figure 5.8 A snapshot of the three arrays x, y, and z when N = 6 and i = 1. The age of accesses to the array elements is indicated by shade: white means not yet touched, light means older accesses, and dark means newer GIF-3000 (U. Laval) Hiérarchie mémoire C.ofGagné accesses. Compared to Figure 5.9, elements of y and de z are read repeatedly to calculate new elements x. The vari- 55 / 93 304 Chapter Five Memory Hierarchy Design Traitement par blocs ■ j Traitement par blocs, code modifié x 0 1 2 3 4 y 5 0 1 k 2 j 3 4 z 5 0 1 2 3 4 5 0 0 for (jj=0; 0 jj<N; jj+=B) { for (kk=0; kk<N; kk+=B) { 1 1 1 for2 (i=0; i<N; ++i) { 2 2 i i k ++j) { 3 for (j=jj; j<min(jj+B,N); 3 3 r = 0; 4 4 4 for (k=kk; k<min(kk+B,N); ++k) { 5 5 5 r = r + y[i][k] * z[k][j]; } of the three arrays x, y, and z when N = 6 and i = 1. The age of accesses to the array eleFigure 5.8 A snapshot = x[i][j] + touched, r; light means older accesses, and dark means newer ments is indicated x[i][j] by shade: white means not yet to Figure 5.9, elements of y and z are read repeatedly to calculate new elements of x. The vari} }accesses. } Compared } ables i, j, and k are shown along the rows or columns used to access the arrays. Éléments traités j x 0 1 2 j k 3 4 y 5 0 1 2 3 4 z 5 0 0 0 0 1 1 1 2 2 i 1 2 3 4 5 2 k i 3 3 3 4 4 4 5 5 5 Figure 5.9 The age of accesses to the arrays x, y, and z when B = 3. Note in contrast to Figure 5.8 the smaller number (U. of elements GIF-3000 Laval) accessed. Hiérarchie de mémoire C. Gagné 56 / 93 Optimisation 10 : préchargement matériel Préchargement des instructions I I I Lit deux blocs lors d’échec, plutôt qu’un seul Place 2ième dans un tampon (stream buffer) Vérifie tampon lors d’accès suivants Stratégie similaire possible pour données Utilise le bus pour transférer de l’information qui ne sera peut être pas utilisée GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 57 / 93 Préchargement matériel sur Pentium 4 hapter Five Memory Hierarchy Design 2.20 1.97 Performance improvement 2.00 1.80 1.60 1.49 1.45 1.40 1.40 1.20 1.18 1.16 1.20 1.21 1.29 1.26 1.32 1.00 gap mcf SPECint2000 fam3d wupwise galgel facerec swim applu lucas mgrid equake SPECfp2000 Figure 5.10 Speedup due to hardware prefetching on Intel Pentium 4 with hardware prefetching turned on for 2 of 12 SPECint2000 benchmarks and 9 of 14 SPECfp2000 benchmarks. Only the programs that benefit the most from prefetching are shown; prefetching speeds up the missing 15 SPEC benchmarks by less than 15% [Singhal 2004]. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 58 / 93 Optimisation 11 : préchargement logiciel Compilateur place des instructions pour amener transfert de blocs en cache I I Consomme de la bande passante sur le bus Ressources consommées pour instructions de préchargement Instructions de préchargement I I Placées avant l’utilisation des données Doit éviter de bloquer la cache GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 59 / 93 as the complexity of the memory hierarchy. Figure 5.11 summarizes these techniques and estimatesavancées the impact on complexity, with + meaning that the techRésumé des optimisations nique improves the factor, – meaning it hurts that factor, and blank meaning it has no impact. Generally, no technique helps more than one category. Technique Hit Bandtime width Miss penalty Miss Hardware cost/ rate complexity Comment Small and simple caches + 0 Trivial; widely used Way-predicting caches + – 1 Used in Pentium 4 Trace caches + 3 Used in Pentium 4 Pipelined cache access – + 1 Widely used + 3 Widely used 1 Used in L2 of Opteron and Niagara Critical word first and early restart + 2 Widely used Merging write buffer + Nonblocking caches + Banked caches + Compiler techniques to reduce cache misses 1 Widely used with write through + 0 Software is a challenge; some computers have compiler option Many prefetch instructions; Opteron and Pentium 4 prefetch data Hardware prefetching of instructions and data + + 2 instr., 3 data Compiler-controlled prefetching + + 3 Needs nonblocking cache; possible instruction overhead; in many CPUs Figure 5.11 Summary of 11 advanced cache optimizations showing impact on cache performance and complexity. Although generally a technique helps only one factor, prefetching can reduce misses if done sufficiently early; if not, it can GIF-3000 reduce miss the factor, – means it hurts that (U.penalty. Laval) + means that the technique Hiérarchie improves de mémoire C. factor, Gagné and blank 60 / 93 Partie V Technologies de mémoires GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 61 / 93 Technologies de mémoires Composantes de la latence de la mémoire I I Temps d’accès : temps entre une requête de lecture et la livraison de la donnée Temps de cycles : temps minimum entre deux requêtes Différentes technologies de mémoire vive I DRAM (dynamic RAM) : utilisée pour la mémoire vive F F I Doit être rafraichie après chaque lecture : temps de cycle significatif Emphase sur le rapport capacité/coût SRAM (static RAM) : utilisée pour les caches F F N’a pas besoin d’être rafraichie après lecture (temps de cycle faible) Emphase sur la vitesse GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 62 / 93 DRAM Un transistor par bit Chaque bit doit être rafraichi périodiquement Mémoire organisée en matrice Adressage en deux étapes I I Lecture d’une ligne (associé à la latence) Lecture d’une colonne (associé à la largeur de bande) Organisation interne : puce de 64 Mo est en fait 64 banques de 1 Mo (1024 b × 1024 b) GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 63 / 93 obe (RAS). The other half of the address, sent during the column access str Organisation de DRAM AS), follows it. These names come from the internal chip organization, s e memory is organized as a rectangular matrix addressed by rows and colum Word line Data in Memory array (16,384 × 16,384) Bit line ... Row decoder A0 . . . A13 Address buffer Sense amps and I/O D Data out Column decoder 14 Q Storage cell gure 5.12 Internal organization of a 64M bit DRAM. DRAMs often use bank emory arrays internally and selectHiérarchie between them. For example, instead of one 16 GIF-3000 (U. Laval) de mémoire C. Gagné 64 / 93 Progression de technologie DRAM 5.3 Memory Technology and Optimizations ■ 313 Row access strobe (RAS) Year of introduction Chip size Slowest DRAM (ns) Fastest DRAM (ns) Column access strobe (CAS)/ data transfer time (ns) Cycle time (ns) 1980 64K bit 180 150 75 250 1983 256K bit 150 120 50 220 1986 1M bit 120 100 25 190 1989 4M bit 100 80 20 165 1992 16M bit 80 60 15 120 1996 64M bit 70 50 12 110 1998 128M bit 70 50 10 100 2000 256M bit 65 45 7 90 2002 512M bit 60 40 5 80 2004 1G bit 55 35 5 70 2006 2G bit 50 30 2.5 60 Figure 5.13 Times of fast and slow DRAMs with each generation. (Cycle time is defined on page 310.) Performance improvement of row access time is about 5% per year. The improvement by a factor of 2 in column access in 1986 accompanied the from NMOS DRAMs to CMOS DRAMs.de mémoire GIF-3000switch (U. Laval) Hiérarchie C. Gagné 65 / 93 Évolution des performances de la DRAM Accès répétés à une même ligne I Utilise un tampon (de 1 Kb à 2 Kb) Interface asynchrone avec contrôleur de la mémoire I Ajout d’un signal pour synchroniser avec contrôleur : Synchronous DRAM (SDRAM) Transferts à la fois sur la montée et la descente de l’horloge : Double Data Rate (DDR) I I SDRAM : 8 octets à 100 MHz = 800 Mo/sec DDR : 8 octets à 100 MHz ×2 = 1.6 Go/sec GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 66 / 93 SRAM Static RAM I I 6 transistors par bit Pas besoin de rafraichir la mémoire Conçu pour la vitesse Comparaison avec SDRAM I I I Capacité SRAM : 4x à 8x plus petite Temps de cycle SRAM : 8x à 16x plus rapide Coût SRAM : 8x à 16x plus chère GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 67 / 93 Partie VI Mémoire virtuelle GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 68 / 93 Mémoire virtuelle Utilité de la mémoire virtuelle I I Permettre l’accès à plus de mémoire que la mémoire physique Processus partageant la même mémoire physique F F F Différentes adresses virtuelles, même adresse physique Mémoire indépendante entre les processus Librairies partagées Organisation de mémoires virtuelles I I I Diviser la mémoire en blocs Allouer les blocs à des processus Blocs peuvent être sur disque (hors la mémoire) Avantages pour les programmes I I I Quantité différente de mémoire selon les systèmes Relocalisation des programmes en mémoire physique Protection des programmes GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 69 / 93 Fonctionnement de la mémoire virtuelle Fonctionnement de la mémoire virtuelle I I I Mémoire devient une cache pour le disque dur Blocs de la « cache » mémoire vive : pages ou segments Défaut de page (page fault) : manquement en mémoire Processeur gère des adresses virtuelles I I Traduction en adresses physiques Gérer par une combinaison matériel/système d’exploitation GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 70 / 93 Review of Memoryde Hierarchy Illustration la mémoire virtuelle Physical address Virtual address 0 A 0 4K B 4K 8K C 8K 12K D 12K 16K Virtual memory C A Physical main memory 20K 24K B 28K D Disk Figure C.18 The logical program in its contiguous virtual address space is shown on the left. It consists of four pages A, B,Hiérarchie C, and de D.mémoire The actual location of threeC.ofGagné the blocks GIF-3000 (U. Laval) 71 / 93 Comparaison cache et mémoire virtuelle C.4 Virtual Memory ■ C-41 Parameter First-level cache Virtual memory Block (page) size 16–128 bytes 4096–65,536 bytes Hit time 1–3 clock cycles 100–200 clock cycles Miss penalty 8–200 clock cycles 1,000,000–10,000,000 clock cycles (access time) (transfer time) (6–160 clock cycles) (800,000–8,000,000 clock cycles) (2–40 clock cycles) (200,000–2,000,000 clock cycles) Miss rate 0.1–10% 0.00001–0.001% Address mapping 25–45 bit physical address to 14–20 bit cache address 32–64 bit virtual address to 25–45 bit physical address Figure C.19 Typical ranges of parameters for caches and virtual memory. Virtual memory parameters represent increases of 10–1,000,000 times over cache parameters. Normally first-level caches contain at most 1 MB of data, while physical memory contains 256 MB to 1 TB. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 72 / 93 Différences entre mémoire virtuelle et cache Manquement de bloc/page I I Cache : matériel choisit le bloc à remplacer M.V. : système d’exploitation gère le manquement F Pénalité d’échec énorme Adressage I I Cache : indépendant de l’architecture du processeur (jeu d’instructions) M.V. : architecture du processeur en détermine la grandeur maximale Espace secondaire I I Cache : rôle unique, dédiée M.V. : disque magnétique aussi utilisé pour le système de fichiers GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 73 / 93 mally first-level caches contain at most 1 MB of data, while physical memor 256 MB to 1 TB. vs segmentation Pagination 2 Code Data Paging ■ Appendix C Review of Memory Hierarchy Segmentation Page Segment Programmer visible? Invisible to application programmer May be visible to application programmer Replacing a block Trivial (all blocks are the same size) Hard (must find contiguous, variable-size, unused portion of main memory) re C.20 Example ofaddress how paging and segmentation divide a program. Words per One Two (segment and offset) s, and those Memory withusevariable-size blocks, called segments. Pages are typ inefficiency Internal fragmentation External fragmentation (unused (unused portion of page) pieces of main memory) d at 4096 to 8192 bytes, while segment size varies. The largest segmen Efficient disk traffic Yes (adjust page size to always (small segments may 16 and Not access2time transfer justto a few bytes) ed on any processor rangesbalance from bytes up 232 bytes; the smalles transfer time) t is 1 byte. Figure C.20 shows how the two approaches might divide Figure C.21 Paging versus segmentation. Both can waste memory, depending on the block size and how well the segments fit together in main memory. Programming landata. GIF-3000 (U.guages Laval)with unrestricted pointers Hiérarchie mémoire C. Gagné 74 / 93 requiredeboth the segment and the address to be Gestion de la mémoire virtuelle Placement de page en mémoire I I Pénalité de manquement énorme Associativité totale pratiquement toujours utilisée Identifier si une page est en mémoire I Table de pages Politique de remplacement (lors de manquement) I Remplacer la page utilisée la moins récemment (LRU) F I Pénalité de manquement énorme Bit de références pour monitorer l’utilisation de pages Écriture de données I Réécriture est toujours utilisée F I Accès au disque très long, écriture simultanée irréaliste Utilise des bits de modification (bits sales) GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 75 / 93 C.4 Table des pages Virtual Memory ■ C-43 Virtual address Virtual page number Page offset Main memory Page table Physical address gure C.22 The mapping of a virtual address to a physical address via a page table. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 76 / 93 Table des pages Table des pages : lien entre adresses virtuelles et physiques I I I Adresse virtuelle : numéro de page + déplacement Indexation par numéro de page des adresses physiques Adresses virtuelles de 32 b, pages de 4 Ko, 4 o par entrée : table de 232 /212 × 22 = 222 , soit 4 Mo Table inversée I I Contient que les adresses des pages en mémoire Mémoire de 512 Mo, table de 512 Mo / 4 Ko × 8 = 1 Mo Effet de la dimension des pages I Grandes pages F F F I Réduit taille de la table de pages Amortit latence d’accès au disque Augmente localité Petite pages F F F Réduit les temps de transfert Réduit fragmentation Réduit temps de démarrage de petit processus GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 77 / 93 Traduction d’adresses Nombre d’accès pour accéder à une donnée I I I Table des pages placée en mémoire, car volumineuse (typiquement 1 Mo à 4 Mo) Un accès pour obtenir adresse physique à partir d’adresse virtuelle Un accès pour lire la donnée à partir de l’adresse physique Réduire les temps d’accès : cache des adresses virtuelles I I I Tampon de traduction anticipée (translation look-aside buffer, TLB) Indexe les adresses physiques les plus utilisées selon les adresses virtuelles Réside dans la puce du microprocesseur GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 78 / 93 TLB de l’Opteron Virtual page number <36> 1 C.4 Virtual Memory ■ C-45 Page offset <12> 2 <1> V R/W U/S <1> <1> <36> D A Tag <28> Physical address (Low-order 12 bits of address) <12> 3 40:1 mux <28> 4 40-bit physical address (High-order 28 bits of address) Figure C.23 Operation of the Opteron data TLB during address translation. The four steps of a TLB hit are shown as circled numbers. This TLB has 40 entries. Section C.5 describes the various protection and access fields of an Opteron page table entry. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 79 / 93 C.5 Protection and Examples of Virtual Memory Exemple de hiérarchie de mémoire ■ C-47 Virtual address <64> Page offset <13> Virtual page number <51> TLB tag compare address <43> TLB index <8> L1 cache index <7> Block offset <6> To CPU TLB tag <43> TLB data <28> L1 cache tag <43> L1 tag compare address <28> =? =? L1 data <512> To CPU Physical address <41> L2 tag compare address <19> L2 cache index <16> Block offset <6> To CPU L2 cache tag <19> L2 data <512> =? To L1 cache or CPU Figure (U. C.24Laval) The overall picture of a hypothetical memory hierarchy going from virtual address to C. L2 Gagné cache GIF-3000 Hiérarchie de mémoire 80 / 93 Protection de mémoire Processus : programme + états + ressources pour exécution Changement de contexte : exécution passe d’un processus à l’autre I I Transparent au programme Géré par le matériel et système d’exploitation F F Matériel : sauvegarde et restauration état du processeur Système d’exploitation : évite toutes interférence entre processus Gestion facile et sure de changement de contexte I I Écrire information sur processus préempté sur disque Beaucoup trop long en pratique Solution réaliste : partition de la mémoire en processus I Requiert mécanismes de protection de la mémoire GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 81 / 93 Protection des processus Chaque page a une adresse de base et une limite supérieure I I I Vérification de validité d’une adresse mémoire : base < adresse mémoire < limite Approche simple, base et limite dans des registres Registres base et limite doivent être protégés Certains parties de l’état du processeur ne doit pas être accessibles par tous les processus I I Processus utilisateur : accès limités Processus du système d’exploitation : tous accès permis GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 82 / 93 Protection et mémoire virtuelle Ajout de champs de permission écriture/lecture, utilisateur/système aux pages I Vérification des protections par le matériel Protection entre les processus : différentes pages pour chaque processus I I Adresses virtuelles différentes pour chaque processus peuvent pointer à la même adresse physique Programme utilisateur ne peut pas modifier table des pages GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 83 / 93 Résumé sur mémoire virtuelle Avantages de la mémoire virtuelle I I I Relocalisation de la mémoire Protection Plus de mémoire disponible Traduction des adresses virtuelles I I I Espace virtuel large traduit à espace physique plus petit Table de pages pour faire la traduction TLB : cache pour la table GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 84 / 93 Partie VII Exemple : AMD Opteron GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 85 / 93 Cache sur Opteron Cache de donnée de niveau 1 I I I I I Cache de donnée de 64 Ko, organisée en blocs de 64 o Associativité à 2 voies Emplacement selon bloc moins récemment utilisé (LRU) Réécriture lors d’écriture en cache Écriture allouée en cas de manquement en écriture Adressage I I Adressage virtuel sur 48 bits (extensible jusqu’à 64 bits) Traduction en adresses physiques de 40 bits F F F F Adresse de bloc de 34 bits Index de bloc sur 9 bits ( 65536 = 512 = 29 ) 64×2 Donc, étiquettes sur 34-9=25 bits Déplacement de 6 bits (64 = 26 ) GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 86 / 93 C.1 Introduction Organisation de la cache dans Opteron Block Block address offset <25> <9> <6> Index Tag Valid <1> (512 blocks) C-13 CPU address Data Data in out Tag <25> Data <64> 2 3 (512 blocks) 1 ■ =? 2 3 =? 2:1 mux 4 Victim buffer Lower-level memory Figure C.5 The GIF-3000 (U. Laval) organization of the data cache in the Opteron microprocessor. The Hiérarchie de mémoire C. Gagné 87 / 93 Performances de la cache de données Accès de données en cache : lecture en 2 cycles I I I I Lecture de deux étiquettes de l’ensemble associé à l’adresse Comparaison de l’étiquette de l’adresse avec étiquettes de l’ensemble Vérification de la validité des blocs Lecture/écriture de la donnée en cache Accès hors cache I I I I Latence de 7 cycles pour les 8 premiers octets 2 cycles de plus pour chaque 8 octets restant du bloc Réécriture : blocs modifiées et remplacés mis dans tampon des victimes 8 blocs possibles dans tampon des victimes GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 88 / 93 Cache d’instructions Cache d’instructions distincte de la cache de données I I Permet de doubler la bande passante Peut permettre des caches avec caractéristiques différentes C.2 Cache Performance ■ C(capacité, -15 taille de blocs, associativité) Size Instruction cache 8 KB 8.16 44.0 63.0 16 KB 3.82 40.9 51.0 32 KB 1.36 38.4 43.3 64 KB 0.61 36.9 39.4 128 KB 0.30 35.3 36.2 256 KB 0.02 32.6 32.9 Data cache Unified cache Figure C.6 Miss per 1000 instructions for instruction, data, and unified caches of difsizes. une The percentage of instruction references about Opteronferent utilise cache d’instructions de is64 Ko74%. The data are for two-way associative caches with 64-byte blocks for the same computer and benchmarks as Figure C.4. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 89 / 93 5.6 Putting It Allde Together: AMD Opteron Memory Hierarchy Organisation de la mémoire l’Opteron ■ 327 Virtual address <48> Virtual page number <36> TLB tag <36> TLB data <28> Page offset <12> L1 cache index <9> Block offset <6> To CPU L2 TLB tag compare address <29> L2 TLB index <7> L1 cache tag <25> L2 TLB tag <29> =? L2 TLB data <28> L1 data <512> To CPU Physical address <40> =? L2 tag compare address <24> L2 cache index <10> Block offset <6> To CPU L2 cache tag <24> L2 data <512> =? To L1 cache or CPU Figure 5.18 The virtual address, physical address, indexes, tags, and data blocks for the AMD Opteron caches and TLBs. Since instruction and data hierarchies are symmetric, fullyGagné associaGIF-3000 (U. the Laval) Hiérarchie de mémoirewe only show one. The L1 TLB is C. 90 / 93 1 Chapter Five Memory Hierarchy Design Comparaison P4 et Opteron 0 gzip vpr gcc mcf crafty wupwise SPECint2000 swim mgrid applu mesa SPECfp2000 7 Ratio of MPI : Pentium 4/ Opteron Figure 5.22 Ratio of misses per instruction for Pentium 4 versus Opteron. Bigger 6 a higher miss rate for Pentium 4. The 10 programs are the first 5 SPECint2000 means D cache: P4/Opteron and the first 5 SPECfp2000. (The two processors and their memory hierarchies are L2 cache: P4/Opteron 5 described in the table in the text.) The geometric mean of the ratio of performance of the 5 SPECint programs on the two processors is 1.00 with a standard deviation of 1.42; 4 the geometric mean of the performance of the 5 SPECfp programs suggests Opteron is 1.15 times faster, with a standard deviation of 1.25. Note the clock rate for the Pentium 3 4 was 3.2 GHz in these experiments; higher-clock-rate Pentium 4s were available but not used in this experiment. Figure 5.10 shows that half of these programs benefit sig2 nificantly from the prefetching hardware of the Pentium 4: mcf, wupwise, swim, mgrid, and applu. 1 0 sequences are different as are the memory hierarchies. The mgrid following tablemesa sumswim applu gzip vpr gcc mcf crafty wupwise marizes the two memory hierarchies: SPECint2000 SPECfp2000 Processor Pentium 4 (3.2 GHz) Opteron (2.84 GHz) Figure 5.22 Ratio of misses per instruction for Pentium versus Opteron. Bigger means a higher miss rate for Pentium 4. The 10 2-way programs are the64first Data cache 8-way associative, 16 KB, associative, KB,5 SPECint2000 and the first 5 SPECfp2000. and block their memory hierarchies are 64-byte block(The two processors 64-byte described in the table in the text.) The geometric mean of the ratio of performance of L2 cache 8-way associative, 2 MB, 16-way associative, 1 MB, the 5 SPECint programs onblock, the two processors 1.00 with a standard deviation of 1.42; 128-byte inclusive of is 64-byte block, exclusive of D cache the geometric mean of the performance of the 5 SPECfp programs suggests Opteron is D cache 1.15 times faster, with a standard deviation of 1.25. Note the clock rate for the Pentium Prefetch 8 streams to L2 1 stream to L2 4 was 3.2 GHz in these experiments; higher-clock-rate Pentium 4s were available but not Although used in thisthe experiment. 5.10 shows half of these benefit sigPentium 4Figure has much higherthat associativity, theprograms four times larger GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 91 / 93 Adressage virtuel Opteron C-54 Appendix C Reviewdans of Memory Hierarchy ■ 63 48 47 000 . . . 0 or 111 . . . 1 Page-map L4 base addr (CR3) 39 38 Page-map L4 30 29 Page-dir-ptr 21 20 Page-directory 12 11 Page-table 0 Page offset + Page-map L4 table Page-mp entry Page-directory pointer table Page-directory table + Page-dir-ptr entry + Page table Page-dir entry + Page-table entry Physical address Physical page frame number Page offset Main memory Figure C.26 The mapping of an Opteron virtual address. The Opteron virtual memory implementation with four GIF-3000 Laval) an effective physicalHiérarchie de mémoire Gagnéso each 92 level / 93 page table levels (U. supports address size of 40 bits. Each page table has 512 C. entries, the primary differences being L2 cache size, die size, processor clock rate, and instructions issued per clock. The design decisions at all these levels interact, and the architect must take the whole system view to make wise decisions. The primary challenge for the memory hierarchy designer is in choosing parameters that work well together, Caches de processeurs modernes MPU Instruction set architecture AMD Opteron Intel Pentium 4 IBM Power 5 Sun Niagara 80x86 (64b) 80x86 PowerPC SPARC v9 server Intended application desktop desktop server CMOS process (nm) 90 90 130 90 Die size (mm2) 199 217 389 379 Instructions issued/clock 3 3 RISC ops 8 1 Processors/chip 2 1 2 8 Clock rate (2006) Instruction cache per processor Latency L1 I (clocks) Data cache per processor Latency L1 D (clocks) TLB entries (I/D/L2 I/L2 D) Minimum page size On-chip L2 cache 2.8 GHz 3.6 GHz 2.0 GHz 1.2 GHz 64 KB, 2-way set associative 12000 RISC op trace cache (~96 KB) 64 KB, 2-way set associative 16 KB, 1-way set associative 2 4 1 1 64 KB, 2-way set associative 16 KB, 8-way set associative 32 KB, 4-way set associative 8 KB, 1-way set associative 2 2 2 1 40/40/512/512 128/54 1024/1024 64/64 4 KB 4 KB 4 KB 8 KB 2 x 1 MB, 16-way set associative 2 MB, 8-way set associative 1.875 MB, 10-way set associative 3 MB, 2-way set associative L2 banks 2 1 3 4 Latency L2 (clocks) 7 22 13 22 I, 23 D — Off-chip L3 cache — — 36 MB, 12-way set associative (tags on chip) Latency L3 (clocks) — — 87 — Block size (L1I/L1D/L2/L3, bytes) 64 64/64/128/— 128/128/128/256 32/16/64/— Memory bus width (bits) Memory bus clock Number of memory buses 128 64 64 128 200 MHz 200 MHz 400 MHz 400 MHz 1 1 4 4 Figure 5.28 Memory hierarchy and chip size of desktop and server microprocessors in 2005. GIF-3000 (U. Laval) Hiérarchie de mémoire C. Gagné 93 / 93