Upload
jules-billon
View
104
Download
1
Embed Size (px)
Citation preview
1
L’informatique : une grande cuisine
2
Les caches
Dans l’exemple de la bibliothèque, le bureau fait office de cache.
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.
MémoireCentraleMémoireCentraleUCUC
3
Hiérarchie mémoire
mots Blocs de mots
Pages de
mots
UCUC CacheCache RAMRAM DisqueDisque
100 Ko 512 Ko 64-128 Méga 10 Téra
5 ns 10-12 ns 60 ns 8 ms
4
Problématique
5
Référence à un mot Xn dans le cache
MémoireCentraleMémoireCentraleUCUC
X4
X1
Xn-2
Xn-1
X5
X3
X4
X1
Xn-2
Xn-1
X5
X3
6
Référence à un mot Xn dans le cache
MémoireCentraleMémoireCentraleUCUC
X4
X1
Xn-2
Xn-1
X5
X3
X4
X1
Xn-2
Xn-1
X5
X3
UC veut faire référence à Xn
1
7
Référence à un mot Xn dans le cache
Recherche de Xn dans le cache
MémoireCentraleMémoireCentraleUCUC
X4
X1
Xn-2
Xn-1
X5
X3
X4
X1
Xn-2
Xn-1
X5
X3
2
8
Référence à un mot Xn dans le cache
Recherche de Xn dans le cache
MémoireCentraleMémoireCentraleUCUC
X4
X1
Xn-2
Xn-1
X5
X3
X4
X1
Xn-2
Xn-1
X5
X3
Xn
Défau
t de
cach
e
2
9
Référence à un mot Xn dans le cache
Extraction de Xn dans la mémoireInsertion dans le cache
MémoireCentraleMémoireCentraleUCUC
X4
X1
Xn-2
Xn-1
X5
Xn
X3
X4
X1
Xn-2
Xn-1
X5
Xn
X3
3
10
Bilan : Référence à un mot Xn
X4
X1
Xn-2
Xn-1
X5
Xn
X3
Après la référence à Xn
X4
X1
Xn-2
Xn-1
X5
X3
Avant la référence à Xn
11
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?
12
Question 1 :
• Où placer un bloc?
• Caches à correspondances directes
• Caches totalement associatifs
• Caches associatifs par ensemble
13
web
• cachespentium3
14
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
Cette structure du cache est dite à correspondance directe.
adresse
Rappel : Modulo n = reste de la division par n
15
Rappel modulo
16
Rappel modulo
27
27 mod 8 =3
17
Cache à correspondance directe 8 entrées
MémoireCentraleMémoireCentraleUCUC
Exemple :
18
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
AdresseDonnéeAdresse Donnée
?
19
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1 mod 8 = 1
20
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
21
Simulateur
22
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
Aux 4 adresses 00001, 01001, 10001, 11001
correspond la même entrée d’index (adresse dans le cache)
001 du cache
Aux 4 adresses 00001, 01001, 10001, 11001
correspond la même entrée d’index (adresse dans le cache)
001 du cache
23
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
24
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
PROBLEME :
Un emplacement dans le cache peut appartenir à plusieurs emplacements mémoire.Comment savoir si la donnée correspond au mot demandé ?
25
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
Réponse :
Une Etiquette permet de savoir si le mot demandé est dans le cache
DonnéeEtiquette
26
Cache à correspondance directe 8 entrées
UCUC
000
001
010
011
100
101
110
111 11001
11101
10001
10101
01001
01101
00001
00101
Index Etiquette donnée
00
01
27
Question 1 :
• Où placer un bloc?
Caches à correspondance directe
• Caches totalement associatifs
Caches associatifs par ensemble
28
Les caches totalement associatifs
Si un bloc peut être placé n’importe où dans le cache, celui ci est totalement associatif.
29
Les caches totalement associatifs
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
?
30
Les caches totalement associatifs
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
31
Simulateur
Simulateurdecache
32
Question 1 :
• Où placer un bloc?
Caches à correspondance directe
Caches totalement associatifs
• Caches associatifs par ensemble
33
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
34
Cache associatif par ensemble de 4
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
E0
E1
E2
E3
35
Cache associatif par ensemble de 4
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
17 mod 4 = 1
E0
E1
E2
E3
36
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.
37
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?
38
Organisation de la mémoire principale
0 1 2 3
4 5 6 7
8 9 10 11
048
Adresse du mot Adresse de l’octet
39
Organisation de la mémoire principale
4 5 6 7
048
Adresse du mot Adresse de l’octet
0 1 2 3
4 5 6 7
8 9 10 11
Mémoire
Transfert du mot de 32 bits
Pour se déplacer dans le bloc il faut 2 bits d’adresse, mais tous les octetsOnt le même index.
MémoireMémoire
CacheCache
40
Comment trouver un bloc ?
Quelle est la relation de l’adresse UC avec le cache ?
Numéro de l’ensemble
Déplacement dans le bloc
Cache associatif par ensemble de bloc
Etiquette
Index
Déplacement dans le bloc
Cache direct
Etiquette
Taille =Log2(blocCache)-1
Index
Remarque : en augmentant d’un facteur de deux l’associativité on diminue de 1 bit la taille de l’index.
41
Cache à correspondance directe
Validité Etiquette donnéeIndex 0
12..................10221023
Succès
42
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
Etiquette Index
Validité Etiquette donnéeIndex 0
12..................10221023
Adresse d’octet
32
UCUC
43
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
Etiquette Index
Validité Etiquette donnéeIndex 0
12..................10221023
Adresse d’octet
32
UCUC
44
Compare l’étiquette
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Etiquette Index
Validité Etiquette donnéeIndex 0
12..................10221023
Adresse d’octet
=
UCUC
45
Le mot est délivré au processeur.
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Etiquette Index
Validité Etiquette donnéeIndex 0
12..................10221023
Adresse d’octet
32
SUCCES
UCUC
ET
46
En cas de défaut
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Etiquette Index UCUC
Mémoire
CacheDéfaut/succès
Donnée
Donnée
Adresse
UC
47
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 :
48
Exemple : 16,...,19,...,17
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
49
Exemple : 16,...,19,...,17
UC16
UC16
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1610000
Etiquette Index
50
Exemple : 16,...,19,...,17
UC16
UC16
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1610000
Etiquette Index
DEFAUT
51
Exemple : 16,...,19,...,17
UC16
UC16
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1610000
Etiquette Index
10
52
Exemple : 16,...,19,...,17
UC19
UC19
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1910011
Etiquette Index
53
Exemple : 16,...,19,...,17
UC19
UC19
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
Etiquette Index
DEFAUT
1910011
54
Exemple : 16,...,19,...,17
UC19
UC19
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
Etiquette Index
10
1910011
55
Exemple : 16,...,19,...,17
UC17
UC17
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
Etiquette Index
10
1710001
DEFAUT
56
Exemple : 16,...,19,...,17
UCUC
000
001
010
011
100
101
110
111
10
Bilan :3 défauts
57
J’ai une idée !
Ce Dupont ....Dans mes bras= Augmenter la taille des blocs
58
Caches à 4 mots mémoire
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
59
Caches à 4 mots mémoire
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
index adresse dans le blocremarque : pas d’étiquette
2 bits3 bits
60
Exemple : 16,...,19,...,17
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
index adresse dans le blocremarque : pas d’étiquette
100 00
16DEFAUT
61
Exemple : 16,...,19,...,17
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1610000
index adresse dans le blocremarque : pas d’étiquette
16 16 17 18 19
On ramène les ref :16,17,18,19
62
Exemple : 16,...,19,...,17
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1910011
index adresse dans le blocremarque : pas d’étiquette
19 16 17 18 19
succès
63
Exemple : 16,...,19,...,17
UCUC
000
001
010
011
100
101
110
11111001
11101
10001
10101
01001
01101
00001
00101
1710001
index adresse dans le blocremarque : pas d’étiquette
17 16 17 18 19
succès
64
Exemple : 16,...,19,...,17
• Bilan : 1 seul défaut survient pour trois références.
• SUPER : JE SUIS LE MEILLEUR
65
Exemple : 16,...,19,...,17
• Bilan : 1 seul défaut survient pour trois références.
• SUPER : JE SUIS LE MEILLEUR
DUPONT and Co
66
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
67
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 ?
68
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.
69
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.
70
Les caches par ensemble
71
Par ensemble (256) de 4 blocs
V E DIndex
012..................253254255
V E D V E D V E D
Succès Donnée
Multiplexeur 4 par 1
4 Blocs
256 Ensembles
72
Par ensemble (256) de 4 blocs
V E DIndex
012..................253254255
V E D V E D V E D
Succès Donnée
Multiplexeur 4 par 1
4 Blocs
256 Ensembles
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Adresse d’octet
UCUC
73
Par ensemble (256) de 4 blocs
V E DIndex
012..................253254255
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Adresse d’octet
V E D V E D V E D
Succès Donnée
Multiplexeur 4 par 1
822
UCUC
74
Par ensemble (256) de 4 blocs
V E DIndex
012..................253254255
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Adresse d’octet
V E D V E D V E D
Succès Donnée
Multiplexeur 4 par 1
822
75
Par ensemble (256) de 4 blocs
V E DIndex
012..................253254255
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Adresse d’octet
V E D V E D V E D
Succès Donnée
Multiplexeur 4 par 1
822
UCUC
76
Les étiquettes en fonction du type de caches
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Adresse d’octet
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Etiquette Index
31 30 29 28 ...............16 15 14 13 12 11 10 9 ...4 3 2 1 0
Adresse d’octet
Etiquette
Etiquette
Index
Totalement associatif
Associatif par ensemble de bloc
Correspondance directe
Pour des caches de même dimension :
77
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?
78
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.
79
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.
80
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?
81
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é.
82
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
83
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 ?
84
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.
85
Organisation des mémoires
UC
Cache
Bus
Mémoire
UC
Cache
Bus
Mémoire
UC
Cache
Bus
BM
BM
BM
BM
86
Organisation d’une mémoire entrelacée
Adresse externe a=4b
b b b b
Mot 1 Mot 2 Mot 3 Mot 4
0 1 2 34 5 6 78 9 . ..
Mém
oire entrelacée
87
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).
88
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
89
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 = (Nb. d’inst/programmes)mémoire *(Nb. de défauts/instruction)
*Coût défaut
Cycles d’attente = (Nb. d'accès par programme)mémoire *(taux de défaut)
*Coût défaut
90
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.
91
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 deConception
Augmenter la taille
Augmenter l’associativité
Augmenter la taille de bloc
Effet sur letaux de défauts
Réduit les défauts de capacité
Réduit le taux de défaut dû aux défauts de conflit
Réduit le taux de défaut pour un large éventail de tailles de bloc
Effet négatif possiblesur les performances
Peut augmenter le Tpsd’accès
Peut augmenter le temps d’accès
Peut augmenter le coût de défaut
92
Caches : taille des blocs
Coût de l’échec
Tps transfert
Tps d’accès
Taille du bloc Taille du bloc
Taille du bloc
Taux d’échec
T ps d’accès
Augmenter la taille du cache indéfiniment