750 likes | 856 Views
Multiprocessadores e Paralelismo nível de Thread. Roteiro da Aula. Revisando o problema coerência Protocolo de coerência para memória baseado em Snooping Protocolo de coerência baseado em diretórios Como funciona Implementando protocolo baseado em diretórios Tipos de mensagens na rede
E N D
Roteiro da Aula • Revisando o problema coerência • Protocolo de coerência para memória baseado em Snooping • Protocolo de coerência baseado em diretórios • Como funciona • Implementando protocolo baseado em diretórios • Tipos de mensagens na rede • Mudanças do estado do bloco de cache e no diretório • Sincronização de processos • Problema em processadores DSM • Solução para processadores DSM • Comparação uniprocessadores vs. multiprocessadores
Só uma pessoa pode falar no microfone por vez • Toda modificação em conta deve ser comunicada entre os funcionários através do alto falante • Após modificações cópias devem ser inutilizadas Coerência
State Tag Data Protocolo Snooping de Coerência de Cache • Controladores de Cache “snoops” todas as transações no barramento • Transaçõesrelevantes : envolvemblocoque a cache possui • Realizaaçãoparagarantircoerência • invalida, atualiza, oufornece valor • Atualizaestado de compartilhamento do bloco de cache
State Tag Data Protocolo Snooping de Coerência de Cache • Problemas: • Aumento no número de processadores • Maisacessos à memória • Congestionamentonautilização do barramento • Aumento no número de faltasdevido à invalidaçãoporcompartilhamento
Pn P0 P1 C C C IO IO IO M M M ... Interconnection Network MemóriaDistribuída • Cadanó de processamentoinclui cache e memória local • Comunicação entre nós: Rede de Interconexão C - Cache M - Memory IO - Input/Output
Pn P0 P1 C C C IO IO IO M M M ... Interconnection Network MemóriaDistribuída • Pro: Abordagemeficazpara um grandenúmero de processadores • Pro: reduz tempo de acesso à memória local • Con: Comunicaçãobemmaiscomplexa C - Cache M - Memory IO - Input/Output
Modelos de Comunicação vs. Modelo de Memória • Comunicaçãoatravés de endereçoscompartilhados (via loads estores): multiprocessadores de memóriacompartilhada • MemóriaCentralizada (Symmetric shared memory - SMPs) • MemóriaDistribuída • Comunicaçãoexplícitaatravés de passagem de mensagens entre processadores • MemóriaDistribuída
ComunicaçãoporVariávelCompartilhada • As memóriasfisicamenteseparadassãoendereçadascomoEspaçoCompartilhadoLogicamente • As memóriaslocaispodemseracessadasporqualquerprocessador • Estes multiprocessadoressãodenominadosProcessadores DSM (distributed shared memory)
Como garantirCoerência? • Cada bloco de memória tem informação de compartilhamento armazenada em um componente chamado diretório • O que faz o diretório? • Tem informação de onde estão as cópias e do estado de cada cópia • Manda informação para as caches em caso de escritas • Faz a transferência de informações de memória requisitada entre nós de processamento
Acessos às pastas somente através do diretório • Toda modificação em qualquer cópia deve ser comunicada ao diretório • Diretório comunica a necessidade de inutilização • Diretório envia cópia mais atualizada Coerência:Diretório
ProtocolobaseadoemDiretório Interconnection Network Directory Directory Directory Local Memory Local Memory Local Memory Cache Cache Cache CPU 0 CPU 1 CPU 2
Protocolo baseado em Diretório CPU 0 CPU 1 CPU 2 Interconnection Network Bit Vector X U 0 0 0 Directories X 7 Memories Caches
CPU 0 lê X Read Miss CPU 0 CPU 1 CPU 2 Interconnection Network X U 0 0 0 Directories X 7 Memories Caches
CPU 0 lê X CPU 0 CPU 1 CPU 2 Interconnection Network X S 1 0 0 Directories X 7 Memories Caches
CPU 0 lê X X X 7 7 CPU 0 CPU 1 CPU 2 Interconnection Network X S 1 0 0 Directories Memories Caches
CPU 2 lê X X X 7 7 Read Miss CPU 0 CPU 1 CPU 2 Interconnection Network X S 1 0 0 Directories Memories Caches
CPU 2 lê X X X 7 7 CPU 0 CPU 1 CPU 2 Interconnection Network X S 1 0 1 Directories Memories Caches
CPU 2 lê X X X X 7 7 7 CPU 0 CPU 1 CPU 2 Interconnection Network X S 1 0 1 Directories Memories Caches
CPU 0 escreve 6 em X X X X 7 7 7 CPU 2 CPU 1 CPU 0 Interconnection Network Write Miss X S 1 0 1 Directories Memories Caches
CPU 0 escreve6 emX X X X 7 7 7 CPU 2 CPU 1 CPU 0 Interconnection Network X S 1 0 1 Directories Invalidate Memories Caches
CPU 0 escreve 6 em X X 7 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Caches X 6
CPU 1 lê X X X 7 6 CPU 0 CPU 1 CPU 2 Interconnection Network Read Miss X E 1 0 0 Directories Memories Caches
CPU 1 lêX X X 7 6 CPU 0 CPU 1 CPU 2 Interconnection Network Switch to Shared X E 1 0 0 Directories Memories Caches
CPU 1 lê X X X 6 6 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Caches
CPU 1 lê X X X X 6 6 6 CPU 0 CPU 1 CPU 2 Interconnection Network X S 1 1 0 Directories Memories Caches
CPU 2 escreve5 emX X X X 6 6 6 CPU 2 CPU 1 CPU 0 Interconnection Network X S 1 1 0 Directories Memories Write Miss Caches
CPU 2 escreve5 emX X X X 6 6 6 CPU 2 CPU 1 CPU 0 Interconnection Network Invalidate X S 1 1 0 Directories Memories Caches
CPU 2 escreve 5 em X(Write back) X 6 CPU 0 CPU 1 CPU 2 Interconnection Network X E 0 0 1 Directories Memories X 5 Caches
CPU 0 escreve4 emX WriteMiss X X 6 5 CPU 0 CPU 1 CPU 2 Interconnection Network X E 0 0 1 Directories Memories Caches
CPU 0 escreve4 emX X X 6 5 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Take Away Caches
CPU 0 escreve 4 em X X X 5 5 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Caches
CPU 0 escreve 4 em X X 5 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Caches
CPU 0 escreve 4 em X X X 5 5 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Caches
CPU 0 escreve 4 em X X 5 CPU 0 CPU 1 CPU 2 Interconnection Network X E 1 0 0 Directories Memories Caches X 4
Diretório • k processadores: k bits • Cadablocode memória: k presence-bits, 1 dirty-bit • Cadabloconacache: 1 valid bit, e 1 dirty (owner) bit
Operação Básica de Diretório P1 Pn … Directory $ $ Memory Directory Memory Directory • • • • N processadores: N bits • Cadablocode memória: N presence-bits, 1 dirty-bit • Cadabloconacache: 1 valid bit, e 1 dirty (owner) bit CA CA dirty bit presence bits Scalable Interconnection network
Operação Básica de Diretório • k processadores. • Cadabloco de cache namemória: k presence-bits, 1 dirty-bit • Cadablocona cache: 1 valid bit, e 1 dirty (owner) bit • FaltanaLeitura da memóriapeloprocessador i: • Se dirty-bit está OFF então • leiturada memória; • atualizap[i] para ON; • Se dirty-bit está ON então • acessalinha de cache do processadorowner (na cache: shared); • atualizamemória; • fazdirty-bit igual a OFF; • fazp[i] igual a ON; • fornecedado parai
Operação Básica de Diretório • k processadores. • Cadabloco de cache namemória: k presence-bits, 1 dirty-bit • Cadablocona cache: 1 valid bit, e 1 dirty (owner) bit • Faltadevido a Escritanamemóriapeloprocessador i: • Se dirty-bit igual a OFF então • fornecedado parai; • envia invalidations paratodas as caches que tem cópia do bloco; • fazdirty-bit igual a ON; • fazp[i] igual a ON;
Protocolo de Diretório • Estados dos blocos de memória : Trêsestados • Shared: ≥ 1 processador tem dado, memóriaatualizada • Uncached:nenhumnó (processador e cache) tem o endereço; não é válidoemnenhuma cache. • Exclusive: 1 processador (owner) tem o dado; memóriadesatualizada. • Princípiosbásicos: • Escritaem dado non-exclusive => write miss • Processadorficaesperandoatéquetodos invalidates tenhamsidoenviados e confirmados
Protocolo de Diretório • Não tem barramentopara broadcast: • Todasas mensagensdevemter o recebimentoconfirmado • Cadamensagempodeenvolveraté 3 processadores • Local nodeonde a requisiçãoorigina • Home nodeonde reside o endereço de memória • Remote node tem umacópia do bloco de cache emestado exclusive ou shared • Composição da mensagem: • P = processor number, A = address
Estados dos Blocos de Cache • Para cadabloco de cache em um sistemabaseadoemdiretório: • Estadosidênticosaosnoopy: • Invalid • Shared • Exclusive • Transiçõescausadaspor: • read misses • write misses • Invalidates • buscade dado (fetch)
Estados dos Blocos de Cache • Controladorenviamensagensde read miss e write miss para o diretório do processadorque tem o dado namemória local
CPU Read hit Estados da Cache (Write Back) CPU Shared (read/only) • Estados da cache pararequisições da CPUparacadabloco de cache • Blocosquenãoestãona cache nãosãoválidos CPU Read Invalid Send read miss msg CPU Write CPU read miss Write back block, send read miss msg Send Write Miss msg CPU Write hit Send invalidate msg CPU Write miss Send Write Miss msg Cache Block State Exclusive (read/write) CPU read hit CPU write hit CPU Write Miss Write back cache block Send write miss msg
Estados da Cache (Write Back) Diretório Invalidate msg Shared (read/only) • Estados da cache pararequisições do Directoryparacadacache block Invalid Fetch invalidate for this block Fetch, data write back Read miss for this block Write Back Block; (abort memory access) Write Back Block; (abort memory access) Exclusive (read/write)
Estados da Cache (Write Back) CPU CPU Read hit Write missfor this block Estados da cache pararequisições da CPUparacadacache block epararequisições do directioryparacadacache block Shared (read/only) CPU Read Invalid Send read miss CPU Write Send Write Miss CPU Read miss Send read miss Write missfor this block CPU read miss Write back block, Send read miss Write Back Block; (abort memory access) Fetch, data write back Read miss for this block CPU Write Send Write Miss Write Back Block; (abort memory access) Cache Block State Exclusive (read/write) CPU read hit CPU write hit CPU Write Miss Write back cache block Place write miss on bus
Estados do Diretório Read miss: Sharers += {P}; send Data Value Reply Read miss: Sharers = {P} send Data Value Reply Estados do Directory requisiçãoparacadamemory block Estado Uncached se estivernãotivercópiasna cache Shared (read only) Uncached Write Miss: Sharers = {P}; send Data Value Reply msg Write Miss: send Invalidate to Sharers; then Sharers = {P}; send Data Value Reply msg Data Write Back: Sharers = {} (Write back block) Write Miss: Sharers = {P}; send Fetch/Invalidate to remote cache; send Data Value Reply msg Read miss: Sharers += {P}; send Fetch to remote cache;sendData Value Reply msg (Write back block) Exclusive (read/write)
Exemplo 1 2 Bus • 2 processadores: 2 bits • Cadablocode memória: 2 presence-bits, 1 dirty-bit • Cadabloconacache: 1 valid bit, e 1 dirty (owner) bit
Exemplo 1 2 Bus Estados Cache: Invalid, Shared, Exclusiv EstadosDiretório (memória): Uncached, Shared, Exclusiv