Référence à un mot Xn dans le cache

Download Report

Transcript Référence à un mot Xn dans le cache

Référence à un mot Xn dans le cache
X4
X1
Xn-2
UC
Xn-1
Mémoire
Centrale
X5
X3
Caches 1
Référence à un mot Xn dans le cache
1
X4
X1
Xn
Xn-2
UC
Xn-1
Mémoire
Centrale
X5
UC veut faire référence à Xn
X3
Caches 2
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
Caches 3
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
Caches 4
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
Caches 5
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
Caches 6
Questions à résoudre
•
•
•
•
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?
Caches 7
Question 1 :
Où placer un bloc?
• Caches à correspondances directes
• Caches totalement associatifs
• Caches associatifs par ensemble
Caches 8
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
Caches 9
Cache à correspondance directe 8 entrées
Exemple :
UC
Mémoire
Centrale
Caches 10
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
Caches 11
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
Caches 12
Cache à correspondance directe 8 entrées
00001
000
UC
001
00101
010
01001
011
100
01101
101
10001
110
10101
111
11001
11101
Caches 13
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
Caches 14
Cache à correspondance directe 8 entrées
00001
000
UC
001
00101
010
01001
011
100
01101
101
10001
110
10101
111
11001
11101
Caches 15
Cache à correspondance directe 8 entrées
00001
000
001
00101
010
01001
:
UCPROBLEME 011
01101
100 dans le cache peut appartenir à
Un emplacement
plusieurs emplacements
mémoire.
10001
101
Comment savoir si la donnée correspond au mot
demandé ? 110
10101
111
11001
11101
Caches 16
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 Étiquette permet de savoir
si le mot demandé est dans
11101le
cache
Caches 17
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
Caches 18
Question 1 :
• Où placer un bloc?
Caches à correspondance directe
• Caches totalement associatifs
Caches associatifs par ensemble
Caches 19
Les caches totalement associatifs
Si un bloc peut être placé n’importe où dans le cache,
celui ci est totalement associatif.
Caches 20
Les caches totalement associatifs
000
UC
?
00001
001
00101
010
01001
011
100
01101
101
10001
110
10101
111
11001
11101
Caches 21
Les caches totalement associatifs
00001
000
UC
001
00101
010
01001
011
100
01101
101
10001
110
10101
111
11001
11101
Caches 22
Question 1 :
• Où placer un bloc?
Caches à correspondance directe
Caches totalement associatifs
• Caches associatifs par ensemble
Caches 23
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 (=adresse) modulo le nombre d’ensembles dans
le cache
Caches 24
Cache associatif par ensemble de 2
00001
Et
0
UC
D
Et
D
00101
01001
1
2
01101
3
10001
Ensembles
10101
11001
11101
Caches 25
Cache associatif par ensemble de 2
00001
Et
0
UC
D
Et
D
00101
01001
1
2
01101
3
10001
10101
17 mod 4 = 1
11001
11101
Caches 26
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.
Caches 27
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?
Caches 28
Organisation de la mémoire principale
Rappels :
Adresse de l’octet
Adresse du mot
0
1
2
3
4
4
5
6
7
8
8
9
10
11
0
Caches 29
Organisation de la mémoire principale
Adresse de l’octet
Adresse du mot
0
1
2
3
4
4
5
6
7
8
8
9
10
11
6
7
0
Mémoire
Transfert du mot de 32 bits
4
5
Cache
Pour me déplacer dans le bloc il faut 2 bits d’adresse
Caches 30
Comment trouver un bloc ?
Réponse :
Quelle est la relation de l’adresse UC avec le cache ?
Cache direct
Etiquette
Index
Déplacement
dans le bloc
Taille =Log2(blocCache)-1
Cache associatif par ensemble de bloc
Etiquette
N° ensemble
Déplacement
dans le bloc
Remarque : en augmentant d’un facteur de deux l’associativité on diminue de
1 bit la taille de l’index.
Caches 31
Exemple : Cache à correspondance directe
Succès
Validité
Index 0
1
2
...
...
...
...
...
...
1022
1023
Etiquette
donnée
Caches 32
UC veut 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
Caches 33
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
Caches 34
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
=
Caches 35
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
Caches 36
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
Cache
Défaut/succès
Adresse
Donnée
Mémoire
Un défaut de cache génère une suspension (ou attente),
semblable aux suspension de pipeline
Caches 37
Exemple : 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
Caches 38
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
Caches 39
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
Caches 40
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
Caches 41
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
Caches 42
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
Caches 43
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?
Caches 44
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 = de LRU.
Caches 45
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.
Caches 46
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?
Caches 47
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é.
Caches 48
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 :
Caches 49
Exemple : 16,...,19,...,17
00001
000
UC
001
00101
010
01001
011
100
01101
101
10001
110
10101
111
11001
11101
Caches 50
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
Caches 51
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
Caches 52
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
Caches 53
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
Caches 54
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
Caches 55
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
Caches 56
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
Caches 57
Exemple : 16,...,19,...,17
000
Bilan :
3 défauts
001
010
UC
011
10
100
101
110
111
Caches 58
Comment diminuer les défauts :
Ce Dupont ....
Dans mes bras
= Augmenter la taille des blocs
THE BOSS
Caches 59
Caches à 4 mots mémoire
00001
000
UC
001
00101
010
01001
011
01101
100
101
10001
110
10101
111
11001
11101
Caches 60
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
Caches 61
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
Caches 62
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
Caches 63
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
Caches 64
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
Caches 65
Exemple : 16,...,19,...,17
• Bilan : 1 seul défaut survient pour trois références.
SUPER : JE SUIS LE MEILLEUR
Caches 66
Exemple de réalisation
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
...
...
...
...
...
...
254
255
Etiqu
donnée 128 bits
Adresse dans le bloc
32
Mux
Caches 67
Exemple : 16,...,19,...,17
• Bilan : 1 seul défaut survient pour trois références.
• SUPER : JE SUIS LE MEILLEUR
DUPONT and Co
Caches 68
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
Caches 69
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 ?
Caches 70
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.
Caches 71
UC
UC
UC
Cache
Cache
Cache
Bus
Bus
Bus
Mémoire
Mémoire
B
M
B B B
M M M
Caches 72
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
Caches 73
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).
Caches 74
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
Caches 75
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
Caches 76
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.
Caches 77
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
Caches 78
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
Caches 79
Caches 80