Вы находитесь на странице: 1из 34

CNAM

Principes des Caches Mmoire

Ivan Boule

CNAM

Problmes Accs Mmoire


Vitesse CPU >> performances mmoire
Frquences CPU entre 2 G ! et " G ! Mmoire centrale # $%namic &AM '$&AM(
Grande capacit ') transistor*bit( Accs lent '2++ ou ,"" M !(

-us mmoire # ressource parta.e a/ec


$MA des priphriques 0ntres*1orties Autres CPUs en architecture multi2processeurs

#> mmoire # .oulet d3tran.lement

Ivan Boule

CNAM

Principes des Caches Mmoire


Cache entre CPU et mmoire centrale
4atence infrieure 'quelques c%cles( -us plus efficace '5 lar.e6 5 rapide(

Mmoire centrale
Mmoire d%namique '$&AM( Grande capacit ') transistor*bit( Accs lent

Cache
Mmoire statique '1&AM( Capacit rduite Accs rapide
Ivan Boule 3

CNAM

Caches Mmoire
Accs lent (mot, byte) CPU 4ent &apide Cache &apide 7rite -uffer 4ent &AM RAM

CPU

Accs lent (mot, byte)

Ivan Boule

CNAM

Principes des Caches


Conser/er les donnes * instructions les 5 frquemment utilises par chaque CPU $ans mmoire pri/e de chaque CPU et 8 accs plus rapide Architectures de t%pe
Cache de donnes 5 comple<e Cohrence des 2 caches .re par =1
Ivan Boule 5

ar/ard

Cache d3instructions '9:read2onl%:;(

CNAM

Principes des Caches Mmoire


L1 Instruction Cache L1 Data Cache Processeur L2 Cache RAM

CPU Core

Ivan Boule

CNAM

Caches et Accs Mmoire


A chaque accs6 donne cherche dans cache 8 partir de son adresse 1i trou/e6 opration d3accs effectue dans le cache 1inon6 9:cache miss:;
$onne lue dans cache depuis la mmoire

Cache mis 8 >our6 si criture

Ivan Boule

CNAM

Composition Cache Mmoire


Mmoire et cache dcomposs en 9:li.nes de cache:; 4i.ne de cache # ensemble de ? mots mmoire conti.us Mot # plus petite unit de transfert entre CPU et cache 4i.nes identifies 8 partir de l3adresse @tats d3une li.ne de cache
4i.ne /alide ou non 4i.ne modifie ou non
Ivan Boule 8

CNAM

Association Mmoire * Cache


ligne de cache

cache

Mmoire
Ivan Boule 9

CNAM

Caches Multi2?i/eau<
Plusieurs ni/eau< de caches mmoire Cache 4)
Ant.r dans CPU Accs trs rapide ') CPU c%cle( Baille entre )+ et )2C D-

Cache 42
1tatic &AM Accs rapide ', 8 )+ CPU c%cles( Baille entre 2E+ D- et 2 M-

Ivan Boule

10

CNAM

Caches Multi2?i/eau<
Caches 4) et 42 pri/s 8 chaque coeur Caches 4" parta. entre coeurs d3un CPU Caches inclusifs
4) tou>ours dans 42 Baille 4i.ne 4) F# Baille 4i.ne 42

Caches e<clusifs
4) >amais dans 42 Baille 4i.ne 4) # Baille 4i.ne 42
sGap li.nes sur 4) miss6 42 hit

Ivan Boule

11

CNAM

Caches Multi2?i/eau<
Processeur
CPU Core L1 Cache L2 Cache CPU Core L1 Cache L2 Cache CPU Core L1 Cache L2 Cache CPU Core L1 Cache L2 Cache CPU Core L1 Cache L2 Cache

Processeur
CPU Core L1 Cache L2 Cache CPU Core L1 Cache L2 Cache CPU Core L1 Cache L2 Cache

Shared L3 Cache

Shared L3 Cache

RAM

RAM

Ivan Boule

12

CNAM

$fauts de Cache 'Cache Miss(


$faut de cache H accs 8 Imot d3J une li.ne absente du cache caus par H Premier accs H pas /itable K Capacit limite H taille du cache F taille totale des donnes 'instructions( accdes Accs conflictuels dans li.nes de cache enre.istres dans mLme entre du cache An/alidation li.ne de cache pour conser/er cohrence dans une architecture multi2CPU
Ivan Boule 13

CNAM

Cache Pleinement Associatif 'Full% Associati/e Cache(


Chaque entre du cache peut contenir n3importe quelle li.ne de la mmoire Minimise dfauts conflictuels &echerche 9:associati/e:; par contenu 'la /aleur de l3adresse( coMteuse &ser/ au< caches de petite taille 'quelques Nilo2octets(

Ivan Boule

14

CNAM

Cache Pleinement Associatif

cache

ligne de cache Mmoire


Ivan Boule 15

CNAM

Cache Pleinement Associatif


31 miss ? B a . 8 7 4 3 0 = hit
24 bits

Ba. Ba. Ba. Ba. Ba. Ba. Ba.

/ d Mot" Mot2 Mot ) Mot O / d Mot" Mot2 Mot ) Mot O / d Mot" Mot2 Mot ) Mot O / / / / d d d d Mot" Mot" Mot" Mot" Mot2 Mot Mot2 Mot Mot2 Mot Mot2 Mot ) Mot ) Mot ) Mot ) Mot O O O O

V = valid

D = dirty (modifi)
Ivan Boule

Mot = 4 octets
16

CNAM

Cache a Correspondance Prtablie '$irect Mapped Cache(


Chaque li.ne de la mmoire associe 8 une seule entre du cache 4ors d3accs successifs 8 mots mmoire dans li.nes 9:conflictuelles:;
chaque accs fait sortir du cache la li.ne contenant le mot accd prcdemment diminue performances du cache '9:hit rate:;(

A/anta.e H mise en oeu/re simple


Ivan Boule 17

CNAM

Cache a Correspondance Prtablie

cache

ligne de cache Mmoire


Ivan Boule 18

CNAM

Cache 8 Correspondance Prtablie


") B a )2 . )) A n d e C < " O V = valide D = dirty (modifi)
Ivan Boule

miss ? =

hit

20 bits

Ba. Ba. Ba. Ba. Ba. Ba. Ba.

/ d Mot" Mot2 Mot ) Mot O / d Mot" Mot2 Mot ) Mot O / d Mot" Mot2 Mot ) Mot O / / / / d d d d Mot" Mot" Mot" Mot" Mot2 Mot Mot2 Mot Mot2 Mot Mot2 Mot ) Mot ) Mot ) Mot ) Mot O O O O

Mot = 4 octets
19

CNAM

?2Ga% Associati/e Cache


22Ga%*E2Ga% Associati/e Caches Compromis entre 2 autres t%pes de cache Chaque li.ne de cache mmoire associe 8 plusieurs '2 ou E( entres du cache Permet d3/iter de nombre dfauts de cache conflictuels Au.mente 9:hit2rate:; dans une proportion qui/alente 8 celle obtenue en doublant la taille du cache
Ivan Boule 20

CNAM

227a% Associati/e Cache

cache

ligne de cache Mmoire


Ivan Boule 21

CNAM

E2Ga% Associati/e Cache


B a )2 . )) A n d e 8< E " O V = valide D = dirty (modifi)
Ivan Boule 22

")

miss ? =

hit

7a% " 2 Ba. /d Mot" Mot2 Mot )7a% Mot O ) Ba. Ba. /d/d Mot" Mot" Mot2 Mot2 Mot Mot ) Mot )7a% Mot O O O Ba. Ba. Ba. /d/d Mot" /d Mot" Mot" Mot2 Mot2 Mot2 Mot Mot Mot ) Mot ) Mot )7a% Mot O O O Ba. Ba. Ba. /d/d Mot" /d Mot" Mot" Mot2 Mot2 Mot2 Mot Mot Mot ) Mot ) Mot ) Mot O O O Ba. Ba. /d/d Mot" Mot" Mot2 Mot2 Mot Mot ) Mot ) Mot O O Ba. Ba. /d Mot" /dMot2 Mot" Mot Mot2 ) Mot Mot O ) Mot O Ba. Ba. /d/d Mot" Mot" Mot2 Mot2 Mot Mot ) Mot ) Mot O O Ba. Ba. Ba. /d/d Mot" /d Mot" Mot" Mot2 Mot2 Mot2 Mot Mot Mot ) Mot ) Mot ) Mot O O O Ba. Ba. Ba. Ba. /d/d Mot" /d Mot" /d Mot" Mot2 Mot" Mot2 Mot2 Mot Mot2 Mot Mot ) Mot Mot ) Mot ) Mot O ) Mot O O O Ba. Ba. Ba. /d/d Mot" /d Mot" Mot" Mot2 Mot2 Mot2 Mot Mot Mot ) Mot ) Mot ) Mot O O O Ba. Ba. /d/d Mot" Mot" Mot2 Mot2 Mot Mot ) Mot ) Mot O O Ba. /d Mot" Mot2 Mot ) Mot O

CNAM

Cache Mmoire et B4Ande< de recherche d3une li.ne de cache e<trait de H


Adresse /irtuelle 'Virtuall% Ande<ed( Adresse ph%sique 'Ph%sicall% Ande<ed(

Ba. de /alidation d3une li.ne de cache e<trait de H


Adresse /irtuelle 'Virtuall% Ba..ed( Adresse ph%sique 'Ph%sicall% Ba..ed(

Ivan Boule

23

CNAM

Cache Ande< Ph%sique6 Ba.. Ph%sique 'APBP(


Cache utilise Ipartie deJ l3adresse ph%sique comme inde< de recherche du mot accd B4- entre CPU et Cache Pas de problme d3aliasin. 'plusieurs P /irtuelles /ers mLme P ph%sique( 4ent
recherche dans le cache aprs translation Aprs rsolution d3un 9:B4- Miss:; /entuel
Ivan Boule 24

CNAM

Cache Ande< Ph%sique


-us d3Adresses @physique P/irtuelle CPU MMU &AM Cache Bus de Donnes

Ivan Boule

25

CNAM

Cache Ande< Virtuel6 Ba.. Virtuel 'AVBV(


Cache utilise Ipartie deJ l3adresse /irtuelle comme inde< de recherche du mot accd Cache entre CPU et B4&apide H recherche dans cache a/ant translation Problme aliasin. Problme homon%mie H mLme P /irtuelle /ers plusieurs P ph%siques Flush cache si adresse /irtuelle remappe
Ivan Boule 26

CNAM

Cache Ande< Virtuel


-us d3Adresses @physique P/irtuelle CPU Cache Bus de Donnes MMU &AM

Ivan Boule

27

CNAM

Cache Ande< Virtuel6 Ba.. Ph%sique 'AVBP(


Cache utilise Ipartie deJ l3adresse /irtuelle comme inde< de recherche du mot accd Plus rapide que APBP
recherche dans le cache en parallle a/ec opration de translation

Ba. ph%sique rsoud problmes d3homon%mie de AVBV

Ivan Boule

28

CNAM

Politiques de .estion du cache


7ritethrou.h
Boute modification est immdiatement rpercute en mmoire centrale $e faQon as%nchrone '9:Grite buffer:;(

7ritebacN 'utilisation du dirt% bit(


@criture dans une li.ne de cache /alide 4i.ne crite en &AM quand elle est remplace

Politiques de remplacement
Last Recentl% Used '4&U( &ound2&obin
Ivan Boule 29

CNAM

=prations de ContrRle
Cache FlushH /ider tout le contenu du cache Cache CleanH crire toutes les donnes modifies en mmoire Possibilit d3effectuer ces oprations par portion6 a/ec une .ranularit par li.ne $istinction entre cache d3instructions et cache de donnes Possibilit de /errouiller du code et*ou des donnes en cache
Ivan Boule 30

CNAM

Caches et =ptimisations 4o.icielles


Anstructions spciales de pr2char.ement de donnes dans certain's( ni/eau'<( de cache's( Ali.nement des Istructures deJ donnes sur des frontires de li.ne de cache &e.rouper les champs d3une structure de donnes par li.ne de caches selon frquence d3accs
Ivan Boule 31

CNAM

Pr2char.ement de Cache's(
Anstructions spciales de pr2char.ement 'prefetch en an.lais( de donnes en cache
static inline void data_L1_prefetch(volatile void *p) { asm volatile ("prefetcht0 %0" : "+m" (*(char *)p)); }

Char.e une li.ne de cache depuis la &AM =pration as%nchrone e<cute en parallle a/ec instructions sui/antes Utilises pour optimiser les performances des traitements de donnes par 9:burst:;
Ivan Boule 32

CNAM

Ali.ner $onnes sur Frontires de 4i.ne de Cache


$onnes par CPU dans li.nes de cache diffrentes sur architecture multi2 processeurs
#define CACHE_LINE_SIZE 64 #define cache_aligned \ __attribute__((__aligned__(CACHE_LINE_SIZE))) struct io_stats { unsigned i_bytes; unsigned i_frames; unsigned o_bytes; unsigned o_frames; } cache_aligned; struct io_stats per_cpu_io_stats[MAX_CPU];
Ivan Boule 33

CNAM

Grouper champs des structures de donnes selon frquences d3accs


&e.rouper les champs d3une structure les plus sou/ent accds dans mLme's( li.ne's( de cache
struct io_device { struct X *high_rate_access_field_0; unsigned int high_rate_access_field_H; void *low_rate_acces_field_0; short low_rate_access_field_L; };
Ivan Boule 34

Вам также может понравиться