memória compatilhada distribuída

26
Memória Compatilhada Distribuída Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Upload: colin

Post on 12-Feb-2016

75 views

Category:

Documents


0 download

DESCRIPTION

Bruno M. Carvalho Sala: 3F2 Horário: 35M34. Memória Compatilhada Distribuída. Introdução. Como compartilhar informações entre processadores? Mensagens em multicomputadores Memória compartilhada em multiprocessadores - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Memória Compatilhada Distribuída

Memória Compatilhada Distribuída

Bruno M. CarvalhoSala: 3F2

Horário: 35M34

Page 2: Memória Compatilhada Distribuída

Introdução

• Como compartilhar informações entre processadores? – Mensagens em multicomputadores– Memória compartilhada em multiprocessadores

• Comunicação através de mensagens cria novas preocupações, como mensagens perdidas, bufferização, bloqueios, etc.

• Multicomputadores são fáceis de contruir mas difíceis de programar

• Multiprocessadores são difíceis de construir mas fáceis de programar

Page 3: Memória Compatilhada Distribuída

Memória Compartilhada

• O uso de memória compartilhada distribuída (DSM) simula um espaço de endereçamento compartilhado por multicomputadores

• Referências a páginas locais são feitas pelo hardware. Page faults de páginas remotas são atendidos pelo SO como se fossem um acesso ao disco local

• Sistema fácil de contruir e programar, mas sua performance não é adequada em aplicações onde se tenha muitas page faults

Page 4: Memória Compatilhada Distribuída

Memória Compartilhada

• Pode-se compartilhar somente uma parte do espaço de endereçamento

• Replicação de variáveis compartilhadas em várias máquinas. Leituras locais e escritas através de atualização de multicópias

• Compartilhamento de objetos (dados mais métodos)

Page 5: Memória Compatilhada Distribuída

Memória no Chip

• Memória pode estar contida no chip com barramento conectando processadores a memória

• Escalabilidade muito baixa• Complicado e caro

Page 6: Memória Compatilhada Distribuída

Multiprocessadores de Barramento

• Barramentos ligam CPUs a memória e outros dispositivos como E/S

• Pode-se ligar várias CPUs ao mesmo bus• Para melhorar performance, usa-se caches nas

CPUs• Caches write-trough snoopy (bisbilhoteiras)

“escutam” barramento e sabem quando algum conteúdo de sua cache fica inválido (escrita por outra CPU)

Page 7: Memória Compatilhada Distribuída

Multiprocessadores de Barramento

• Conteúdo de uma posição de uma cache que foi escrita por outra CPU pode ser atualizada ou marcada como inválida

• Protocolo write-once dá possessão temporária de posições da memória

• Entradas podem ser inválidas, limpas ou sujas• Posições acessadas para leitura podem ser

armazenadas em várias caches ao mesmo tempo• Em escritas, uma cache que quer escrever uma

posição que outra está escrevento toma controle

Page 8: Memória Compatilhada Distribuída

Multiprocessadores de Barramento

• Entrada na nova cache é marcada como suja (dirty) e na antiga como inválida

• Atualização na memória é feita quando posição da cache é retirada da mesma

• Este protocolo tem três carcterísticas importantes:– A consistência é atingida usando-se caches snoopy– O protocolo pode ser construído na unidade de

gerenciamento de memória– O algortimo inteiro é executado em menos que um

ciclo de memória

Page 9: Memória Compatilhada Distribuída

Multiprocessadores em Anel• Espaço de endereçamento único é dividido em partes privada e

compartilhada, que é comum a todas máquinas (Memnet)• A interface do anel, a MMU (unidade de gerenciamento de

memória), a cache e parte da memória são integradas no dispositivo Memnet

• Não possui memória global centralizada, e cada bloco de 32 bytes no espaço compartilhado tem uma máquina home na qual memória está sempre reservada no campo memória home

• Um bloco pode ser cached em outra máquina que não a home• Cada entrada na tabela do Memnet tem bits que indicando o

estado do bloco da cache

Page 10: Memória Compatilhada Distribuída

Multiprocessadores de Anel• Um bloco read-only pode estar presente em várias máquinas

read-write só pode estar presente em uma máquina• Um bloco não precisa estar na sua máquina home• O dispositivo Memnet em cada máquina tem uma tabela que

contém uma entrada para cada bloco, indexada pelo número dos blocos

• Quando uma máquina precisa ler um bloco que não está presente localmente, uma mensagem é enviada ao anel (aapós adquirir o token) solicitando-o, e quando a mensagem retorna, o bloco está nela

• No caso de escrita, blocos em outrs máquinas precisam ser invalidados primeiro

Page 11: Memória Compatilhada Distribuída

Multiprocessadores Switched• Sistemas com barramento ou anel não tem boa escalabilidade• Pode-se melhorar escalabilidade diminuindo a comunicação

necessária (cache) ou aumentando a capacidade de comunicação

• Uma alternativa e se contruir um sistema hierárquico, com algumas CPUs em um barramento (cluster), conectá-los com barramentos intercluster, e criar outros níveis de hierarquia se necessário

• Um exemplo é a máquina Dash (Stanford), onde cada cluster tem um diretório que controla quais clusters tem cópias dos seus blocos

Page 12: Memória Compatilhada Distribuída

Multiprocessadores Switched• Dash tinha 16 clusters com 4 CPUs cada com 256MB de

memória global (16 x 16)• Caching é feita em dois níveis, e cada cache de segundo

nível monitora o barramento, e cada entrada da cache pode ser uncached, clean ou dirty

• Protocolos são baseados em possessão e invalidação, pois em cada instante cada bloco de cache tem um único dono

• Acessos a blocos são feitos de acordo com a hierarquia• Um simples acesso a memória pode requerer que várias

mensagens sejam enviadas

Page 13: Memória Compatilhada Distribuída

Multiprocessadores NUMA• Significa Acesso de Memória Não-Uniforme e não tenta

esconder o fato de que acesso a memórias remotas são mais lentos do que a memória local, isto é caching não é usado

• Código e dados são automaticamente movidos para onde são necessários. Performance depende de onde a página está localizada na memória

• Page faults geram uma decisão pelo SO, se deve replicar a página sem mudar a página original (leitura), ou se devem mapeá-las como de acesso remoto ou transferi-las (escrita)

• Decisão vai afetar performance enormemente

Page 14: Memória Compatilhada Distribuída

Multiprocessadores NUMA• Caso decisão não tenha sido a melhor, SO pode corrigi-la

usando scanners de páginas, que coleta estatísticas sobre uso das páginas e número de page-faults

• Scanner pode desmapear páginas, gerando uma nova decisão quando for acessada novamente, ou congelá-las, bloquenado sua mudança

• Scanners podem usar diferentes estratégias para relocação de páginas, como invalidar páginas que tiveram mais acessos remotos que locais

Page 15: Memória Compatilhada Distribuída

Comparação de Sistemas de Memória Compartilhada

• Sistemas de memória compartilhada vão de sistemas que mantém consistência:– inteiramente em hardware: multiprocessador com

barramento único(sequent, firefly) ou comutados (dash, alewife)

– gerenciada pelo SO: máquina NUMA (cm*, butterfly) ou DSM baseada em páginas (ivy, mirage)

– gerenciada pelo sistema de execução da linguagem: DSM de variáveis compartilhadas (munin, midway) ou DSM baseada em objetos (linda, orca)

Page 16: Memória Compatilhada Distribuída

Modelos de Consistência• Manter consistência perfeita é muito difícil, logo alguns

DSMs aceitam consistências mais relaxadas dos dados na memória

• Um modelo de consistência é um contrato entre o software e a memória, que diz que se o software obedecer certas regras a memória funcionará de acordo com o prometido

• Modelos de consistência com maiores restrições são mais fáceis de programar mas são menos eficientes do que os modelos de consistência com menores restrições

Page 17: Memória Compatilhada Distribuída

Consistência Estrita• Define que qualquer leitura de uma posição da memória x

retorna o valor gravado pela mais recente escrita• Comum em sistemas uniprocessados• Quase impossível de se obter em um DSM, já que enquanto

atualização de uma variável esteja sendo enviada pelo barramento ou rede, outro processador pode efetuar uma leitura

• Exemplos: correto (esquerda) incorreto (direita)• W(x)1 W(x)1• R(x)1 R(x)0 R(x)1

Page 18: Memória Compatilhada Distribuída

Consistência Sequencial• O resultado da execução é o mesmo como se as operações

de todos os processadores foram executadas em alguma ordem sequencial e é igual em todos os processadores

• Um método para expressar consistência sequencial é o seguinte: sequências de leituras e escritas do processo i são designadas Hi e o conjunto de todas elas é H

• Strings de H são misturados em S onde cada operação aperece somente uma vez em S (ordem das operações caso memória fosse centralizada)

Page 19: Memória Compatilhada Distribuída

Consistência Sequencial• Todos as sequências legais de S devem seguir as regras:

– Ordem dos programas deve ser mantida (se A aparece antes de B em algum Hi, então A aparece antes de B em S)

– Coerência da memória deve ser respeitada (leitura de x deve retornar valor mais recentemente escrito em x)

Page 20: Memória Compatilhada Distribuída

Consistência Causal• Faz distinção entre eventos que são causamente

relacionados e os que não são• Escritas que são causamente relaciondas devem ser vistas

por todos os processos na mesma ordem. Escritas concorrentes podem ser vistas em ordens diferentes em máquinas diferentes

• Implementação de consistência causal requer informação sobre quais processos viram quais escritas

Page 21: Memória Compatilhada Distribuída

Consistência Causal• Exemplo: 1- W(x)b e W(x)c são concorrentes

• Exemplo 2: sequência inválida (a) e sequência válida

Page 22: Memória Compatilhada Distribuída

Consistência PRAM• Escritas feitas por um so processo são recebidas pelos outros

processos na ordem em que ocorreram, mas escritas de processos diferentes podem ser vistas em ordens diferentes por processos diferentes

• Nome significa Pipelined RAM, porque escritas por um processo podem ser pipelined

• Fácil de se implementar, já que a única garantia de ordenação é em relação a escritas de um mesmo processo

Page 23: Memória Compatilhada Distribuída

Consistência Fraca• Nem todas aplicações precisam ver todas as escritas, mesmo

que desordenadas. Ex: em um processo em um loop dentro de uma região crítica, escritas são propagadas e nunca são usadas

• Utiliza uma operação para a sincronização da memória• A consistência fraca tem as seguintes características:

1. Acessos a variáveis de sincronização são sequencialmente consistentes

2. Nenhum acesso a uma variável de sincronização pode ser feito até que todas as escritas anteriores sejam completadas em todos os locais

3. Nenhum acesso a dados (escrita ou leitura) pode ser feito até que acessos prévios a variáveis de sincronização sejam finalizados

Page 24: Memória Compatilhada Distribuída

Consistência Fraca

• Estas características significam que:1. Todos os processos veêm as variáveis de sincronização na

mesma ordem2. O acesso a uma variável de sincronização força a finalização de

todas as escritas para todas as memórias3. Quando uma variável é acessada para leitura ou escrita, todas as

sincronizações prévias foram finalizadas

• Programador ou SO precisa bloquear e liberar dados

Page 25: Memória Compatilhada Distribuída

Consistência de Liberação• Na consistência fraca, quando uma variável de

sincronização é acessada, a memória não sabe se um processo está para acessar a variável ou se acabou de escrevê-la

• A consistência de liberação divide sincronização nas fases de aquisição e liberação

• Aquisição informa ao sistema de memória que uma região crítica está para ser iniciada

• Liberação informa que uma região crítica foi finalizada• Podem ser usadas com barreiras (barriers)

Page 26: Memória Compatilhada Distribuída

Consistência de Liberação• Variáveis compartilhadas que são mantidas consistentes

com as variáveis de sincronização são chamadas de protegidas

• Uma memória compartilhada distribuída tem consistência de liberação se:

1. Antes de um acesso comum a uma variável compartilhada é realizado, todos as aquisições prévias feitas pelo processo devem ter sido completadas com sucesso

2. Antes de uma liberação ser permitida, todas as leituras e escritas prévias feitas pelo processo devem ter sido completadas

3. Os acessos a aquisições e liberações devem ter consistência PRAM