Cours architecture
Avances
Chapitre 2: mmoires
caches
1 ING - Institut Suprieur dInformatique
2016-2017
Zouhour Ben Azouz
Hanane Ben Fradj
Introduction
Processeur
(registres: Mmoire
SRAM) principale:
DRAM
s des systmes base de microprocesseur sont gnralement
mps daccs la mmoire :
s la mmoire (lecture ou criture)
>>
s des oprations effectues par un proces
odage, accs aux registres internes, exc 2
Gap de performance entre
processeur et mmoire
3
Les mmoires vives
RAM ( Random Access Memory)
RAM statiques: SRAM RAM dynamiques: DRAM
Information Information maintenue
maintenue par rafrachissement
spontanment sous (balayage rgulier de
tension toutes les cases
mmoires)
Cellule SRAM
Cellule DRAM
4
Les mmoires vives
SRAM VS DRAM
SRAM DRAM
Plus rapide Moins rapide (malgr
Capacit dintgration plus laugmentation de
rduite performance: SDRAM,
Plus couteuse DDR2,DDR3, DDR4..)
Plus encombrante Capacit dintgration plus
importante
Moins couteuse
Moins encombrante
5
Solution: La mmoire cache
Mmoire Mmoire
Processeur
registres:
Cache: principale:
SRAM SRAM DRAM
La mmoire cache ( antmmoire) est une mmoire de capacit plus rduite
que la mmoire centrale et ayant un temps daccs plus rduit.
permet de masquer la latence de la mmoire centrale.
Elle contient une partie des donnes et des instructions ( les plus utilises) contenues
dans la mmoire centrale.
6
Comment a marche?
Le processeur envoie sa requte ( adresse mmoire) la
mmoire cache
Cache Hit Cache Miss
Donne dans la mmoire cache : succs Donne hors de la cache: chec
Temps daccs rduit.
1. Lire un bloc de donnes partir
de la mmoire principale.
2. Lenvoyer au processeur &
Lcrire dans la cache .
Question : o est ce que cette
donne sera crite dans le cache?
La frquence des succs (hit rate) dpend de la taille de la
7
cache et
de lalgorithme excut par le contrleur de la cache.
Plusieurs niveaux de
mmoire cache
Parce que cest trs couteux davoir la fois une cache rapide et ayant une
grande capacit, on a recours plusieurs niveau de caches.
Mmoire
principale
La plus rapide Moins La moins
rapide
rapide rapide
8
Plusieurs niveaux de
mmoire cache
9
Plusieurs niveaux de
mmoire cache
Architecture Harvard pour la cache L1: un cache pour les donnes et un
cache pour les instructions
Mmoire principale
Aujourd'hui : cache
L1 et L2 sont dans la
meme puce que le
processeur : on chip
memory
CPU
10
Pourquoi a marche?
Les mmoires caches permettent de rduire le temps moyen daccs
la mmoire en se basant sur le principe de la localit spatiale et temporelle.
Localit spatiale : Lorsque le programme accde une donne ou une
instruction, il accdera trs probablement aux donnes ou aux
instructions proches en terme dadresse dans un futur proche.
Localit temporelle : Lorsque le programme accde une donne ou une
instruction, il y accdera de nouveau trs probablement dans un futur proche.
11
Localit temporelle et
spatiale
Les donnes, comme les instructions, possdent de fortes proprits de localits
12
Exploitation de la localit
La localit temporelle
est exploite en
Instruction/donne
conservant dans le
cache les donnes qui
ont t rcemment
utilises. (technique de
remplacement quant le
cache est plein)
La localit spatiale est
exploite en
chargeant les donnes 13
Caractristiques de la
mmoire cache
Taille du cache.
Taille du bloc ( appel
aussi ligne).
Instruction/donne
Organisation de la cache:
correspondance entre les
adresses de la mmoire
principale et de la
mmoire cache.
Politique de
remplacement dcriture (
contrleur de cache).
La frquence des succs (hit rate) dpend de toutes ces
14
caractristiques.
Structure de la cache
Addresse Addresse
Processeur Cache Mmoire
Principale
Donne Donne
Bit de validit:
Si V =0 alors la
V Tag Bloc de donnes
Ligne est libre
100 Ligne de cache =
<tag, block de donnes>
304
6848
416 Block de donnes
Etiquette Quel est le nombre de bits qui sont allous ltiquette (TAG)?
de ladresse Assez pour identifier un bloc
(Tag) 15
Diffrentes organisation de la
cache
O placer une information de la mmoire principale dans la mmoire
cache?
Numro du bloc
Mmoire principale
Nimporte ou Seulement
Le bloc 12 Nimporte dans Dans
peut tre plac quelle ligne lensemble 0 la ligne 4
16
Diffrentes organisation de la
cache
1. Organisation correspondance directe avec la
mmoire (Direct Mapped) :
Chaque bloc de la mmoire ne peut tre charg qu une seule
ligne du cache. En gnral la fonction de correspondance est
un simple calcul de modulo sur ladresse mmoire.
2. Organisation totalement associative (Fully
associative) :
Chaque bloc de la mmoire principale peut tre charg
n'importe quelle ligne du cache.
3. Organisation associative par ensembles (set
associative) :
Le cache est divis en un ensemble d'emplacements et chaque
bloc de la mmoire principale ne peut tre charg qu'
l'intrieur d'un de ses emplacements. Cette organisation est un
compromis entre les deux organisations prcdentes.
17
Diffrentes organisation de la
cache
18
Cache correspondance
directe
Mmoire cache
Mmoire principale
19
[Link] correspondance
directe (Direct Mapped)
Cache Direct Mapped
Adresse mmoire Mmoire principale
Tag Data
Tag Line (index) offset L0 W0
b L1
k L2 W1
B0
W2
. W3
.
.
Tag Data .
Li .
.
Compare b
W4j
hit W(4j+1)
. Bj
. W(4j+2)
Tag Data . W(4j+3)
Lm-1
Miss
.
.
20
.
Cache correspondance
directe
Numro du bloc Offset du bloc
Adresse requise
Tag Index Offset dans la mmoire principale
t
k b
V Tag Bloc de donne
2k
lines
t
=
HIT Donne
21
Cache correspondance
directe
Nombre d' octets par bloc 2 Nombre de bits de l'offset
Nombre de lignes du cache 2 Nombre de bits de l'index
Exemple:
mmoire cache de 16 Ko
Un bloc de 16 octets
Adresse sur 32 bits
18 bits 10 bits 4 bits
22
Cache correspondance
directe
23
Cache correspondance
directe
0x0-3 0x4-7 0x8-B 0xC-F
24
Cache correspondance
directe
Lecture de ladresse (cas de cache hit):
000000000000000000 0000000001 0100
0x0-3 0x4-7 0x8-B 0xC-F
1 0x 0
25
Cache correspondance
directe
Avantages:
Circuits plus simple: pas de comparateur
pour chaque ligne de cache.
Inconvnients:
Si le processeur accde deux mots
dont les adresses partagent le mme
index il y aura un cache miss.
26
[Link] correspondance
directe (fully Associative)
Cache fully Assiciative
Adresse mmoire Mmoire principale
Tag Data
Tag offset L0 W0
b L1
L2 W1
B0
W2
. W3
.
.
Tag Data .
Li .
.
Compare b
W4j
Hit W(4j+1)
. Bj
1 galit= succs . W(4j+2)
Tag Data . W(4j+3)
Lm-1
Miss
.
0 galit = chec .
27
.
Cache totalement
associative
Un bloc de la mmoire principale
peut tre dans nimporte quelle
ligne de la mmoire cache
28
Cache totalement
associative
Avantages:
Taux de cache hit plus lev.
Inconvnients:
Circuit plus complexe et plus couteux:
chaque lment de ligne doit contenir
un comparateur
29
Solution hybride: Cache associatif
N voies (N-way set associative)
Compromis entre les deux organisations
prcdentes.
La mmoire cache est divise en
ensembles (sets). Chaque ensemble est
constitu dun nombre de lignes.
Correspondance directe pour les
ensembles et associativit lintrieur
dun mme ensemble. Un bloc de la
mmoire principale peut tre plac dans
un seul ensemble. Par contre il peut
occuper nimporte quelle ligne de cet
30
ensemble.
[Link] correspondance
directe (set associative)
4 way set associative
Adresse mmoire Mmoire principale
Tag Data
Tag Index(set) offset L0 W0
b L1
k L2 W1
set 0 B0
L4
. W2
. W3
set i . L0
L1
L2 .
L4 .
.
Compare w
W4j
hit . W(4j+1)
. Bj
. W(4j+2)
L0 W(4j+3)
L1
Miss set 2k L2
.
L4 .
31 .
Mmoire cache associative
deux voies
Tag Index (set) Bloc
Offset b
t
k
V Tag Bloc de donne V Tag Bloc de donne
Donne
= =
hit
Mmoire cache associative N
voies
Nombre de lignes de la cache nombre d' ensembles N
Nombre d' ensembles 2 Nombres de bits de l'index
Nombre d' octets par bloc 2 Nombres de bits de l'offset
Exemple:
Mmoire cache associative 4
voies (16ko)
Un bloc de 16 octets
Adresse sur 32 bits
20 bits 8 bits 4 bits
33
Mmoire cache associative N
voies
Nombre de lignes de la cache nombre d' ensembles N
Nombre d' ensembles 2 Nombres de bits de l'index
Nombre d' octets par bloc 2 Nombres de bits de l'offset
Exemple:
Mmoire cache associative 4
voies (16ko)
Un bloc de 16 octets
Adresse sur 32 bits
20 bits 8 bits 4 bits
34
stratgie dcriture
Seules les critures modifient ltat de la mmoire.
Rgle: Toute donne crire doit ltre dans la
mmoire cache et aussi dans la mmoire principale.
Il doit y avoir une cohrence entre les deux
mmoires.
Si la donne se trouve en cache, deux techniques
sont gnralement utilises lors des critures:
Lcriture au travers (Write Through)
Lcriture au plus tard (Write Back)
Si la donne ne se trouve en cache, deux techniques
sont gnralement utilises lors des critures:
Lcriture avec allocation (Write Allocate)
Lcriture sans allocation (No Write 35Allocate)
Lcriture au travers (Write
through)
Write Buffer : FIFO entre le
processeur et la mmoire lent
Le processeur crit la donne dans
la mmoire cache et dans le Write
buffer
Contrleur mmoire: crit le contenu
du buffer dans la mmoire principale
ou la cache L2
36
Stratgie dcriture
la ligne est marque
modifie (dirty) et elle sera
recopie en mmoire
Bit modifie : "Dirty bit "
lorsqu'elle sera la cible d'un
remplacement .
37
Stratgie dcriture ( inst store)
Lcriture avec allocation:
Le bloc de cache dans lequel se trouve la
donne est copi en mmoire-cache avant
dtre mise--jour dans la cache.
Tente dexploiter la localit spatiale, mais
cause un transfert de donnes avec la
mmoire principale chaque chec de cache
issu dune criture.
Lcriture sans allocation:
La donne est copi dans la mmoire
principale sans passer par la mmoire cache
38
Stratgies de remplacement
Le chargement d'une ligne dans une mmoire cache se fait en
gnral au dtriment d'une ligne dj prsente. Un mcanisme
matriel arbitre le remplacement des lignes dans un ensemble.
Sur les caches associatifs, plusieurs stratgies de remplacement
sont couramment utilises :
La stratgie de choix alatoire (Random) : la ligne est
choisie de manire alatoire parmi les lignes possibles. Cette
stratgie est peu coteuse en logique est peu fiable du point
de vue des performances.
La stratgie LRU (Least Recently Used) : la ligne choisie est
celle qui a t la plus anciennement rfrence. Une variable
de remplacement (des bits) est rajout ltiquette. Pour une
cache associative 2 voies , un bit est utilis par ensemble.
Il indique la ligne qui na pas t rfrenc rcemment.
Pseudo LRU: Implmentation approximative du LRU
La stratgie LFU (Least frequently Used) : la ligne choisie est
la moins frquemment utilise. Une variable de
remplacement est utilise qui compte le nombre des accs
pour chaque ligne.
39
Stratgies de remplacement
La stratgie LRU (Least Recently Used) :cas dune mmoire
associative 2 voies:
- 1 bit par ensemble
- Si le bit contient 0, alors le premier bloc de lensemble est le
moins rcemment utilis. Le dernier accs a t effectu au
deuxime bloc .
40
Stratgies de remplacement
La stratgie Pseudo LRU (Least Recently Used) :
cas dune mmoire associative 8 voies
7 bits par ensemble
Ordre daccs aux blocs: J,Y,X,Z,B,C,F,A
Daprs larbre, le bloc qui sera remplac est B
Ancien
Nouveau
41
Stratgies de remplacement
Le chargement d'une ligne dans une mmoire cache se fait en
gnral au dtriment d'une ligne dj prsente. Un mcanisme
matriel arbitre le remplacement des lignes dans un ensemble.
Sur les caches associatifs, plusieurs stratgies de remplacement
sont couramment utilises :
La stratgie de choix alatoire (Random) : la ligne est
choisie de manire alatoire parmi les lignes possibles. Cette
stratgie est peu coteuse en logique est peu fiable du point
de vue des performances.
La stratgie LRU (Least Recently Used) : la ligne choisie est
celle qui a t la plus anciennement rfrence. Une variable
de remplacement (des bits) est rajout ltiquette. chaque
accs la mmoire la variable est mise jour. Elle sera
incrmente pour les lignes qui nont pas t rfrences et
mise zro pour ladresse qui vient dtre rfrence.
Cette stratgie donne en gnral de bons rsultats, mais
devient assez coteuse lorsque l'associativit crot.
Pseudo LRU: Implmentation approximative du LRU
La stratgie LFU (Least frequently Used) : la ligne choisie est
42
la moins frquemment utilise. Une variable de
Performances des mmoires
caches
Temps daccs moyen la mmoire
=
Temps de succs + Taux dchecs *
pnalit dchec
Pour amliorer la performance il
faut :
Rduire le taux dchec
Rduire la pnalit dchec
Rduire le temps daccs la mmoire
43
Les causes dchecs (les 3C)
checs de dmarrage:
Premiers accs une donne ou une
instruction.
checs de capacit: la mmoire cache est
trop petite par rapport aux besoins du
programme.
checs de conflit: le mcanisme de
correspondance utilis (correspondance
directe ou associativit par ensemble
remplace des lignes dj prsentes dans la
mmoire cache (alors que dautres44
lignes
Rduire de temps moyen
daccs
la mmoire
Rduire le taux dchec
Augmenter la taille de la mmoire cache
Augmenter lassociativit
Stratgie de remplacement
Optimisations du programme
Rduire le temps daccs
Rduire la taille de la mmoire cache et lassociativit.
Rduire le temps de pnalit
Diffrents niveaux de cache
Cache victimes
45
Optimisation du programme
Boucles
modifies for(j=0;j<N;j++)
for(i=0;i<N;i++)
for(j=0;j<N;j++) for(i=0;i<N;i++)
A[j][i] = A[j][i] +1; A[j][i] = A[j][i] +1;
Hypothse : les donnes sont stockes par ligne, A[j][i] et
A[j][i+1] sont des adresses conscutives.
for(i=0;i<N;i++) Fusion de
for(i=0;i<N;i++)
B[i]=A[i] +1; boucles
{
for(i=0;i<N ;i++) B[i]=A[i] +1;
C[i]=A[i] * 3; C[i]=A[i] * 3;
}
Cette transformation rduit le nombre de cache miss.
46
Cache victime (Victim
Cache)
Une mmoire cache de taille trs rduite totalement associatif, appel Victim
cache , li au niveau L1 dun cache adressage direct (Direct Mapped) mais isole de
la mmoire principale.
La recherche se fait dabord dans la mmoire cache L1.
En cas de cache Miss, la recherche se fait dans la victim cache. Si linformation est
prsente elle sera envoye au processeur.
Si linformation nest pas dans la victim cache, elle sera cherche dans les autres
niveaux de cache ou dans la mmoire principale.
La donne qui sera remplace dans L1 sera crite dans la victim cache47