Processamento Paralelo por Helcio Wagner da Silva
Introdução Tradicionalmente, o computador tem sido visto como uma máquina seqüencial Esta visão nunca foi completamente verdadeira No nível das µo, vários sinais de controle são gerados ao mesmo tempo A técnica de pipeline sobrepõe instruções, pelo menos durante as operações de busca e execução Em máquinas superescalares, várias instruções podem ser executadas paralelamente 2
Introdução Novas alternativas para o paralelismo Multiprocessadores simétricos (SMP) Clusters Maquinas com Acesso Não-uniforme a Memória (NUMA) Surgiram a partir de novas tecnologias e do barateamento do HW Objetivos 1. Melhoria do desempenho 2. Aumento da disponibilidade (tolerância a falhas) 3
Organizações de Múltiplos Processadores SISD (Única Instrução, Único Dado) Unidade de Controle (UC) fornece uma seqüência de instruções para a Unidade de Processamento (UP) UP opera sobre uma única Seqüência de Dados (SD) de uma única Unidade de Memória (UM) Exemplo: sistema uniprocessado SI SD UC UP UM 4
Organizações de Múltiplos Processadores SIMD (Única Instrução, Múltiplos Dados) UC alimenta várias UP Cada UP opera sobre uma única SD de uma UM Exemplo: Processadores vetoriais e matriciais SD 1 UP 1 UM 1 UC SI SD 2 UP 2 UM 2...... UP n SD n UM n 5
Organizações de Múltiplos Processadores MIMD (Múltiplas Instruções, Múltiplos Dados) Há múltiplas UC, cada qual alimentando sua própria UC com uma SI diferente UC 1 UC 2 UC n SI 1 UP 1 SD 1 SI 2 UP 2 SD 2... SI n SD n UP n Memória compartilhada 6
Organizações de Múltiplos Processadores MIMD (Múltiplas Instruções, Múltiplos Dados) Há múltiplas UC, cada qual alimentando sua própria UC com uma SI diferente UC 1 UC 2 UC n SI 1 SD 1 UP 1 UM 1 SI 2 SI n SD 2 UP 2 UM 2... UP n SD n... UM n Rede de Interconexão 7
Organizações de Múltiplos Processadores Classificação Única Instrução, Único Dado (SISD) Única Instrução, Múltiplos Dados (SIMD) Múltiplas Instruções, Único Dado (MISD) Múltiplas Instruções, Múltiplos Dados (MIMD) Uniprocessadores Processadores Vetorais Processadores Matriciais Memória Compartilhada (fortemente acoplados) Memória Distribuída (fracamente acoplados) Clusters Multiprocessadores Simétricos (SMP) Sistemas com Acesso Não-uniforme à Memória (NUMA) 8
Multiprocessadores Simétricos... Processador Processador Processador Rede de Interconexão... Memória Principal 9
Multiprocessadores Simétricos Vantagens potenciais sobre uma arquitetura uniprocessador 1. Desempenho 2. Disponibilidade 3. Crescimento incremental 4. Personalização do fornecimento 10
Multiprocessadores Simétricos Processo 1 Tempo Processo 2 Processo 3 (a) Tempo compartilhado (multiprogramação) Processo 1 Processo 2 Processo 3 (b) Tempo compartilhado e sobreposição (multiprocessamento) bloqueado Em execução 11
Multiprocessadores Simétricos Classificação da organização 1. Tempo compartilhado ou barramento comum 2. Memória com múltiplas portas 3. Unidade de controle central 12
Tempo Compartilhado ou Barramento Comum Processador Processador... Processador Cache L1 Cache L1 Cache L1 Cache L2 Cache L2 Cache L2 Memória Principal Subsistema de Adaptador de Adaptador de... Adaptador de 13
Tempo Compartilhado ou Barramento Comum Vantagens Simplicidade Flexibilidade Confiabilidade Desvantagem Desempenho relativamente ruim Toda referência à memória passa pelo barramento Alternativa de projeto: uso de memórias cache Problema: estabelecimento da coerência de cache 14
Memória com Múltiplas Portas... M 1 M 2 M k P 1 1...... P n m 15
Memória com Múltiplas Portas Vantagem Desempenho melhorado Cada processador tem agora seu caminho dedicado para cada módulo de memória Desvantagem Abordagem relativamente mais complexa Uma grande quantidade de circuitos lógicos deve ser adicionada ao sistema de memória Resolução de conflitos de acesso se dá de acordo com um esquema de prioridades 16
Unidade de Controle Central UC central comanda fluxos de dados e desempenha funções de arbitração e temporização Vantagem Simplicidade Toda a lógica de coordenação está na UC central Desvantagem Pouca tolerância a falhas e desempenho potencialmente ruim UC central pode vir a se tornar o gargalo do sistema Raramente utilizada atualmente 17
Políticas de Escrita na Cache Escrita Direta (write through) Toda operação de escrita é feita tanto na cache quanto na memória principal Coerência da cache fácil de se estabelecer Tráfego potencialmente desnecessário Escrita de Volta (write back) Memória principal somente e atualizada quando a linha da cache é removida Tráfego relativamente menor Coerência de cache difícil de ser mantida Soluções para a coerência de cache Baseadas em SW Baseadas em HW 18
Soluções Baseadas em SW Procuram evitar a necessidade de circuitos e lógica adicional no HW Confiam no compilador e no SO para tratar o problema da coerência de cache Problema é transferido do tempo de execução para o tempo de compilação Mecanismos usa marcação de variáveis compartilhadas, para evitar que elas não sejam armazenados na cache nunca ou em determinados períodos Decisões tendem a ser conservativas 19
Soluções Baseadas em HW Denominadas protocolos de coerência de cache Possibilitam reconhecimento, em tempo de execução, de potenciais condições para a incoerência de cache Transparentes para o programador e para o compilador Categorias: Protocolos de diretório Protocolos de monitoração 20
Protocolos de Diretório Baseados no conceito de um Controlador Geral (CG), que é parte do controlador da MP O CG mantém, na MP, um diretório que contém informações globais sobre o conteúdo de várias caches locais Desvantagens Desempenho relativamente baixo Baixa tolerância a falhas 21
Protocolos de Diretório cache P 1 666 2. Invalidar cópia local diretório 666 P1,P2,P3 CG 3. ok! 1. Requisita acesso exclusivo a linha 666 4. Acesso exclusivo (deseja alterar linha 666) P 2 666 cache 2. Invalidar cópia local 5. Linha 666 é alterada 3. ok! cache P 3 666 22
Protocolos de Diretório cache diretório 666 P1,P2,P3 CG 1. Falha ao ler linha 666 2. Escrever de volta a linha 666 P 1 666 4. Linha 666 atualizada é transferida (deseja alterar linha 666) P 2 666 cache 3. Linha 666 (atualizada) escrita de volta na MP 5. Linha 666 é alteradac cache P 3 666 23
Protocolos de Monitoração Distribuem a responsabilidade de manter a coerência de cache entre todos os controladores de cache Quando uma linha de cache compartilhada é alterada, isso é anunciado a todos os demais controladores de cache Adequada à topologia em barramento Há de se ter cuidado para que o tráfego no barramento não anule o efeito de se utilizar memória cache Duas abordagens básicas Escrita com invalidação Escrita com atualização 24
Escrita com Invalidação P 1 1. Invalidar linha 666 666 3. Alterar linha 1. Invalidar linha 666 1. Invalidar linha 666... P 2 P 3 P n 666 2. Linha invalidada 666 2. Linha invalidada 666 2. Linha invalidada 25
Escrita com Atualização P 1 2. distribuir linha 666 atualizada 2. distribuir linha 666 atualizada 666 1. Alterar linha 2. distribuir linha 666 atualizada... P 2 P 3 P n 666 3. Atualizar linha 666 666 3. Atualizar linha 666 666 3. Atualizar linha 666 26
Clusters Grupo de computadores completos interconectados, que: Trabalham em conjunto Criam a ilusão de constituir uma única máquina Benefícios (ou requisitos de projeto): Escalabilidade absoluta Escalabilidade incremental Alta disponibilidade Melhor relação custo/desempenho 27
Classificação (Simples) dos Clusters P P M Ligação de alta velocidade para troca de mensagens M (a) Servidores independentes, sem compartilhamento de discos P Ligação de alta velocidade para troca de mensagens RAID P M M (b) Discos compartilhados 28
Classificação Mais Elaborada Servidor secundário passivo Somente entra em operação em caso de falha Servidor secundário ativo Servidores separados Discos independentes: os dados de um são continuamente copiados para o outro para prover tolerância a falhas Servidores conectados a discos São ligados aos mesmos discos, mas cada servidor acessa seus respectivos volumes Servidores compartilhando discos Todos os servidores acessam simultaneamente os mesmos volumes 29
Questões de Projeto de SO Gerência de falhas Recuperação de falhas (failover) Troca de aplicação e transferência de recursos de um sistema falho para outro em operação no cluster Retorno de falhas (failback) Restabelecimento de aplicações e retorno de recursos para o sistema outrora falho, após restabelecimento Balanceamento de carga Importante durante o crescimento incremental do cluster 30
Máquinas NUMA Motivação Há um limite entre 16 e 64 para o número de processadores embarcados em uma máquina SMP Power Challenge (Silicon Graphics): 64 µp R10000 Clusters não enxergam uma grande MP global Objetivos Permitir um número grande de processadores Origin (Silicon Graphics): 1024 µp R10000 NUMA-Q (Sequent): 252 µp Pentium II Manter, de forma transparente, uma visão de uma grande e única MP 31
P 1-1 P 1-m P 2-1 P 2-m Cache L1 Cache L1 Cache L1 Cache L1 Cache L2 Cache L2 diretório Cache L2 Cache L2 diretório Memória Principal 1 Memória Principal 2 P N-1 Cache L1 P N-m Cache L1 Rede de interconexão Cache L2 Cache L2 Memória Principal N diretório 32
P 1-1 P 1-m P 2-1 P 2-m Cache L1 Cache L1 comporta -se como um µp 1 Cache L1 5 Cache L1 Posição localizada no nó 1 Cache L2 Cache L2 diretório Cache L2 Cache L2 diretório 3 4 4 2 3 2 4 2 1 2 4 5 Memória Principal 1 2 2 4 4 Memória Principal 2 P N-1 P N-m Rede de interconexão Cache L1 Cache L1 Cache L2 Cache L2 Exemplo: P2-1 requisita acesso à posição de memória 798, que está localizada no nó 1 Memória Principal N diretório 33
Redes de Interconexão 34
Sumário de Termos Acesso Uniforme à Memória (UMA) Tempo de acesso é o mesmo para todas as regiões da memória Todos processadores experimentam o mesmo tempo de acesso Acesso Não-uniforme à Memória (NUMA) Tempo de acesso depende da região da memória Processadores experimentam tempos de acesso diferentes NUMA com Coerência de Cache (CC-NUMA) Máquina NUMA onde se mantém coerência de cache 35