05 Coherence de Cache

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