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