Fonction mémoire

Transcription

Fonction mémoire
Memory Hierarchy - Diagram
Fonction mémoire
La mémoire
 Management Mémoire
 Mémoire cache
 Mémoire partagée
Management Mémoire
 Mono programme
 Mémoire coupée en deux
 Operating System (monitor)
 Partie exécutable (Programme)
 Multi
Multi--programme
 La partie “User” est sous divisée et partagée
entre les processus actifs
Partitionnement
 Découpe de la mémoire en sections
allouées aux processus
 Partitionnement de taille fixe
 Éventuellement de tailles différentes
 Perte d’une partie de l’espace mémoire
 Besoin de partitions de taille variable
Partition fixe
Partition de taille variable (1)
 Allocation exacte de la place mémoire
nécessaire
 Reste un espace en fin de mémoire non
utilisé
 Un seul petit trou – moins de perte
 Changement des processus en mémoire
entraîne une réallocation de l’espace
Partitions Taille Variable (2)
 Amène une fragmentation de la mémoire
 Solutions:
 Agrégation – Regroupement des trous voisins
en un seul
 Compactage – De temps en temps on
regroupe tout l’espace libre en un seul trou:
garbage collector
 Seulement des espaces plus petits sont dispo
 Nouveau trou
Les effets…
Réallocation
 Aucune garantie qu’un processus aura toujours le même
emplacement mémoire
 Instructions référencent des adresses
 Adresses des data
 Adresses des instructions (branching)
 Adresse logique – relative au début du programme
 Adresses physique: emplacement de l’information (à un
instant donné)
 Conversion automatique en utilisant une adresse de
base
Pagination
 Éclatement de la mémoire en blocks de





tailles fixe – notion de page
Éclatement des processus en pages
Allocation du nombre de page nécessaire
pour le processus
L’OS maintient une liste des pages libres
en mémoire
Les pages d’un processus ne sont pas
nécessairement contiguës en mémoire
Besoin d’une table des pages en mémoire
Adresse logique / physique
Mémoire Virtuelle
Structure Table des Pages
 Page à la demande
 Pas toutes les pages d’un processus en mémoire de
suite
 Amener les pages quand on en a besoin
 Défaut de page
 Page demandée n’est pas en mémoire
 Operating System doit prendre en charge le
chargement de la page
 Peut nécessité la libération d’un page en mémoire
 Algorithme de remplacement
LRU, FIFO,RDM,LFU
Translation Lookaside Buffer
 Chaque référence mémoire implique
DEUX accès mémoire physique
 Chargement de l’entrée dans la table des
pages
 Chargement de la donnée
 Utilisation d’une mémoire spéciale pour la
table
 TLB
Segmentation
 Pagination n’est pas “visible” pour
l’utilisateur
 Segmentation est visible pour le
programmeur
 En général un segment de données et un
segment de programme
 Peut y en avoir plusieurs de chaque…
Advantages de la Segmentation
 Adapté à des données évolutives
 Partage de segment entre processus
 Protection de segments
 L’adresse virtuelle devient
(Numéro de segment,déplacement dans le
segment) ou
(Base, Offset)
 Gestion de la mémoire plus difficile
 Segmentation paginée
Pentium II
Pentium II Address
Translation Mechanism
 Hardware supporte segmentation et pagination
 Unsegmented unpaged
 virtual address = physical address
 Low complexity
 High performance
 Unsegmented paged
 Memory viewed as paged linear address space
 Protection and management via paging
 Berkeley UNIX
 Segmented unpaged
 Collection of local address spaces
 Protection to single byte level
 Translation table needed is on chip when segment is in memory
 Segmented paged
 Segmentation used to define logical memory partitions subject to
access control
 Paging manages allocation of memory within partitions
 Unix System V
PowerPC 3232-bit
Mémoires caches
 Compromis entre la taille et la vitesse de
la mémoire.
 La mémoire cache est :
 de petite capacité
 de grande vitesse (facteur 10 entre la
cache et la mémoire conventionnelle)
 Réduire le temps d’accès mémoire moyen
en conservant une mémoire importante
Cache
 Située entre le CPU et la mémoire
centrale
 Peut être interne ou externe
 Rasnfert par mot, par bloc
Caractéristique d’un cache
 Taille
 Fonction de Mapping
 Algorithme de Remplacement
 Write Policy
 Taille des Blocks
 Nmbre de Caches
Importance de la taille
Organisation Typique de Cache
 Coût
 Plus de cache = plus cher
 Vitesse
 Plus de cache = plus rapide (jusque un
certain point)
 La recherche des données dans le cache
prend du temps
Début
Mise en oeuvre
LECTURE
Recevoir l’adresse
A du CPU
 Elle est placée entre le processeur et la
mémoire ( à la Von Neumann).
 On espère que l'information sera souvent
présente dans le cache.
 Principe de la localité
 L'accès est donc globalement plus rapide
que dans le modèle VN.
 Même principe que la mémoire virtuelle
A
dans le
cache?
NON
OUI
Charger depuis
le cache en A
Allouer une place
dans le cache pour A
Envoi du contenu
de A au CPU
Mettre à jour
le cache
Fin
TLB et Cache
Accès mémoire
en A
Localité
 Localité spaciale: probabilité d’accès à
une adresse voisine
 Localité temporelle: probabilité d’accès
aux mêmes adresses successivement
 Séquentialité: probabilité d’accès à
l’adresse n + 1 (localité spaciale)
Performances
 ta : temps d'accès mémoire : Entre la
soumission de la requête et la fin de
transfert de l'information
 tc : temps de cycle mémoire: Entre deux
accès successifs
 En général : tc 
tta
 Sur des mémoires rapides : tc 
tta
Temps d’accès moyen
 Le temps moyen d'accès pour n
références à une adresse qui reste dans le
cache:
t =( n ta_cache + ta_mem ) = ta_cache + ta_mem
n
n
 Après le premier accès, on va à la vitesse
du cache
Exemple
 ta_cache =25 ns
 ta_mem = 200 ns
 n=10
 on obtient
 
=
= ( 200 + 10 * 25 ) / 10 = 45 ns
( < 200ns)
 Si n 

 + infini
alors 


ta_cache
Temps d'accès moyen
 
tta_cache+ (1(1-h) ta_mem
exemple:
h = 85% => t = 55ns
 
=
= ta_mem ( 1/K + (1(1-h))
(1)
 avec K= ta_mem / ta_cache = ratio des
vitesses
Succès / Echec
 Taux de succès (hit ratio)
 probabilité pour qu'un mot soit déjà dans
le cache
 h = Nombre de références trouvées dans le cache
Nombre de références total
 Taux d'échec (miss ratio)
m=1-h
Remarques
 de 
=
= ta_mem ( 1/K + (1(1-h)) on déduit
 
dépend
dépend essentiellement de m (miss
ratio) si K est grand (ratio des vitesses)
 par exemple pour une mémoire virtuelle
disque = 20ms et ta = 200ns d’où K =
100000
m = 1% alors  = 200.2 s
Remarques (suite)
 Inversement 
dépend
dépend essentiellement de
1/K si K est "petit".
 Pour les mémoires caches
 K= 3 .. 10
ta_mem = 200 ns et ta_cache = 25 ns et
K=8
Si m = 1% alors  = 27 ns
Utilisation du cache :
Vitesse mémoire et vitesse
CPU
 Actuellement tc_mem = 10 * tc_cpu environ
 Il existe des mémoires rapides avec
tc_mem = tc_cpu
 Le coût est élevé et ne permet pas de
construire une mémoire de taille
suffisante.
Placement des données
 Un "petit" bloc mémoire avec
 Mapping des données similaire aux
tc_mem= tc_cpu
 Programme et Data sont transférés via le
cache mémoire
 L'efficacité dépend du principe de localité
temporelle et spatiale des données et des
instructions.
systèmes de mémoire virtuelle
 Implémentation hardware. Améliore
également les accès mémoire système
 Plusieurs stratégies:
Direct Mapping
 Chaque donnée dans un seul
emplacement du cache
 Calcul simple:
i = j modulo m
i = Numéro de l’emplacement cache
j = Adresse mémoire
m = Nbre d’emplacements du cache
 Direct mapping
 Fully associative mapping
 Set associative mapping
Direct Mapping
 Les bits de poids faible de l'adresse dans
le cache et dans la mémoire sont les
mêmes .
 Les bits de points fort sont rangés dans le
cache.
 2 zones sur l'adresse
TAG
Index
Méthode
Accès mémoire
 L'index permet l'accès à 1 emplacement
du cache. Cet emplacement contient
1TAG + 1DATA
 Le TAG obtenu est comparé avec le TAG
de l'adresse
 Les 2 TAG sont
les mêmes
=> Succès
différents
=> Echec
Index
mémoire.
 Lecture : Le mot est envoyé au cache, il
peut être envoyé en simultané au
Processeur (Read(Read-through)
 Ecriture : Le mot est écrit dans le cache,
il peut être écrit en même temps dans la
mémoire (Write(Write-through)
Exemple Direct Mapping
Direct mapping
TAG
 En cas d'échec, l'adresse est envoyée à la
Tag + Index
Mémoire
Index
Cache
TAG
Y
=
Data
N
Direct mapping par bloc
Accès mémoire
 On transfert un bloc d'adresses contiguës
 En cas d'échec, on transfert toujours le
(=> utilisation des mémoires entrelacées)
bloc (la ligne) qui contient le mot
référencé.
 Seul 1 bloc (ligne) du même numéro
peut être présent dans le cache
 Rangement des données qui élimine
les conflits.
 plusieurs requêtes mémoire simultanées
 L'adresse est composée de 3 champs
TAG
Bloc
Mot
Direct mapping par bloc
TAG
Avantages / Inconvénients
Tag + bloc + mot
bloc mot
TAG
Y
=
Data Data Data Data Data
Mémoire
Bloc
Cache
 Pas d'algo
 Ratio de succès
remplacement
 Hard simple et peu
coûteux
 Rapide
faible
(cf. associative)
 Performances
décroissent si
même Index
N
Fully associative mapping
 Tendance
: Direct Mapping adapté aux
mémoires caches plus grandes
Fully associative mapping
 Mémoire associative: L'adresse est
Cache
Y
Y
Exemple Associative Mapping
=
=
Adresse
Data
Adresse
Data
Mémoire
N
....
simultanément comparée à toutes les
adresses rangées dans le cache.
 Par bloc ou par mot (cf. Direct Mapping)
 Un bit de validité associé à chaque entrée
 Algorithme de remplacement hardware
Adresse
Adresse
N
Avantages / Inconvénients
 Flexibilité
 Plusieurs lignes
 Coût hardware du
comparateur
dans le cache avec  Algo de
le même numéro.
remplacement
(lequel enlever ?)
 Taille réduite
Set associative mapping
Set associative mapping
Exemple Two Way Set
Associative Mapping
Tag + Index
Index
Cache
TAG
Y
=
=
=
Data TAG Data
Data TAGData
Data
N
Avantages / Inconvénients
 Moins de
comparateurs.
 Algo de
remplacement
seulement sur le
set
 Plus courant avec
2 blocs par ligne
Stratégies de chargement
 Trois stratégies de chargement de donnée
ou bloc de données de la mémoire vers le
cache
 A la demande
 Pré chargement
 Chargement sélectif
1) A la demande
 On charge lorsqu'il y a eu un échec
 Bloc non présent dans le cache
 La plus simple
 Pas de hardware
Mémoire
mapping
 Permet un nombre limité de blocs (lignes)
avec le même index mais des TAG
différents.
 Le cache est divisé en "set" de blocs.
Chaque "set" contient le même nombre de
blocs.
 Chaque bloc a son propre TAG qui
associé à l'index, identifie le bloc.
TAG
Index
 Compromis entre direct et full associative
2) Pré chargement
 On charge avant la référence au bloc.
 Exemple : charge le bloc (i+1) quand le
bloc (i) est référencé pour la 1ère fois.
 50% d'échec en moins sur un cache
assez grand.
 Sur un cache petit, on peut écraser un
autre bloc qui pourrait être encore
référencé.
Opérations d’écriture
 Consistance entre le cache et la mémoire
 les 2 versions de la donnée peuvent
être différentes.
 Nécessité de conserver la cohérence dans
des systèmes multi processeurs (mémoire
partagée et caches multiples) ou avec des
I/O sur la mémoire...
Temps d’accès
 Le temps d'accès considère ici qu'il n'est
pas nécessaire d'assurer la consistance
du cache et de la mémoire .
 Deux stratégies d'écriture vont modifier le
temps d'accès moyen:
 WriteWrite-through
 Write
Write--back
3) Chargement sélectif
 Seuls certains blocs seront chargés en
cache
 Certains blocs restent toujours en
mémoire
 Accès direct à la mémoire reste possible
 Exemple : des données communes en
Multiprocesseurs sont plus facilement
gérées en mémoire commune.
Temps d’accès modifié
 Rappel:
= ta_cache+ (1=
(1-h)ta_mem
 On peut décomposer ta_cache
=

= tci+ h*tcr + (1(1-h)ta_mem
 tci : temps d'interrogation du cache.
 tcr : temps de lecture du cache en cas de
succès
Write--through
Write
 Chaque écriture dans le cache est répétée
sur la mémoire.
 Le cache est plus efficace alors en lecture
qu'en écriture
 En moyenne (Smith 1982) 3 à 10 lectures
entre 2 écritures.
Temps d’accès WriteWrite-through
 On obtient donc un temps d'accès moyen
de
Si tb = tm
 Pour les blocs de taille 1 ou pour les gros
systèmes on a (tb = tm)
=

= tc+ (1(1-h)tb + w *(tm - tc)
 (tm - tc) = écriture mémoire et cache en
parallèle indépendant de l'échec
 tb = temps de transfert d'un bloc de la
mémoire au cache
 tm = temps d'accès mémoire (1 mot)
 tc = temps d'accès au cache
 w = % de write
Exemples
 tc= 25nst
25ns tm =200ns h=99%
w=20%
 
=62ns
=62ns => 25 + 2 (échec) + 35 (write)
 avec b=16 sur un microprocesseur, tb = 16
tm
 
=92ns
=92ns => 25 + 32 (échec) + 35 (write)
Write Back (2)
 Ecriture seulement des blocs modifiés: 1
bit de Flag par bloc
 
=
= tc+ (1(1-h)tb + wb (1
(1--h)tb
=

= tc+ (1 + wb ) (1(1-h) tb
 wb : proba pour qu'un bloc ait été modifié.
 = (1(1-w)tc +(1
+(1--h+w) tm
Write--back
Write
 L'écriture n'est réalisée que lors du
remplacement de bloc (I/O passent par le
cache)
 Simple writewrite-back:
tous les blocs remplacés sont écrits
 
=
= tc+ (1(1-h)tb + (1(1-h)tb
(1--h)tb pour le Fetch et (1
(1
(1--h)tb pour le Write
 
ttc+ 2 * (1(1-h)tb
Algorithme de remplacement
 Problème : Amener un nouveau bloc
quand le cache est plein !
 Direct Mapping => pas de choix possible
(le même index).
 Reprise des algorithmes des systèmes de
mémoire virtuelle
 Implémentation hardware
 En même temps que le chargement du
bloc depuis la mémoire
Aléatoire
FIFO
 Méthode la plus simple
 On choisit un bloc au hasard.
 Approximation du hasard
 Compteur incrémenté en fonction de
 On écrase le bloc le plus ancien dans le
cache.
 Implémentation
l’horloge
 La valeur du compteur donne le numéro
du bloc à remplacer
LRU (Least Recently Used )
 On écrase le bloc le moins récemment
compteur dans le bloc concerné
 On choisit le plus vieux en fonction de la
valeur des compteurs
LRU par matrice de
références
LRU par pile de registres
 Pile de registres (par set) :
 On place en sommet de pile le numéro du
bloc référencé
 nb de registre = nb bloc par set
2
2
3
Bloc référencé
4
4
2
3
1
1
4
2
3
3
4
4
1
2
3
3
LRU par compteur
 1 Compteur par bloc
 Incrément régulier du compteur
 A chaque référence on recopie le
utilisé .
 Implémentation
 Par compteur
 Par pile de registres
 Par matrice de références
 Par méthodes approximatives
3
3
 FIFO d'adresses
 Compteur incrémental
 Fully associative : 1 seul compteur
 Set associative: 1 compteur par set
3
3
4
1
2
2
Bloc écrasé
2
2
3
4
1
1
 Matrice de bit
 Solution avec une matrice triangulaire
 B Blocs => matrice B x B ( sans
diagonale)
 Une référence au bloc I
 Les bits de la ligne I sont mis à 1
 Les bits de la colonne I sont mis à 0
 Le bloc LRU a des 0 sur sa ligne et des 1
sur sa colonne
LRU et méthodes
Matrice de références
3
4
0
3 1 1
2
1
2
4
0 0
3 1 0
2 1
1
4
4 1 1 1
3 1 0
2 1
1
1 2 3 4
1 2 3 4
1 2 3 4
4
4
1
1
4
3
2
4 0 1 1
4 1 1 1
4 1 1 0
4 1 0 0
3 0 0
3 0 0
3 1 1
3 1 0
2 0
2 0
2 0
2 1
1
1
1
1
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
3
3
2
1
Nombre de caches
 Plusieurs niveaux hiérarchisés
 Plusieurs fonctionnalités
approximatives
 Un grand nombre de blocs impose des
méthodes approximatives
 Résolution par sous groupe
 Choix d’une solution proche du LRU
 Exemple sur le 80486 pseudo LRU
Simple ou double niveau
 On
On--chip cache (L1)=> réduit le traffic sur le
bus
 Un succès élimine toute requète sur le bus
 On ajoute souvent un cache externe (L2)
qui permet un accès rapide sur le bus
(parfois interne aussi)
 Performances dépendent du hit ratio. Des
études montrent que ça marche...
Deux niveaux de caches
Mémoire
Cache unifié ou spécifique
 Un cache instructions et un cache
données
L2
 Un seul cache assure néanmoins un
L1
meilleur hit ratio: équilibre automatique
entre data et instructions
 Deux caches sont nécessaires en
fonctionnement pipepipe-line (pré(pré-chargement
et exécution).
 Ils évitent les ruptures de pipepipe-line
Processeur
Evaluation des performances
 Méthodes:
 1) Simulation suivant une trace de
programme
 2) Mesure directe
 3) Modèle Mathématique
 Eviter le "démarrage à froid" (pas d'échec)
 Grand nombre de références
 Comportement du programme
Fonctionnement
 Pas de problème en lecture
 En écriture, il faut mettre à jour toutes les
copies de la donnée
 Le WriteWrite-through n'est pas suffisant : il ne
met pas à jour les copies des autres
caches
Cache et multiprocesseurs
 Réduction de la latence
 Duplication proche du
processeur
 Réduction du bandwidth
 Plusieurs processeurs
partagent des data
efficacement
P
P
P
•store & load exécutés sur différents processeurs?
Exemple Cohérence de Cache
P2 P
2
P1 P
1
u = u?= ?
$ $
P3 P
3
3 3
u = u?= ?
4 4
$ $ 5 5
$ $
7 7
u :5
u :5u=u=
u :5
u :5
1 1
2 2
u:5
u:5
I/O I/O
devices
devices
Memory
Memory
 Processeurs ont différentes valeurs de u après
(3)
 Inacceptable et fréquent!
Différentes techniques
 Plusieurs techniques pour garder la
cohérence des caches






Cache partagé
Objet "non"non-caché"
Surveillance de Bus
Ecriture diffusion: Broadcast write
Méthode de la directorie
MESI
Cache partagé
 Alliant FXFX-8
 Début des 80’s
 8 x 68020s avec xx-bar et 512 KB
interleaved cache
 Bientôt sur nos microprocesseurs...
P1
Pn
Switch
(Interleaved)
Cache
(Interleaved)
Main Memory
Avantages
Désavantages
P1
 Placement dans le cache standard
Pn
Switch
(Interleaved)
Cache
 Une seule copie existe
(Interleaved)
Main Memory
 Partage à grain fin
 Interférence positive
 Limitation fondamentale du BW
 Augmentation de la latence pour tous les
accès
P1
Pn
Switch
 1 proc peut prefetcher data pour un autre
 Taille mémoire cache totale plus petite.
 Partage d’une ligne de data sans effet
“ping--pong”
“ping
 X-bar
 Cache plus grand
(Interleaved)
Cache
(Interleaved)
Main Memory
 Interférence négative
 1 proc peut écraser les data utiles pour un
autre
 Beaucoup de caches L2 sont partagés
 Faux partage
Mémoire multimulti-bancs
 Ne réduit pas les conflits d'accès au
réseau.
Mem
Mem
Mem
Cache
Cache
Cache
Objets non cachés
 Les objets partageables accédés en
écriture sont présents en mémoire
 Ils ne peuvent pas venir dans le cache
 Contrôle software:
 sémaphores.
 sections critiques.
Réseau
CPU
CPU
CPU
Surveillance de bus
 Multiprocesseurs autour d'un bus.
 1 contrôleur de cache / CPU :
 détecte les écritures sur le Bus .
 Si l'adresse 
au
au cache, on invalide
l'entrée.
 On utilise nécessairement le WriteWriteThrough ou le write back
Protocole Snoopy
State
Address
Data
Pn
P1
Bus s noop
$
$
Mem
I/O devices
Cache-m em ory
trans action
 Contrôleur de cache “snoops” toutes
les transactions sur le bus
 action pour assurer la cohérence
 invalidate, update, ou suppression de la valeur
 dépend de l’état du bloc et du protocole de
cohérence
Example: WriteWrite-thru
Invalidate
P2
P1
u= ?
$
$
 2 stratégies
3
u= ?
4
Fonctionnement du contrôleur
P3
5
$
 comparer le TAG de l'index
 ou invalider l'index 
TAG
TAG
u :5 u= 7
u :5
I/O devices
1
uu:5
:7
2
CPU
Memory
Cache
Contrôleur
Cache
Bus local
Interface
Bus
Protocole WriteWrite-through
Invalidate
 Write through, write nono-
PrRd/ -PrWr / BusWr
allocate caches
 2 états par bloc dans
V
chaque cache
 bits hardware associés aux
blocs présents dans le cache
 Autres blocs Invalide (non
présent)
BusWr / -
I
State Tag Data
State Tag Data
 Lectures multiples simultanées
mais write invalide les copies
 Ordre des écritures est celui
du Bus
PrWr / BusWr
PrRd/—
 PrRd, PrWr
 3 états
 Pas d’accès sur le Bus
Protocole MSI Invalidate
 Read entraîne “shared”
 Devenir proprietaire
PrWr/—
M
PrRd/—
PrWr/—
M
exclusif avant le Write
 invalid, valid (clean), modified (dirty)
 2 transactions bus :
PrW
 read (BusRd), writewrite-back (BusWB)
 Valid = “shared”
 Modified = “exclusive”
 read
read--exclusive: read pour modifier
des succès aux caches
 Protocole plus sophistiqué!
 2 opérations processeur
sur le Bus en multiproc
 Tous les write sont observables
 Tous les write vont sur le bus
 Utilise beaucoup de bandwidth
 Comment assurer la cohérence?
Write--back monoprocesseur
Write
 Introduire 1 nouvelle transaction
 Write
Write--through est simple
 Write
Write--back absorbe la plupart des write par
PrRd / BusRd
 Write invalide tous les autres
caches
Write--through vs. WriteWrite
Write-back
V
Replace/BusWB
Replace/-
PrRd/BusRd
PrRd/—
BusRd/—
PrWr/BusRd
I
 BusRdx produit une
invalidation des autres
 Si bloc modifier dans un
autre cache, on
récupère (1 seul en M)
 Remplacement?
 S->I, MM->I
BusRd/Flush
PrWr/BusRdX
S
BusRdX/Flush
BusRdX/—
PrRd/BusRd
PrRd/—
BusRd/—
PrWr/BusRdX
I
Example: WriteWrite-Back Protocol
PrRd U
P0
PrRd U
P1
U S
5
U S
7
P4
U M
U
S
PrRd U
PrWr U 7
 BusRd (I(I->S) suivi BusRdX (S(S->M)
 Pas très bon pour un monoprocesseur 
I/O devices
BusRd U
BusRd
 Problème: 1 Read&Write produit deux
actions sur le bus, même sans partage.
7
5
BusRd U
BusRdx U
Protocole trop coûteux!
u:57
Memory
Flush
Protocole MESI (4(4-state)
Support Hardware pour MESI
 Ajoute l’état exclusive
P0
P1
P4
 distingue exclusive (writable) et owned (written)
 Etat
 invalid
 exclusive ou exclusive
exclusive--clean (seul ce cache a une copie,
mais pas modifiée)
 shared (2 caches au moins ont une copie)
 modified (dirty)
 I -> E sur PrRd si aucun cache n’a de copie
I/O devices
u:5
shared signal
- wired-OR
Memory
 contrôleurs de cache “snoop” sur BusRd
 Une ligne plus sur le bus pour signaler le partage
du bloc lu
Diagramme de
de Transition
MESI
 BusRd(S) signifie
PrRd
PrWr/—
ligne partagée sur
cette transaction
BusRd
BusRdX/Flush
envoyée aux autres caches.
 La copie (si elle existe) est mise à jour ou
PrWr/—
PrWr/BusRdX
E
BusRd/
Flush
PrRd/—
BusRdX/Flush
PrWr/BusRdX
S

BusRdX/Flush
PrRd/
BusRd (S )
(Broadcast Write)
 Chaque écriture dans un cache est
M
BusRd/Flush
Ecriture distribuée
PrRd/—
BusRd/Flush

PrRd/
BusRd(S)
I
invalidée.
 Augmente les transactions Mémoire
Solution Générique
Méthode de la directorie
 Adaptée aux systèmes à mémoires
partagées physiquement distribuée
 Protocole réalisé par le réseau
 Transition d’états se fait localement
Directory
Switch
Directory
Memory
Memory
Comm
Assist
Scalable Interconnection N etwork
 Maintenir le vecteur d’état explicitement
 Sur échec, communication avec la directorie
 déterminer l’emplacement des copies cachées
 déterminer l’action à entreprendre
 Suivre le protocole pour maintenir la cohérence
Switch

CA
M
P1
Cache
Comm.
Assist
Scalable network
Switch
P1
Cache
$
P
Bit modifié
Fonctionnement de la directorie
 chaque bloc est associé un ensemble de bits géré en
mémoire centrale
 1 bit / CPU + 1 bit "bloc modifié«
Processeurs
 Si "bit modifié" = 1
 1 seul des autres bits est égal à 1
 Il correspond au CPU qui contient la bonne copie.
 Si "bit modifié" = 0
 Plusieurs caches peuvent posséder le bloc
 Plusieurs bits à 1 dans la directorie
0
1
Bit bloc
modifié
0 1
Processeurs
1
1 1
Processeurs
Fonctionnement du cache
 Chaque bloc dans le cache possède un bit
qui précise que sa copie est la seule
valide
 Le bit (bit(bit-local) est mis à 1 lors d’une
écriture dans le cache. Il devient le seul
bloc à jour.
Bloc
Bit-local
1
0
Bit bloc
modifié
Lecture
 bloc 
cache
cache  OK
 bloc  cache
SI le "bloc modifié" ALORS
transf(cache du propriétaire
propriétairecache)
SINON
transf(mémoire
transf(mémoire
cache)
Transactions Read/Write
Ecriture
Requestor
 bloc 
cache
cache
SI "bit local" 
SINON
Invalider les autres copies (Directory)
Maj bitbit-modifié et bit local
 bloc 
cache
cache
tranf(dernière version bloc
bloccache)
Invalider les autres copies (Directory)
Maj bitbit-modifié et bit local
Exemple Hiérarchies à 2 niveaux
P
C
B1
M ain
M em
P
P
C
C
Snoop ing
Adap ter
P
P
B1
Snoop ing
Adap ter
C
C
B1
M ain
M em
Dir.
M ain
M em
P
P
C
C
P
B1
Assist
Assist
M ain
M em
C
Dir.
B2
Network
(a) Snooping-snooping
P
P
C
M /D
A
A
C
M /D
A
Network1
Directory adap ter
P
P
C
M /D
A
P
C
M /D
A
P
C
M /D
A
2.
Reply with
sharers identity
M/D
2.
3.
Read req.
to owner
Reply with
owner identity
P
A
3b.
Inval. req.
to sharer
3a.
Inval. req.
to sharer
M/D
4a.
Data
Reply
M/D
Directorynode
4b.
Inval. ack
4a.
Inval. ack
4b.
Revision message
to directory
P
A
C
P
P
C
C
C
A
P
C
M/D
A
Node with
dirty copy
M/D
Sharer
(a) Read miss to a block in dirty state
A
M/D
Sharer
(b) Write miss to a block withotw
sharers
Cache du Pentium
 80386 => pas de cache onon-chip
 80486 => 8Ko (set asso: 4 set ,bloc de 16)
 Pentium => 2 caches (I et D) onon-chip
C
A
M /D
Directorynode
for block
P
C
A
RdEx request
to directory
C
M/D
A
1.
P
Read request
to directory
512K(2 set, bloc de 32, 64, 128)
(b) Snooping-directory
P
C
M /D
Requestor
1.
P
C
M /D
A
Network1
Network1
Network1
Directory adap ter
Dir/Snoopy adap ter
Dir/Snoopy adap ter
Bus (or Ring)
Network2
(c) Directory-directory
(d) Directory-snooping
Cohérence des caches
 Protocole MESI: 2 bits par ligne,
fonctionnement en Write Back (Pentium)
 Modified:
Modified: La ligne dans le cache est modifiée
et différente de la mémoire
 Exclusive
Exclusive:: Même que la mémoire mais pas
ailleurs
 Shared
Shared:: Même que la mémoire et peut être
ailleurs
 Invalid
Invalid:: Ne contient pas de données
Write Once sur L1
 Première lecture copie la ligne sur L1 et
L2. L1 est S
 Première écriture. On applique un write
through sur L2 et L1 devient E
 Ecritures suivantes: on modifie seulement
L1 qui devient M
 En cas de remplacement de la ligne: si M
alors Write Back sur L2
 Première lecture: L2 est positionnée à E
 Première écriture: L2 devient M
 En cas d’accès à cette ligne par un autre
256
Interface 64
64 bits
maître du bus:
 En lecture: L2 bloque la demande et envoie
l’adresse au processeur qui déclenche un
Write Back (de L1), L2 libère la demande
 Idem en écriture avec un write back en
mémoire avant libération de la demande. (L1
et ) L2 devient I.
Diagramme Pentium 4
(Simplifié)
Prédiction
branch
I cache
Sur L2
Prefetch
buffers
32
32
ALU ALU
int
int
32
Floating
point
unit
32
64
Registres
Mul
Registe int
32
Add
D cache
Div
Le Pentium
Organisation Cache Power PC
 601 – simple 32kb 8 way set associative
 603 – 16kb (2 x 8kb) two way set
associative
 604 – 32kb
 610 – 64kb
 G3 & G4
 64kb L1 cache
 8 way set associative
 256k, 512k or 1M L2 cache
 two way set associative
PowerPC G4
Comparaison tailles de Cache
Mémoire entrelacée
 Réduire la différence entre vitesse de la
mémoire et vitesse du processeur
 Augmenter le débit de la mémoire de telle
sorte que plusieurs mots soient accédés
en même temps
 Equivalence entre débit mémoire, débit
bus et débit CPU
Construction
 La mémoire est construite avec plusieurs
modules.
 Chaque module travaille de façon
indépendante.
 Ces modules sont connectés à un ou des
bus ou un réseau de connexion.
Organisation
Fonctionnement
 Lorsqu’une adresse est présentée à un
 La mémoire supporte un adressage
module, il faut un cycle mémoire pour
réaliser la lecture/écriture.
 Idée: Présenter différentes adresses à
différents modules en même temps.
linéaire
 L’organisation de la mémoire dépend de la
projection de cet adressage sur la
mémoire physique
Accès par bloc
 En plus de l’accès aléatoire, on utilise
souvent un accès par bloc. (Bloc
d’adresses consécutives)(cf. cache).
 On peut prendre en compte cette
contrainte pour améliorer le débit de la
mémoire lors d’accès à des blocs.
Adressage
 Deux
formats d'adressage existent
– Low order interleaving : les bits de
poids faible référencent le module, les
bits de poids fort donnent le
déplacement dans le module.
– high order interleaving : les bits de
poids fort référencent le module, les
bits de poids faible donnent le
déplacement dans le module.
Low--order interleaving
Low
High--order interleaving
High
Registre adresse
Offset Module
Registre adresse
0
m
1
m+1
m-1
2m-1
m(w-1)
mw-m+1
mw-1
Registre data
Module Offset
0
1
w
w+1
(m-1)w
mw-w+1
w-1
2w-1
mw-1
Registre data
Parallèle/pipeline
Accès parallèle
 Les accès à des données multiples
 La largeur du bus de donnée est égale au
peuvent alors être
 parallélisés : tous les bancs démarrent
en même temps
 pipelinés. Les bancs sont activés
successivement
Accès parallèle
nombre de bancs qui travaillent en
parallèle
 Les bancs travaillent
 soit sur la même adresse,
 soit sur des adresses différentes
Accès pipeline
 Les adresses sont envoyées à chaque
Bus data extra Large
cycle vers un banc différent
 Une adresse différente peut être produite
à chaque cycle (vitesse du CPU)
 La même adresse à tous les bancs en un
seul cycle
CPU
s
é
l
e
c
t
e
u
r
Registre
adresse
Accès pipeline
Adresses différentes
Registre
data
Bus data
Modules
Temps d’accès mémoire
CPU
s
é
l
e
c
t
e
u
r
Registre
adresse
Même adresse
Modules
Temps d’accès mémoire
Deuxième accès
Nouvelle
adresse
Temps
Temps

Documents pareils