Title: L
1Linformatique une grande cuisine
2Les caches
Dans lexemple 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 lUC et la
mémoire principale. Lélément de base est le bloc.
Mémoire Centrale
UC
3Hiérarchie mémoire
100 Ko
512 Ko
64-128 Méga
10 Téra
Disque
UC
Cache
RAM
5 ns
10-12 ns
60 ns
8 ms
mots
Blocs de mots
Pages de mots
4Problématique
5Référence à un mot Xn dans le cache
X4 X1 Xn-2 Xn-1 X5 X3
Mémoire Centrale
UC
6Référence à un mot Xn dans le cache
X4 X1 Xn-2 Xn-1 X5 X3
Mémoire Centrale
UC
UC veut faire référence à Xn
7Référence à un mot Xn dans le cache
X4 X1 Xn-2 Xn-1 X5 X3
Mémoire Centrale
UC
Recherche de Xn dans le cache
8Référence à un mot Xn dans le cache
X4 X1 Xn-2 Xn-1 X5 X3
Mémoire Centrale
UC
Xn
Défaut de cache
Recherche de Xn dans le cache
9Référence à un mot Xn dans le cache
X4 X1 Xn-2 Xn-1 X5 Xn X3
Mémoire Centrale
UC
Extraction de Xn dans la mémoire Insertion dans
le cache
10Bilan Référence à un mot Xn
X4 X1 Xn-2 Xn-1 X5 Xn X3
X4 X1 Xn-2 Xn-1 X5 X3
Après la référence à Xn
Avant la référence à Xn
11But du cours
- Question 1 Où placer un bloc?
- Question 2 Comment un bloc est-il trouvé ?
- Question 3 Quel bloc remplacé lors dun défaut
? - Question 4 Comment sont traités les écritures?
12Question 1
- Où placer un bloc?
- Caches à correspondances directes
- Caches totalement associatifs
- Caches associatifs par ensemble
13web
14Les caches à correspondance directe
Le moyen le plus simple est dassigner 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
15Rappel modulo
16Rappel modulo
27
27 mod 8 3
17Cache à correspondance directe 8 entrées
Exemple
Mémoire Centrale
UC
18Cache à correspondance directe 8 entrées
?
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
Adresse
Donnée
Adresse
Donnée
19Cache à correspondance directe 8 entrées
00001 00101
000 001 010 011 100 101 110 111
UC
1 mod 8 1
01001 01101
10001 10101
11001 11101
20Cache à correspondance directe 8 entrées
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
21Simulateur
22Cache à correspondance directe 8 entrées
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
Aux 4 adresses 00001, 01001, 10001, 11001
correspond la même entrée dindex (adresse dans
le cache) 001 du cache
10001 10101
11001 11101
23Cache à correspondance directe 8 entrées
000 001 010 011 100 101 110 111
UC
24Cache à correspondance directe 8 entrées
000 001 010 011 100 101 110 111
UC
PROBLEME Un emplacement dans le cache peut
appartenir à plusieurs emplacements
mémoire. Comment savoir si la donnée correspond
au mot demandé ?
25Cache à correspondance directe 8 entrées
Donnée
Etiquette
000 001 010 011 100 101 110 111
UC
Réponse Une Etiquette permet de savoir si
le mot demandé est dans le cache
26Cache à correspondance directe 8 entrées
00001 00101
000 001 010 011 100 101 110 111
01
UC
01001 01101
10001 10101
00
11001 11101
Index Etiquette donnée
27Question 1
- Où placer un bloc?
- Caches à correspondance directe
- Caches totalement associatifs
- Caches associatifs par ensemble
28Les caches totalement associatifs
Si un bloc peut être placé nimporte où dans le
cache, celui ci est totalement associatif.
29Les caches totalement associatifs
?
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
30Les caches totalement associatifs
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
31Simulateur
32Question 1
- Où placer un bloc?
- Caches à correspondance directe
- Caches totalement associatifs
- Caches associatifs par ensemble
33Caches 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 dabord affecté à un ensemble, puis
placé nimporte où dans lensemble. - numéro de lensemble
- numéro de bloc modulo le nombre densembles
dans le cache
34Cache associatif par ensemble de 4
00001 00101
000 001 010 011 100 101 110 111
E0 E1 E2 E3
UC
01001 01101
10001 10101
11001 11101
35Cache associatif par ensemble de 4
00001 00101
000 001 010 011 100 101 110 111
E0 E1 E2 E3
UC
01001 01101
10001 10101
17 mod 4 1
11001 11101
36Alors quel cache est à utiliser ?
- Augmenter le degré dassociativité présente
généralement lavantage de diminuer le taux de
défaut. (Voir TD) - Mais cela a tendance à augmenter le coût et le
temps daccès.
37But du cours
- Question 1 Où placer un bloc?
- Question 2 Comment un bloc est-il trouvé ?
- Question 3 Quel bloc remplacé lors dun défaut
? - Question 4 Comment sont traités les écritures?
38Organisation de la mémoire principale
Adresse de loctet
Adresse du mot
0 1 2 3 4 5 6 7 8 9 10 11
0 4 8
39Organisation de la mémoire principale
Adresse de loctet
Adresse du mot
Mémoire
0 1 2 3 4 5 6 7 8 9 10 11
0 4 8
Mémoire
Transfert du mot de 32 bits
Cache
4 5 6 7
Pour se déplacer dans le bloc il faut 2 bits
dadresse, mais tous les octets Ont le même index.
40Comment trouver un bloc ?
Quelle est la relation de ladresse UC avec le
cache ?
Cache direct
Index
Etiquette
Déplacement dans le bloc
Taille Log2(blocCache)-1
Cache associatif par ensemble de bloc
Index
Etiquette
Déplacement dans le bloc
Numéro de lensemble
Remarque en augmentant dun facteur de deux
lassociativité on diminue de 1 bit la taille de
lindex.
41Cache à correspondance directe
Succès
Validité Etiquette donnée
Index
0 1 2 ... ... ... ... ... ... 1022 1023
42UC veux la donnée qui est à ladresse
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Index
Adresse doctet
Etiquette
Validité Etiquette donnée
Index
0 1 2 ... ... ... ... ... ... 1022 1023
32
43Lindex sélectionne une entrée du cache
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Index
Adresse doctet
Etiquette
Validité Etiquette donnée
Index
0 1 2 ... ... ... ... ... ... 1022 1023
32
44Compare létiquette
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Index
Adresse doctet
Etiquette
Validité Etiquette donnée
Index
0 1 2 ... ... ... ... ... ... 1022 1023
45Le mot est délivré au processeur.
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Index
Adresse doctet
Etiquette
SUCCES
Validité Etiquette donnée
Index
0 1 2 ... ... ... ... ... ... 1022 1023
32
ET
46En cas de défaut
UC
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
47Comment 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 doctets suivantes
soient demandées par un programme
48Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
49Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC 16
01001 01101
10001 10101
16 10000
Etiquette Index
11001 11101
50Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC 16
01001 01101
DEFAUT
10001 10101
16 10000
Etiquette Index
11001 11101
51Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
10
UC 16
01001 01101
10001 10101
16 10000
Etiquette Index
11001 11101
52Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC 19
01001 01101
10001 10101
19 10011
Etiquette Index
11001 11101
53Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC 19
01001 01101
DEFAUT
10001 10101
19 10011
Etiquette Index
11001 11101
54Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC 19
01001 01101
10
10001 10101
19 10011
Etiquette Index
11001 11101
55Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC 17
DEFAUT
01001 01101
10
10001 10101
17 10001
Etiquette Index
11001 11101
56Exemple 16,...,19,...,17
000 001 010 011 100 101 110 111
Bilan 3 défauts
UC
10
57Jai une idée !
Ce Dupont .... Dans mes bras
Augmenter la taille des blocs
58Caches à 4 mots mémoire
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
59Caches à 4 mots mémoire
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
10001 10101
11001 11101
2 bits
3 bits
index
adresse dans le bloc
remarque pas détiquette
60Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
DEFAUT
16
10001 10101
11001 11101
100 00
index
adresse dans le bloc
remarque pas détiquette
61Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
UC
01001 01101
16 17 18 19
16
10001 10101
On ramène les ref 16,17,18,19
16 10000
11001 11101
index
adresse dans le bloc
remarque pas détiquette
62Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
succès
UC
01001 01101
16 17 18 19
19
10001 10101
19 10011
11001 11101
index
adresse dans le bloc
remarque pas détiquette
63Exemple 16,...,19,...,17
00001 00101
000 001 010 011 100 101 110 111
succès
UC
01001 01101
16 17 18 19
17
10001 10101
17 10001
11001 11101
index
adresse dans le bloc
remarque pas détiquette
64Exemple 16,...,19,...,17
- Bilan 1 seul défaut survient pour trois
références. - SUPER JE SUIS LE MEILLEUR
65Exemple 16,...,19,...,17
- Bilan 1 seul défaut survient pour trois
références. - SUPER JE SUIS LE MEILLEUR
DUPONT and Co
66Si nous avons les temps daccès suivants
- 1 cycle dhorloge pour envoyer ladresse
- 10 cycles dhorloge pour chaque accès mémoire
- 1 cycle dhorloge pour envoyer un mot de donnée.
- Total 3 (1101) 36 cycles
67Exemple 16,...,19,...,17
- Reprenons les chiffres précédent
- 1 cycle dhorloge pour envoyer ladresse
- 10 cycles dhorloge pour chaque accès mémoire
- 1 cycle dhorloge pour envoyer un mot de donnée.
- Total 141041 45 cycles
- Le gain nest pas ici enorme !!!!!.
- Comment diminuer ce temps ?
68Tirer 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.
69Encore 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
quun 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.
70Les caches par ensemble
71Par ensemble (256) de 4 blocs
4 Blocs
V E D
V E D
V E D
V E D
Index
0 1 2 ... ... ... ... ... ... 253 254 255
256 Ensembles
Multiplexeur 4 par 1
Succès
Donnée
72Par ensemble (256) de 4 blocs
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Adresse doctet
4 Blocs
V E D
V E D
V E D
V E D
Index
0 1 2 ... ... ... ... ... ... 253 254 255
256 Ensembles
Multiplexeur 4 par 1
Succès
Donnée
73Par ensemble (256) de 4 blocs
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Adresse doctet
22
8
V E D
V E D
V E D
V E D
Index
0 1 2 ... ... ... ... ... ... 253 254 255
Multiplexeur 4 par 1
Succès
Donnée
74Par ensemble (256) de 4 blocs
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Adresse doctet
22
8
V E D
V E D
V E D
V E D
Index
0 1 2 ... ... ... ... ... ... 253 254 255
Multiplexeur 4 par 1
Succès
Donnée
75Par ensemble (256) de 4 blocs
UC
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Adresse doctet
22
8
V E D
V E D
V E D
V E D
Index
0 1 2 ... ... ... ... ... ... 253 254 255
Multiplexeur 4 par 1
Succès
Donnée
76Les é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
Adresse doctet
Etiquette
Index
Totalement associatif
31 30 29 28 ...............16 15 14 13 12 11 10 9
...4 3 2 1 0
Adresse doctet
Etiquette
77But du cours
- Question 1 Où placer un bloc?
- Question 2 Comment un bloc est-il trouvé ?
- Question 3 Quel bloc remplacé lors dun défaut
? - Question 4 Comment sont traités les écritures?
78Quel bloc remplacé lors dun 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.
79Les défauts de caches
- Défauts obligatoires de chargement (défaut de
démarrage à froid). Un bloc accédé pour la
première fois nest pas dans le cache. - Défauts de capacité. Si le cache ne peut contenir
tous les blocs nécessaires au cours de
lexécution dun 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.
80But du cours
- Question 1 Où placer un bloc?
- Question 2 Comment un bloc est-il trouvé ?
- Question 3 Quel bloc remplacé lors dun défaut
? - Question 4 Comment sont traités les écritures?
81Comment sont traités les écritures?
- Lécriture simultanée (ou rangement simultané)
- Linformation 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)
- Linformation est écrite uniquement dans le bloc
du cache. Le bloc modifié du cache est recopié en
mémoire principale uniquement quand il est
remplacé.
82Si nous avons les temps daccès suivants
- 1 cycle dhorloge pour envoyer ladresse
- 10 cycles dhorloge pour chaque accès mémoire
- 1 cycle dhorloge pour envoyer un mot de donnée.
- Total 3 (1101) 36 cycles
83Exemple 16,...,19,...,17
- Reprenons les chiffres précédent
- 1 cycle dhorloge pour envoyer ladresse
- 10 cycles dhorloge pour chaque accès mémoire
- 1 cycle dhorloge pour envoyer un mot de donnée.
- Total 141041 45 cycles
- Le gain nest pas ici énorme !!!!!.
- Comment diminuer ce temps ?
84Tirer 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.
85Organisation des mémoires
UC
UC
Cache
Cache
Bus
Bus
B M
B M
B M
B M
Mémoire
86Organisation dune mémoire entrelacée
Adresse externe a4b
b b b b
0 1 2 3 4 5 6 7 8 9 . . .
Mémoire entrelacée
Mot 1 Mot 2 Mot 3 Mot 4
87Encore 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
quun 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).
88Les performances des caches
- Le temps UC est divisé entre les cycles dhorloge
passés par lUC à exécuter le programme et les
cycles dhorloge que lUC passe à attendre le
système mémoire.
Tps UC (Cycles dexécution UC Cycles
dattente mémoire) Tps C
89Les cycles dattente mémoire
- Les cycles dhorloge dattente 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 dattente (Nb. dinst/programmes) mémoir
e (Nb. de défauts/instruction) Coût
défaut
Cycles dattente (Nb. d'accès par
programme) mémoire (taux de
défaut) Coût défaut
90Ré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 dun 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.
91Ré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. - Cest une combinaison d'effets positifs et
négatifs pour chaque paramètre de conception qui
rend délicate la conception dune hiérarchie de
mémoires
Changement de Conception Augmenter la
taille Augmenter lassociativité Augmenter la
taille de bloc
Effet sur le taux 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 possible sur les performances Peut
augmenter le Tps daccès Peut augmenter le temps
daccès Peut augmenter le coût de défaut
92Caches taille des blocs
Coût de léchec
Taux déchec
Tps transfert
Tps daccès
Taille du bloc
Taille du bloc
T ps daccès
Augmenter la taille du cache indéfiniment
Taille du bloc