Les caches

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