Upload
phoewass
View
99
Download
1
Tags:
Embed Size (px)
Citation preview
Chapitre 12 Multiprocesseurs Cohrence du Cache
Rfrences : Support de cours de R. Katz Chapitre 8 de Hennessy-Patterson "Computer Architecture: a Quantitative Approach"ch12 - 1
Catgories de Flynn SISD ("Single Instruction Single Data") Uniprocesseurs
SIMD ("Single Instruction Multiple Data") Processeurs vectoriels Exemples : Illiac-IV, CM-2 Modle de programmation simple Faible sur-cot ("overhead") Flexibilit Conception "custom"
MIMD ("Multiple Instruction Multiple Data") Exemples : SPARCCenter, T3D Flexible Utilisation des micro-processeurs commerciauxch12 - 2
Conceptions MIMD Petite Echelle Mmoire : centralise avec un temps d'accs uniforme (uma) et une interconnexion par bus Exemples : SPARCCenter, Challenge, SystemPro
ch12 - 3
Conceptions MIMD Grande Echelle Mmoire : distribue avec un temps d'accs non uniforme (numa) et une interconnexion adaptable l'chelle utilise (mmoire distribue) Exemples : T3D, Exemplar, Paragon, CM-5
ch12 - 4
Modles de Communication Mmoire Partage Les processeurs communiquent l'aide d'un espace d'adresse partag Facile sur les machines petite chelle Avantages : Modle identique pour les uniprocesseurs et les multi-processeurs faible chelle Facile programmer Latence plus faible Plus facile d'utiliser le contrle matriel du cache
Message Les processeurs ont des mmoires prives, ils communiquent par messages Avantages : Moins de "hardware", plus facile concevoir Le cot des oprations non excutes en local est mis en vidence
Les deux modles sont possibles sur n'importe laquelle des deux bases "hardware" ch12 - 5
Proprits Essentielles de la Communication Dbit Ncessit d'avoir un trs fort dbit de communication Pb d'augmentation progressive avec le nb de processeurs Facteur de limitation pour le rseau, la mmoire, le processeur Le surcot des communications est un srieux problme
Latence Affecte la performance puisque le processeur devoir attendre Affecte la facilit de programmation: plus de rflexion est requise pour raliser un recouvrement de la communication et du calcul
Masquer la latence Comment un mcanisme peut-il contribuer cacher la latence ? Exemples : lecture anticipe des instructions, recouvrement de l'envoi de message par du calcul.
ch12 - 6
Petite Echelle Mmoire Partage
Les mmoires caches servent : Augmenter le dbit de l'ensemble mmoire/bus Rduit le temps d'accs Utile la fois pour les donnes prives et les donnes partages
Quid de la cohrence du cache ?
ch12 - 7
Le Problme de la Cohrence du CacheCPU Cache CPU Cache CPU Cache
A
100
A
660
A
100
B
200
B
200
B
200
Memory
Memory
Memory
A
100
A
100
A
100
B
200
B
200
B
440
I/O
I/O Output A gives 100 Cache and memory incoherent A A
I/O Input 440 to B Cache and memory incoherent B B
Cache and memory coherent A = A & B = B
ch12 - 8
Que Signifie "Cohrence" ? De faon informelle : Toute lecture doit renvoyer la dernire information crite Trop strict et trs difficile implmenter
Mieux : Toute criture doit finalement tre vue par une opration de lecture Toutes les critures sont vues dans l'ordre (srialisation)
Deux rgles pour garantir ceci : Si P crit x et que P1 le lit, l'criture de P sera vue par P1 si les oprations de lecture et d'criture sont suffisamment distantes Les oprations d'criture dans un mme emplacement sont srialises : L'opration d'criture la plus rcente sera vue Sinon les oprations d'criture pourraient tre vues dans un ordre illogique (une valeur plus ancienne lue aprs une valeur plus rcente)
ch12 - 9
Solutions Potentielles Espionnage du bus ("Snoopy Bus") : Envoyer les adresses de toute requte de donnes tous les processeurs Les processeurs espionnent le bus pour voir s'ils ont une copie et rpondent en fonction de ce qu'ils ont trouv Ncessite la diffusion puisque l'information concernant les blocs prsents dans la mmoire cache est au niveau des processeurs Fonctionne bien avec un bus (medium naturel de diffusion) Solution prdominante pour les multi-proc. petite chelle (la majorit du march)
Schmas Base de Rpertoires Garde trace de ce qui est partag dans un endroit centralis Mmoire distribue => rpertoire distribu (vite les goulots d'tranglement) Envoie des requtes point--point vers les processeurs Meilleure gradation que l'espionnage du bus Solution qui a prcd les mcanismes d'espionnage du busch12 - 10
Principe du protocole d'espionnageProcessor Processor ... Processor
Snoop tag
Cache tag and data
Snoop tag
Cache tag and data
... ...
Snoop tag
Cache tag and data
Single bus
Memory
I/0
ch12 - 11
Protocoles d'espionnage de Base Protocole d'Ecriture-Invalidation : Plusieurs lecteurs, un seul rdacteur Ecriture d'une donne partage : un message d'invalidation est envoy tous les caches qui espionnent. Tous les blocs qui contiennent la donne sont invalids. Echec en lecture: Ecriture directe (" Write-through") : la mmoire est jour Ecriture diffre (" Write-back") : l'espionnage du bus permet au cache qui possde la copie la plus rcente de l'envoyer
Protocole d'Ecriture-Diffusion : Ecriture d'une donne partage : diffusion sur le bus, les processeurs espionnent et mettent jour leur copie Echec en lecture : la mmoire est jour
Srialisation des critures : le bus srialise les requtes Le bus est le seul point d'arbitragech12 - 12
Protocoles d'espionnage de Base Ecriture-Invalidation vs Ecriture-Diffusion : Nom Ecrit une fois Synapse N+1 Berkeley Illinois Firefly
L'invalidation ncessite une transaction par opration d'criture L'invalidation utilise la localit spatiale : une transaction par bloc La diffusion a une latence plus faible entre l'criture et la lecture La diffusion : compromis entre le dbit (augment) et la latence (rduite)Type de Protocole Ecriture-invalidat Ecriture-invalidat Ecriture-invalidat Ecriture-invalidat Ecriture-diffusion Politique d'criture de la mmoire Machines utilisant
Ecriture diffre Premier protocole d'espionnage aprs la premire criture Ecriture diffre Ecriture diffre Ecriture diffre Ecriture diffre des donnes prives, Ecriture directe des donnes partages 1 multi-proc. avec caches cohrents Berkeley SPUR SGI Power et Challenge SPARCCenter 2000
ch12 - 13
Exemple de Protocole d'espionnage Protocole d'invalidation, cache criture diffre Chaque bloc de mmoire est dans l'un des tats : Propre dans tous les caches et mis jour dans la mmoire Modifi dans exactement un cache Absent de tous les caches
Chaque bloc du cache est dans un tat : Partag : le bloc peut tre lu Exclusif : le cache a la seule copie, celle qui peut tre crite et elle est considre comme modifie Invalide : le bloc ne contient aucune donne
Echec en lectures : espionn par tous les caches Ecriture dans un bloc propre: traite comme un checch12 - 14
Automate d'un Cache avec Espionnage 1CPU Read hit CPU Read Place read miss on bus
Place write miss on bus
Transitions d tats selon les requtes du CPUCPU Write
Invalid
Shared (read/only)CPU read miss Place read miss on bus
CPU read miss Write back dirty Block + Place read miss on bus
Etats des blocs du cacheCPU read hit CPU write hit
CPU write Place Write Miss on Bus
Exclusive (read/write)
CPU Write Miss Write back cache block Place write miss on bus
ch12 - 15
Automate d'un Cache avec Espionnage 2Write miss for the block
Invalid
Shared (read/only)
Write back block
Transitions d'tats selon les requtes du busWrite miss for this block
Exclusive (read/write)
W rit e
Read miss for this block
ba ck
bl oc k
ch12 - 16
Automate complet : Cache avec EspionnageCPU Read hit Write miss for this block Invalid CPU Read Shared (read/only)
Place read miss on bus s bu CPU on k Read s CPU Write oc ite is miss bl r m k w d c Place read ea ba CPU r e miss on bus e rit ac l W s k P s is m loc ck bu o d b bl on Extensions: e a ack r r fo ss U b i s m 4 tat: propritaire CP rite is m Write miss ite W r d propre-> modifi, envoi d'une w for block ea R ce invalidation (Protocole de a Pl Berkeley) Exclusive Etat propre&exclusif: pas (read/write) CPU Write Miss CPU read hit d'chec lors d'une criture de CPU write hit donne prive Write back block (Protocole de l'Illinois) Place write miss on bus ch12 - 17 Place write miss on bus
Write back block
Exemple
step P1: Write 10 to A1 P1: Read A1 P2: Read A1
P1 State
P2 Addr Value State
Bus Addr Value Action Proc. Addr
Memory Value Addr Value
P2: Write 20 to A1 P2: Write 40 to A2
Hypothse: A1 et A2 vont dans le mme bloc du cache Etat initial du cache : invalide A1 A2ch12 - 18
Exemple
step P1: Write 10 to A1 P1: Read A1 P2: Read A1
P1 State Excl.
P2 Addr Value State A1 10
Bus Addr Value Action Proc. Addr WrMs P1 A1
Memory Value Addr Value
P2: Write 20 to A1 P2: Write 40 to A2
Hypothse: A1 et A2 vont dans le mme bloc du cache
ch12 - 19
Exemple
step P1: Write 10 to A1 P1: Read A1 P2: Read A1
P1 State Excl. Excl.
P2 Addr Value State A1 10 A1 10
Bus Addr Value Action Proc. Addr WrMs P1 A1
Memory Value Addr Value
P2: Write 20 to A1 P2: Write 40 to A2
Hypothse: A1 et A2 vont dans le mme bloc du cache
ch12 - 20
ExempleP1 P2 Bus State Addr Value State Addr Value Action Proc. Addr Excl. A1 10 WrMs P1 A1 Excl. A1 10 Shar. A1 RdMs P2 A1 Shar. A1 10 WrBk P1 A1 Shar. A1 10 RdDa P2 A1 Memory Value Addr Value
step P1: Write 10 to A1 P1: Read A1 P2: Read A1P2: Write 20 to A1 P2: Write 40 to A2
10 10
A1 A1
10 10
Hypothse: A1 et A2 vont dans le mme bloc du cache
ch12 - 21
Exemple
step P1: Write 10 to A1 P1: Read A1 P2: Read A1P2: Write 20 to A1 P2: Write 40 to A2
P1 P2 Bus State Addr Value State Addr Value Action Proc. Addr Excl. A1 10 WrMs P1 A1 Excl. A1 10 Shar. A1 RdMs P2 A1 Shar. A1 10 WrBk P1 A1 Shar. A1 10 RdDa P2 A1 Inv. Excl. A1 20 WrMs P2 A1
Memory Value Addr Value
10 10
A1 A1 A1
10 10 10
Hypothse: A1 et A2 vont dans le mme bloc du cache
ch12 - 22
Exemple
step P1: Write 10 to A1 P1: Read A1 P2: Read A1P2: Write 20 to A1 P2: Write 40 to A2
P1 P2 Bus State Addr Value State Addr Value Action Proc. Addr Excl. A1 10 WrMs P1 A1 Excl. A1 10 Shar. A1 RdMs P2 A1 Shar. A1 10 WrBk P1 A1 Shar. A1 10 RdDa P2 A1 Inv. Excl. A1 20 WrMs P2 A1 WrMs P2 A2 Excl. A2 40 WrBk P2 A1
Memory Value Addr Value
10 10 20
A1 A1 A1 A1 A1
10 10 10 10 20
Hypothse: A1 et A2 vont dans le mme bloc du cache
ch12 - 23
Difficults de mise en uvre Alas d'criture: Impossible de mettre jour le cache avant d'obtenir l'accs au bus Sinon, un autre processeur peut prendre le bus d'abord, et crire dans le mme bloc de cache le premier Processus en deux tapes: Obtention du bus (arbitrage) Envoyer un chec sur le bus et finir l'operation Si un chec se produit sur le bloc pendant qu'on attend le bus, traiter l'chec (par ex. invalider le bloc) et recommencer le processus de mise jour. Dcoupage des transactions sur le bus : Une transaction sur le bus n'est pas atomique: plusieurs transcations peuvent tre en attente pour un mme bloc. Plusieurs checs peuvent tre entrelacs, ce qui permet deux caches de rcuprer un bloc dans l'tat Exclusif. Il faut identifier et viter les checs multiples pour un mme bloc
Rajouter du contrle pour les invalidations
ch12 - 24
Elments de ralisation Tous les processeurs sur le mme bus accs la fois aux adresses et aux donnes Ajout de commandes pour la cohrence, en plus de lecture/criture Les processeurs espionnent le bus dadresse en permanence Si une adresse = etiquette dans le cache alors invalidation ou mise jour Pour viter interfrences avec les accs au cache par le processeur - Solution 1 : dupliquer les tiquettes du cache N1 - Solution 2 : agir au niveau du cache N2, condition que N1 N2.
ch12 - 25
Elments de ralisation Le bus ralise la srialisation des critures mmoire Obtention du bus aucun autre change avec la mmoire nest possible Dans le cache, un bit dtat supplmentaire par bloc : partag/exclusif Echec accs au cache celui qui a le bloc en accs exclusif doit rpondre
ch12 - 26
Schma avec Rpertoires Distribus Une mmoire distincte par processeur Accs local ou distant via contrleur mmoire Problme de cohrence - Solution 1 : ne jamais mettre dans le cache les pages partages - Solution 2 : un rpertoire par cache mmorise ltat de chaque bloc dans chaque cache : quel cache a une copie du bloc tat du bloc: modifi/non, partag/exclusif Info par bloc mmoire ou par bloc cache ? En mmoire : + protocole simplifi (1 seul endroit) rpertoire : f(taille mmoire) vs f(taille cache) Problme de performance: laccs rpertoire devient goulot dtranglement Solution : distribuer le rpertoire avec la mmoire Chaque rpertoire mmorise quels processeurs ont des copies de blocs ch12 - 27 de la mmoire locale
Protocole avec rpertoire Semblable au protocole despionnage Partag: 1 processeurs ont le bloc, la mmoire est jour Absent des caches: invalide dans tous les caches Exclusif: 1 processeur a le bloc, la mmoire est prime
Quels processeurs accdent le bloc? Vecteur de bit: 1 bit par processeur 1 si le processeur a une copie du bloc
Rgles de simplification Ecriture dans un bloc partag => write miss Un chec bloque le processeur jusqu obtention du bloc Les messages sont traits dans lordrech12 - 28
Protocole avec rpertoire Pas de bus et pas de diffusion Le mcanisme de communication nest plus le point unique darbitrage Tous les messages reoivent une rponse explicite
Terminologie Nud local: origine de la requte Rsidence: l o rside lemplacement mmoire Nud distant: possde une copie du bloc, en mode partag ou en exclusif
Dans la suite, quelques exemples de messages A = adresse P = N de processeur
ch12 - 29
Messages du protocole avec rpertoireType Message Read miss Source Cache local Destination Rpertoire rsident Contenu Msg P, A Processeur P lit une donne ladresse A; P obtient accs partag en lecture et reoit la donne
Write miss
Cache local
Rpertoire rsident
P, A
Processeur P crit une donne ladresse A; P obtient accs exclusif et reoit la donne
Invalidate Fetch Fetch/Invalidate
Rpertoire rsident Caches distants Rpertoire rsident Cache distant Rpertoire rsident Cache distant
A A A
Invalide une copie partage ladresse A. Rcupre le bloc ladresse A et lenvoie son rpertoire rsident Rcupre le bloc ladresse A et lenvoie son rpertoire rsident; Invalide le bloc dans le cache
Data value reply Data write-back
Rpertoire rsident Cache local Cache distant Rpertoire rsident
Data A, Datach12 - 30
Renvoie une donne depuis sa mmoire rsidente (rponse un chec en lecture) R-crit une donne ladresse A (rponse un invalidate)
Automate dun cache Transitions dtats dun bloc selon les requtes CPU Invalid Etat invalide si le bloc est en mmoire seulementInvalidate
CPU Read hit
Fetch/Invalidate send Data Write Back message to home directory
CPU Read Send Read Miss message CPU read miss: CPU Write: Send Read Miss Send Write Miss CPU Write:Send msg to h.d. Write Miss message to home directory Fetch: send Data Write Back message to home directory CPU read miss: send Data Write Back message and read miss to home directory CPU write miss: send Data Write Back message and Write Miss to home ch12 - 31 directory
Shared (read/only)
CPU read hit CPU write hit
Exclusive (read/write)
Transitions dtats pour le rpertoire Meme structure que pour un cache Deux actions: Mise jour de ltat du rpertoire Envoi de msg pour satisfaire une requte
Identifier toutes les copies dun bloc mmoire Actions de mise jours des partages
ch12 - 32
Transitions dtats du rpertoire Transitions dtat des blocs pour les requtes du rpertoire Etat Uncached si en mmoire seulementRead miss: Sharers = {P} send Data Value Reply Read miss: Sharers += {P}; send Data Value Reply Shared (read only)
Uncached
Data Write Back: Sharers = {} (Write back block)
Write Miss: Sharers = {P}; send Data Value Reply msg
Write Miss: send Invalidate to Sharers; then Sharers = {P}; send Data Value Reply msg
Write Miss: Sharers = {P}; send Fetch/Invalidate; send Data Value Reply msg to remote cache
Exclusive (read/write)
Read miss: Sharers += {P}; send Fetch; send Data Value Reply msg to remote cache (Write back block)
ch12 - 33
Exemple de protocole avec rpertoire Message envoy un rpertoire => 2 actions Mise jour du rpertoire Envoi de messages pour satisfiare la requte
Etat du bloc = Uncached La valeur courante est en mmoire Read miss: la donne est envoye de la mmoire au processeur demandeur; le processeur est marqu sharing, ltat du bloc est mis shared Write miss: la donne est envoye de la mmoire au processeur demandeur; le processeur est marqu sharing, ltat du bloc est mis exclusive
Etat du bloc = Shared La valeur courante est en mmoire Read miss: la donne est envoye de la mmoire au processeur demandeur; le processeur est marqu sharing Write miss: la donne est envoye de la mmoire au processeur demandeur; un msg dinvalidation est envoy aux processeurs qui partageaient le bloc; le processeur demandeurest marqu sharing, ltat du bloc est mis exclusivech12 - 34
Exemple de protocole avec rpertoire Etat du bloc = Exclusive La valeur courante du bloc est dans le cache du processeur qui est a accs au bloc Read miss: un message de fetch est envoy au processeur aui accde le bloc; la donne est renvoye du processeur au rpertoire et au processeur demandeur; le processeur demandeur est marqu sharing, ltat du bloc est mis shared Write miss: le bloc va avoir un nouveau propritaire; un message de fetchinvalidate est envoy au processeur aui accde le bloc; la donne est renvoye du processeur au rpertoire et au processeur demandeur, qui devient le nouveau propritaire; ltat du bloc est laiss exclusive Data write back: le propritaire remplace un bloc qui tait exclusif et modifi. Le bloc est renvoy au rpertoire dorigine, dont la mmoire est mise jour. Le bloc devient uncached, et aucun nud ne le partage.
ch12 - 35
ExampleProcessor 1 Processor 2step P1: Write 10 to A1P1: Read A1 P2: Read A1
Interconnect
Directory
Memory
P1 P2 Bus Directory Memory StateAddr ValueStateAddr ValueActionProc. Addr Value Addr State {Procs}Value
P2: Write 20 to A1P2: Write 40 to A2
A1 et A2 vont dans le meme bloc de cache
ch12 - 36
ExampleProcessor 1 Processor 2step P1: Write 10 to A1P1: Read A1 P2: Read A1
Interconnect
Directory
Memory
P1 P2 Bus Directory Memory StateAddr ValueStateAddr ValueActionProc. Addr Value Addr State {Procs}Value WrMs P1 A1 A1 Ex {P1} Excl. A1 10 DaRp P1 A1 0
P2: Write 20 to A1P2: Write 40 to A2
ch12 - 37
ExampleProcessor 1 Processor 2step P1: Write 10 to A1P1: Read A1 P2: Read A1
Interconnect
Directory
Memory
P1 P2 Bus Directory Memory StateAddr ValueStateAddr ValueActionProc. Addr Value Addr State {Procs}Value WrMs P1 A1 A1 Ex {P1} Excl. A1 10 DaRp P1 A1 0 Excl. A1 10
P2: Write 20 to A1P2: Write 40 to A2
ch12 - 38
ExampleProcessor 1 Processor 2step P1: Write 10 to A1P1: Read A1 P2: Read A1
Interconnect Directory
Memory
P2: Write 20 to A1P2: Write 40 to A2
P1 P2 Bus Directory Memory StateAddr ValueStateAddr ValueActionProc. Addr Value Addr State {Procs}Value WrMs P1 A1 A1 Ex {P1} Excl. A1 10 DaRp P1 A1 0 Excl. A1 10 Shar. A1 RdMs P2 A1 Shar. A1 10 Ftch P1 A1 10 A1 A1 10 Shar. A1 10 DaRp P2 A1 10 A1 Shar. {P1,P2} 10 10 10 10
Write Back Write Back
ch12 - 39
ExampleProcessor 1 Processor 2step P1: Write 10 to A1P1: Read A1 P2: Read A1
Interconnect Directory
Memory
P2: Write 20 to A1P2: Write 40 to A2
P1 P2 Bus Directory Memory StateAddr ValueStateAddr ValueActionProc. Addr Value Addr State {Procs}Value WrMs P1 A1 A1 Ex {P1} Excl. A1 10 DaRp P1 A1 0 Excl. A1 10 Shar. A1 RdMs P2 A1 A1 Shar. A1 10 Ftch P1 A1 10 10 A1 Shar. A1 10 DaRp P2 A1 10 A1 Shar. {P1,P2} 10 Excl. A1 20 WrMs P2 A1 10 Inv. Inval. P1 A1 A1 Excl. {P2} 10 10
ch12 - 40
ExampleProcessor 1 Processor 2step P1: Write 10 to A1P1: Read A1 P2: Read A1
Interconnect
Directory
Memory
P2: Write 20 to A1P2: Write 40 to A2
P1 P2 Bus Directory Memory StateAddr ValueStateAddr ValueActionProc. Addr Value Addr State {Procs}Value WrMs P1 A1 A1 Ex {P1} Excl. A1 10 DaRp P1 A1 0 Excl. A1 10 Shar. A1 RdMs P2 A1 Shar. A1 10 Ftch P1 A1 10 A1 10 Shar. A1 10 DaRp P2 A1 10 A1 Shar. {P1,P2} 10 Excl. A1 20 WrMs P2 A1 10 Inv. Inval. P1 A1 A1 Excl. {P2} 10 WrMs P2 A2 A2 Excl. {P2} 0 WrBk P2 A1 20 A1 Unca. {} 20 Excl. A2 40 DaRp P2 A2 0 A2 Excl. {P2} 0
ch12 - 41