Memória Compatilhada Distribuída

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Distribuídos
Bruno M. Carvalho Sala: 3B2 Horário: 35T34
Coerência de Cache em Multiprocessadores
Sistemas Distribuídos
Arquitetura e organização de computadores
Sistemas operacionais
Barramentos Introdução.
Técnicas para operações E/S
Recuperação Como garantir a integridade da informação, em caso de avarias de HW ou SW forma de suportar a reposição de um estado consistente da informação.
Coerência de Memórias Cache e Modelos de Consistência de Memória
Coerência de Cache MC722 - Projeto de Sistemas Computacionais Prof Rodolfo Jardim de Azevedo André Costa Felipe Sodré Davi Barbosa
Sistemas de Arquivos Distribuídos
Sistemas Distribuídos
Capítulo 6 Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Threads.
Sistemas Operacionais SISTEMA DE ENTRADA E SAÍDA
Sistemas Operacionais I
Processadores – Aula 3 Professor: André Luis Meneses Silva
HARDWARE do CLP Os controladores lógicos programáveis são equipamentos com uma aplicação muito vasta dentro dos diversos processos de automação. Desta.
Processadores – Aula 3 Professor: André Luis Meneses Silva
Arquitectura de Computadores II
Proteção de Memória O sistema operacional deve impedir que um processo tenha acesso ou modifique uma página do sistema sem autorização. Proteção para páginas.
Aula prática 6 Vetores e Matrizes
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Sistemas Distribuídos
Sistemas Operacionais I
Conteúdo Processos e threads Partes do processo
Aula19: Desempenho de SSM Large-Scale MP Sincronização
Controle de concorrência
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
Pontes e Switches Como vimos anteriormente, os repetidores são usados para expandir a extensão da rede, mas que replicam todos os quadros que recebem.
Sistemas Distribuídos
SISTEMAS OPERACIONAIS I
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Sistemas Operacionais
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Processos.
SISTEMAS DISTRIBUÍDOS Transações Atômicas
Introdução a Banco de Dados Aula 04
Entrada e Saída (E/S).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 10: Interface de Sistemas de Arquivos.
Sistemas Operacionais
Infra-Estrutura de Software
Integração de Ferramentas CASE
Coerência de Cache Márcia A. Santos – RA Novembro/2005.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Faculdade Pernambucana - FAPE
Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções.
Memória.
Aula – Sistemas Operacionais
Estrutura de Interconexão
Sistemas de Memória Cache em Multiprocessadores
Bruno Iran Ferreira Maciel
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Projeto e Implementação de Sistemas de Arquivos
Arquitetura de computadores
Memória Cache.
Memórias Faculdade de Ciências Aplicadas e Sociais de Petrolina - FACAPE Ciência da Computação Professora: Cynara Carvalho
Banco de Dados Distribuídos Sílvia Cristina de Matos Soares
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Prof. Arthur Projeto Lógico de ComputadoresArquiteturas Avançadas Projeto Lógico de Computadores Prof. Arthur Arquiteturas Avançadas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas de Arquivos Capítulo Arquivos 6.2 Diretórios 6.3 Implementação do sistema.
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

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

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

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

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)

Memória no Chip Memória pode estar contida no chip com barramento conectando processadores a memória Escalabilidade muito baixa Complicado e caro

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)

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

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

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

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

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

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

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

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

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)

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

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

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)

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)

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

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

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

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: Acessos a variáveis de sincronização são sequencialmente consistentes Nenhum acesso a uma variável de sincronização pode ser feito até que todas as escritas anteriores sejam completadas em todos os locais Nenhum acesso a dados (escrita ou leitura) pode ser feito até que acessos prévios a variáveis de sincronização sejam finalizados

Consistência Fraca Estas características significam que: Todos os processos veêm as variáveis de sincronização na mesma ordem O acesso a uma variável de sincronização força a finalização de todas as escritas para todas as memórias 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

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)

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: 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 Antes de uma liberação ser permitida, todas as leituras e escritas prévias feitas pelo processo devem ter sido completadas Os acessos a aquisições e liberações devem ter consistência PRAM