Академический Документы
Профессиональный Документы
Культура Документы
Mmoire
Rpartie
Partage
Eric Gressier-Soudan
Cnam - 1996
Plan
Introduction
Environnement Multiprocesseur
Environnement Faiblement Coupl
Conclusion
INTRODUCTION
Mmoire
Centrale
Cache
Disque
Processeur
vitesse d'accs :
Cache
a
Mmoire Centrale
b
unit d'accs : ligne
dans une page (4Ko)
B b
a
Page A
Disque
Fichier 1
B b
a
Page A
Cache
Registres
Cache
externe
donnes
Mmoire
Centrale
banc
mmoire
Processeur
Disque
Rseau
Serveur de
fichiers
Mmoire Partage
Orientation du cours
Nous ne traitons que des problmes de gestion rpartie des donnes au niveau de la mmoire.
. La Gestion de Fichiers Rpartis concerne ce sujet mais est hors du propos de ce cours.
. La Gestion de Transactions pourrait aussi concerner ce sujet, mais elle ne sera pas traite.
Architectures Considres :
les architectures parallles de type MIMD3
donnes multiples)
Bus
Mmoire Commune
commutateur
E/S
Mmoires
Commutation de Circuits
O
Rseau Maill
Mmoire
locale
rseau d'interconnexion
Cluster
Cluster
Cluster
Rseau d'interconnexion
R
CPU
CPU
CPU
CPU
C : Cache
R : Rpertoire
mmoire
prive
CPU
Rseau d'interconnexion
Rseau :
Rseau Local, Anneau, Anneau "Chordal", Arbre binaire,
Etoile, Hypercube, Rseau maill, Tore, Mesh...
Anneau Chordal
de degr 2
Mesh 3x3
Tore 3x3
Environnement
Multiprocesseur
"hit", succs lors d'une requte au cache, au contraire de "miss", qui est employ
lors d'un dfaut d'accs au cache
9
Adresse
Donnes
Donnes
Processeur
Adresse
Instructions
Cache
Donnes
Donnes
Adresse Mmoire
Instructions Principale
Cache
Instructions Instructions Instructions
Correspondance
Centrale
Cache
Mmoire
Adresse
fonction de hachage
index
donnes
0
1
2
3
Donnes
...
2. Caches associatifs
Adresse
index
fonction de hachage de
groupe
donnes
Donnes
...
MMU
Ad.
Phys
Ad.
Phys
Cache
en ad.
Physiques
CPU
Mmoire
Principale
Donnes
Donnes
L'adresse physique est calcule chaque accs.
Type de cache rserv au caches hors puce processeur.
P1
P0
Caches
Mmoire
Commune
P1
P0
->
Load X
sur
X
P0 et P1
Les copies sont cohrentes
P1
P0
X'
->
Store X'
sur P0
P1
P0
X'
P1
P0
X
X
P1
P0
X'
->
Store X'
sur P0
Protocoles Multiprocesseur
par espionnage
Exemple :Firefly
Snoopy
Cache Controler
CPU
P1
P2
Pn
Mmoire
Cache
Snoopy
...
Bus
[Contrleur
de Mmoire]
Mmoire Commune
Arbitre
de bus
Le processeur cherche la donne dont il a besoin dans le cache, s'il ne la trouve pas, il est mis en
attente jusqu' ce que celle-ci y soit amene depuis un autre cache ou depuis la mmoire commune.
Principe :
Le contrleur de cache gre le protocole de cohrence pour un processeur, il maintient la cohrence
en espionnant les transactions sur le bus effectues par les autres processeurs.
L'espionnage porte sur le tag des donnes contenues dans le cache.
Mmoire
Cache
Snoopy
...
Bus
Arbitre
de bus
Mmoire Commune
L'arbitre de bus a un rle prpondrant puisqu'il attribue le bus un processeur ou un autre quand
il y a conflit.
Les protocoles sont dpendants de la stratgie de mise jour de la mmoire commune adopte pour
les caches.
Situation initiale :
P1
P0
X
X
P0
X'
X'
I pour invalide
Effet d'une diffusion de l'criture lors de la modification de X en
X' sur P0 :
P1
P0
X'
X'
X'
NB : La mmoire centrale est mise jour cause de la politique
write-through
modifi
Important :
Un signal sur le bus, "MShared", sert dtecter si un bloc
est partag par d'autres caches. Quand un cache effectue une
transaction sur le bus, les caches qui possdent une copie de la
donne associe cette transaction positionnent Mshared pour
indiquer qu'ils la partagent.
La gestion du bus est faite de telle faon que tous les caches
puissent rpondre pendant un cycle.
une transaction sur le Bus : 4 cycles
100 ns
Comptition
acquisition du
bus
+
Adresse donne
accde
MWrite
(donne)
MShared
MRead
donnes fournies
par autre cache
(MShared)
ou mmoire
seul type de bloc qui peut-tre recopi en mmoire commune, lorsque le cache du
dernier crivain sera vid
12
PRead
PRead, PWrite
n-Shared
0
n-Dirty
PMiss
(n-MShared)
PWrite
2
PWrite (n-MShared)
8
MRead,
MWrite PWrite (n-MShared)
4
n-Shared
Dirty
MWrite
7
PMiss
MWrite 10
(MShared)
Shared
5
n-Dirty
11 PWrite (MShared)
PRead,
MRead,
PWrite (MShared)
Mwrite
12 13
MRead
Write-Back
6
Write-Through
Shared
Dirty
PRead MRead
14 15
Plusieurs caches peuvent servir la requte simultanment ... le rsultat sur le bus
est bon puisque toutes les copies sont identiques d'aprs le protocole de gestion de la
cohrence.
13
7. La copie tait modifie, et non partage ... le snoopy a dtect qu'un autre cache
veut la page pour y effectuer une criture, il va lui fournir sa copie, mais
l'hypothse 3 implique une mise jour de la copie de rfrence en mmoire
commune.
8. La copie est partage, la copie est crite localement, la mmoire commune est
mise jour, le snoopy dtecte que plus personne ne la partage, qu'il est le seul
dtenir un exemplaire. La cellule passe l'tat non partag, et non-modifie.
9. idem
10. Premire criture, effectue par un autre processeur. C'est dtect lors de la
transaction bus ... la politique write-through implique la mise jour de la version
de rfrence dans la mmoire commune.
11. Idem, sauf que l'criture est locale.
12, 13. Lecture locale, Ecriture locale avec poursuite du partage, lecture ou
criture dans un autre cache ne changent pas l'tat de la cellule.
14,15. Lecture locale, lecture dans un autre cache ne dclenche pas la mise jour
de la copie de rfrence en mmoire commune ... l'tat de la cellule ne change pas.
Ces deux derniers problmes peuvent tre agravs si le grain des lignes/blocs est trop grand, en effet
des mots peuvent tre en mmoire et ne pas tre utiliss.
On veut viser plusieurs centaines de processeurs.
solutions base de rpertoires qui contiennent des informations de localisation sur les lignes/blocs.
Environnements
Faiblement Coupls
Hypothse d'architecture
Mmoire virtuellement centralise
P1
Mmoire
Locale
Mappeur
P2
...
Pn
Rseau
Architecture de type NORMA :
. On raisonne en adresses virtuelles
. Communication par message fiable
. L'accs s'effectue l'chelle de la page
Objectif :
Offrir l'abstraction d'une mmoire commune masquant les mmoires prives.
Origine de la solution
Algorithme de gestion de la mmoire virtuelle rpartie partage tablie par Kai Li et Paul Hudak [6],
solution de type Cohrence Forte
fond sur la notion de propritaire,
utilisant les mcanismes d'invalidation sur criture 14.
=> La diffusion des critures est beaucoup trop coteuse
3 solutions :
. Gestionnaire centralis
. Gestionnaire avec rpartition statique
. Gestion Rpartie Dynamique
Les auteurs proposent des optimisations.
N page
verrou
: pour verrouiller les accs locaux/distants une page
droit d'accs
: lecture, criture, invalide
15
{sites avec une copie} : n'a un sens que si le site est propritaire de la page
- pour le Gestionnaire :
Info
N page propritaire
Verrou
Gestionnaire
propritaire
Verrou-Gestionnaire
15
Dfaut en Lecture :
G
Requte en Lecture
Redirection de la
demande vers le
propritaire
Dfaut
Mise jour
P
L
en
du copy set
Copie en Lecture
Lecture
Aprs rception
accs = lecture
accs = lecture
Dfaut en Ecriture :
G
Requte en
Ecriture
Dfaut
en
Ecriture
copy set =
aprs
invalidation
accs = criture
accs = invalide
accs = invalide
Invalidation
des copies
partir du
copy set reu
accs = invalide
Gestion Rpartie
Problme
S1
avec
propritaire
de P (E)
Diffusion
S1
S3
S3
dfaut P
E
(verrou)
S2
dfaut P
E
(verrou)
t=0
S2
diffusions :
S2 passe d'abord
t+d
S1
S1
S3
S3
P
2
S2
S2 reoit P, et traite
la demande de S3
t+d"
S2
S3 reoit P, et traite
la demande de S2
t+d"'
Notion de propritaire probable : le site n'a qu'une estimation du vritable propritaire de la page
(suggestion - hint).
Le copyset n'a de sens que quand on est le vritable propritaire de la page.
2
ProbOwn
2
ProbOwn
4
Propritaire
Propritaire
2
ProbOwn
2
ProbOwn
4
Propritaire
Propritaire
Juste aprs une recheche du propritaire qui a parcouru toute la chaine des
propritaires probables. Les champs de la table des pages de ces sites a t mis
jour avec la valeur du demandeur.
16
Algorithme [6]:
La mmoire fonctionne sur le principe d'une mmoire pagine. Lors d' un
dfaut de page, le processeur s'adresse un handler qui recherche la page
demande auprs des autres processeurs du rseau. Le mappeur est la partie du
systme attache un processeur qui rpond aux demandes de pages provenant des
autres processeurs du rseau. Les mappeurs communiquent entre eux pour
maintenir la cohrence entre les diffrentes copies des pages.
Les communications sont fiables: pas de perte de messages, pas de duplication
de messages, pas de corruption de messages, pas de dsquencement des messages,
ou alors, le protocole de transport est capable de le dtecter et de le corriger.
Un processeur effectue une invalidation lorsqu'il devient le propritaire d'une
page suite un dfaut en criture. Il effectue alors une demande d'invalidation.
L'invalidation consiste envoyer l'ensemble des sites (copyset) qui ont une copie
de la page une requte pour qu'ils changent le mode d'accs de celle-ci "nil". Cette
demande s'effectue l'aide de la primitive :
Invalider(page, ensemble de processeurs destinataires).
La rception et l'excution de la requte d'invalidation sur un processeur est
effectu par le serveur d'invalidation propre celui-ci.
Les informations que maintiennent les mappeurs sur les pages sont contenues
dans une table TabP[] , table des pages qui contient les champs suivants :
- access reprsente le mode d'accs la page : read, write, nil,
- copyset contient l'ensemble des processeurs qui ont une copie (en lecture) de la
page,
- lock joue le rle de variable smaphore pour l'accs en exclusion mutuelle la
page pendant un dfaut, deux primitives sont utilises :
LOCK() pour tester le smaphore et ventuellement bloquer le demandeur,
UNLOCK() pour dverrouiller l'accs,
- probOwner indique un propritaire estim (probable) de la page.
Le schma page suivante illustre ces lments.
processeur
table
des pages
TabP[]
dfaut de
page dtect
par le matriel
mappeur
handler
Serveur
d'Invalidation mappeur
processeur
handler
mappeur
message
changs entre
mappeurs
pour le maintien de
la cohrence
handler
processeur
Gestion
Rpartie
copyset rparti (1)
Dynamique
avec
Le copyset ne sert qu'au moment de l'invalidation, on peut imaginer une autre faon de le grer
pourvu que l'invalidation s'effectue toujours correctement.
Maintenant un site qui dtient un exemplaire de la page peut fournir la page au demandeur en lecture.
Il ajoute alors le demandeur au copyset.
graphe des propritaires probables :
vrai propritaire
vrai propritaire
2
4
3
5
2
4
3
5
Gestion
Rpartie
copyset rparti (2)
Dynamique
avec
vrai propritaire
2
4
3
5
vrai propritaire
6 effectue un dfaut en criture et est servi par 1
Propagation des demandes d'invalidation
1
2
4
3
5
intermultiMPR
processeur connexion
de
sur Pages
bus
clusters
(1 cluster)
MPR
sur
Variables
fortement coupl
MPR
sur Objets
faiblement coupl
accs distant
support par le
matriel
accs distant
support par le
logiciel
machines parallles
DASH
KSR
ARIAS(IMAG)
IVY
MUNIN
MIRAGE
TREADMARK ORCA
LARCHANT(INRIA)
CLOUDS
MIDWAY
LEASES
PHOSPHORUS(ENST)
KOAN(IRISA)
MYOAN(IRISA)
GOTHIC(IRISA)
CRL
MUNGI
SAFFRES(CNAM)
Conclusion
Rfrences Bibliographiques
Aspects Gnraux :
[1] Advanced Computer Architecture, Parallelism, Scalability,
Programmability. Kai Hwang. Mac Graw Hill.1993.
[2] Distributed Systems : concepts and Design. George Coulouris, Jean
Dollimore, Tim Kindberg. Addison Wesley 1994.
Multiprocesseurs
[3] Cache Coherence Protocols : Evaluation Using a Multiprocessor
Simulation Model. James Archibald, Jean-Loup Baer. ACM TOCS. V4. N4.
November 1986.
Annexe
ASR-Donnes rparties
Pour plus d'informations consulter ces ouvrages. La rfrence [2] est celle qui a t
la plus utilise.
Adresse
Donnes
Adresse
Donnes
Donnes
Processeur
Adresse
Instructions
Cache
Donnes
Donnes
Adresse Mmoire
Instructions Principale
Cache
Instructions Instructions Instructions
. soit l'information crire correspond une ligne entire du cache, dans ce cas on
fait de la place dans le cache avec recopie de la ligne vide vers la mmoire
principale si elle a t modifie et que la politique write-back est de rigueur
. soit la l'information crire est plus petite qu'une ligne de cache, dans ce cas on
fait de la place dans le cache comme au cas prcdent, et on lit la ligne de la
mmoire principale vers le cache, enfin on crit l'information dans la ligne qui vient
d'tre charge.
En gnral, write-allocate va avec write-back ... mais toute autre combinaison est
possible.
6. Les E/S malmnent la cohrence mmoire/cache. Deux possibilits : le contrleur
d'E/S change directement avec le cache (plutot write-back ?), ou le contrleur
d'E/S change uniquement avec la Mmoire Principale (plutot write-through ?)
7.
Gestion de la Multiprogrammation
. orient temps de rponse -> 1 programme la fois utilise tous les processeurs
. orient dbit -> plusieurs programmes utilisent en mme temps tous les processeurs
Multi-programmation => il faut un certain temps pour recharger
l'environnement d'un processus ds qu'il est lu, taux de multi-programmation
augmente =>miss ratio (taux de dfauts) augmente, d'o la ncssit d'avoir une
stratgie de dmarrage :
- dmarrage froid par vidage de tous les caches
- dmarrage chaud : on laisse agir l'algorithme de remplacement
Mode systme/mode utilisateur => un cache rserv l'excution du code
systme ? dpend du choix du type de multi-processeur symtrique/asymtrique
8. Translation des adresses virtuelles en adresses physiques : le cache peut contenir
une table de translation d'adresses (TLB - Translation Lookaside Buffer) qui
contient les correspondances <ad virtuelles-ad relles> les plus frquentes qu'utilise
le processeur.
Correspondance
Centrale
Cache
index
Mmoire
donnes
0
1
2
3
Donnes
...
L'adresse de la donne est prise puis soumise une fonction de hachage qui retourne
un index. Cet index indique la position de la donne dans le cache si elle s'y trouve.
Plusieurs adresses peuvent produire le mme index, l'adresse demande est donc
compare avec l'tiquette contenue dans la ligne pointe par l'index. Deux adresses
qui donnent le mme numro de ligne sont dites de la mme couleur. Quand la
donne recherche est trouve dans le cache, elle est envoye au processeur. Sinon,
la mmoire centrale est sollicite pour fournir la donne.
Les algorithmes de hachage peuvent prendre une partie de l'adresse de la donne
pour retrouver la ligne dans le cache (TI MicroSPARC-> 2Ko de donnes, 128
lignes de 16 octets, mot adressable de 2 octets: les bits 10 4 pour choisir la ligne, et
les bits 3 0 pour le mot dans la ligne).
2. Caches associatifs
Adresse
index
fonction de hachage de
groupe
donnes
Donnes
...
Caches virtuels
Ad.
Virt
CPU
Ad.
Virt
MMU
Cache
en ad.
Virtuelles
Ad.
Phys
Ad.
Phys
Mmoire
Principale
E/S
Donnes
Donnes
Donnes
Pour adresser le cache on se sert des adresses virtuelles utilises par le programme...
pas de translation d'adresse avant l'accs au cache, c'est donc plus rapide. Ce type de
cache pose des problmes, car c'est la MMU qui vrifie les droits d'accs d'un
programme une donne, hors celle-ci n'est sollicite que si il y a un dfaut dans le
cache.
Autres problmes :
ambiguit - le cache contient une donne rfrence par une adresse virtuelle
correcte, mais la correspondance adresse virtuelle/adresse physique a chang depuis
le moment o la donne a t charge dans le cache, il est alors difficile de conserver
la cohrence mmoire centrale/cache (cette situation peut se produire avec une mme
adresse virtuelle de deux processus diffrents).
alias - plusieurs adresses virtuelles rference la mme adresse physique, pour
chaque adresse virtuelle une ligne du cache peut contenir une version diffrente de la
donne rfrence (segments de mmoire partage d'Unix).
Le systme doit alors vider le cache pour toute opration qui risque de modifier la
cohrence cache/mmoire. Ceci peut tre frquent, et on peut perdre l'avantage
d'une gestion de cache base d'adresses virtuelles.
Le cache est vid ds qu'on change de processus lu puisque les adresses virtuelles
n'ont plus de sens. On perd ainsi le bnfice du principe de localit.
CPU
Ad.
Virt
MMU
Cache
en ad.
Virtuelles
Ad.
Phys
Mmoire
Principale
Donnes
Donnes
Une clef qui identifie le processus de faon unique est ajoute chaque ligne du
cache dans l'tiquette.
Mme principe que le mcanisme de cache prcdent. Mais pour qu'un accs au
cache russisse, il faut que l'adresse virtuelle corresponde et que la clef du processus
concorde avec celle de l'tiquette. Le cache n'a plus besoin d'tre vid ds qu'on
change de processus.
Les deux techniques suivantes sont prfres pour les architectures multiprocesseur.
marquage
par
MMU
Ad.
Virt
Ad.
Phys
Mmoire
Principale
CPU
Cache
Donnes en ad.
Virtuelles
Donnes
Tag sur Ad.
Physiques
Ad Virtuelle de la
donne recherche
<31..11>
Dplacement
<3..0>
<12..4>
Slection du
mot
dans la ligne
Ad Physique de page
MMU
Donnes
Tag
index
Etiquette partir de
l'ad. physique de page
<31..11>
Comparaison
Cache
Dfaut ou Prsence
de la donne recherche
Caches physiques
Ad.
Virt
MMU
Ad.
Phys
Ad.
Phys
Cache
en ad.
Physiques
CPU
Mmoire
Principale
Donnes
Donnes
L'adresse physique est calcule chaque accs.
Type de cache rserv au caches hors puce processeur.
CPU
espion
cache
espion
CPU
cache
...
espion
cache
Bus
E/S
Arbitre
de bus
Mmoire Commune
Que contient-il ? :
- un rpertoire des blocs contenus dans le cache (mmoire prive), avec des
informations supplmentaires sur l'tat des blocs, l'espion accde au contenu du
cache comme le fait le processeur.
- une TLB, cela dpend si le cache fonctionne sur la base d'adresses virtuelles ou
d'adresses physiques
- un traducteur qui calcule la correspondance <ad virtuelle- ad relle> qd celle-ci
n'est pas dans la TLB
[- Buffers lis aux critures : contient des invalidations ou des mises jour du cache,
mcanisme prioritaire par rapport aux accs du processeur]
[- Filtre des Invalidations -> permet de regrouper les invalidations identiques]
Rle :
Scruter le bus pour connatre les transactions effectues par les autres caches et ainsi
participer au maintien de la cohrence des copies des donnes.
Certaines informations sont partages entre le Processeur et son Espion. Si l'espion
travaille sur la mmoire prive, le processeur ne peut pas le faire :
- par exemple quand l'espion n'a pas termin d'acqurir une donne lie un accs
du processeur.
- autre exemple : conflit d'accs au rpertoire des blocs contenus dans la
mmoire prive. Une solution consisterait dupliquer le rpertoire => gain
vitesse, mais pb de cohrence du rpertoire.