Sistemas Distribuídos Classificação de Flynn Fonte: Professoras. Sarita UFRJ e Thais V. Batista - UFRN
Arquiteturas Paralelas Computação Paralela Conceitos Permite a execução das tarefas em menor tempo, através da execução em paralelo de diversas tarefas. O paralelismo pode ser obtido em diversos níveis, com ou sem o uso de linguagens de programação paralela. Arquiteturas de diversos tipos, elaboradas para aplicações específicas, podem ser utilizadas para acelerar a execução dessas aplicações. 2
Arquiteturas Paralelas Computação Paralela Conceitos Programação Seqüencial Um servidor, atendendo vários clientes, um por vez Programação Concorrente Um servidor, atendendo vários clientes através de uma política de escalonamento no tempo Programação Paralela Vários servidores, atendendo vários clientes simultaneamente no tempo 3
Arquiteturas Paralelas Computação Paralela Aplicações Genoma Humano Turbulência dos Fluidos Dinâmica de Veículos Circulação de Oceanos Dinâmica de Fluidos Viscosos Modelagem de Supercondutores Cromodinâmica Quântica Visão por Computador Farmacêutica Biologia Estrutural Previsão do Tempo (precisão > 72 hs) 4
Arquiteturas Paralelas Existem diversas classificações para as arquiteturas paralelas Devido a constante evolução, nenhuma classificação consegue abranger todas as arquiteturas existentes Classificação de Flynn (1972): Some computer organizations and their effectiveness, IEEE Transactions on Computers, vol. C-21, pp. 948-960, 1972. Mais conhecida Baseia-se na unicidade e multiplicidade do fluxo de dados e instruções 5
Fluxo de instruções Arquiteturas Paralelas Classificação de Flynn Fluxo de dados Único Múltiplo Ú n i c o SISD Single Instruction Single Data SIMD Single Instruction Multiple Data M ú l t i p l o MISD Multiple Instruction Single Data (não implementável) MIMD Multiple Instruction Multiple Data 6
Arquiteturas Paralelas Classificação de Flynn SISD: único fluxo de instrução, único fluxo de dados classe que representa os computadores convencionais (seriais) as instruções são executadas serialmente, porém os estágios (busca da instrução, decodificação, busca do operando e execução) podem ser sobrepostos (pipeline) pode-se saber o que está ocorrendo exatamente em cada instante de tempo e reproduzir o processo passo a passo mais tarde está presente nos sistemas computacionais cujo processador é single core 7
Arquiteturas Paralelas Classificação de Flynn SISD FI FI FD UC UP M FI - Fluxo de instruções M - Memória FD - Fluxo de dados UC - Unidade de Controle UP - Unidade de Processamento 8
Arquiteturas Paralelas Classificação de Flynn SISD Exemplo (SISD) Considere 2 processos desejando fazer o mesmo cálculo abaixo: LOAD A(I) B(I)=A(I)*4 => MULT 4 STORE B(I) TEMPO: t 1 t 2 t 3 t 4 t 5 t 6 Processador P LOAD A(1) Processador P MULT 4 Processador P STORE B(1) Processador P LOAD A(2) Processador P MULT 4 Processador P STORE B(2) 9
Arquiteturas Paralelas Classificação de Flynn SIMD SIMD: único fluxo de instruções, múltiplo fluxo de dados classe que representa os processadores matriciais, paralelos e associativos uma única unidade de controle que envia um fluxo de instruções para vários processadores os processadores recebem a mesma instrução ao mesmo tempo e atuam sobre diferentes fluxos de dados trabalha com threads já estão sendo utilizadas GPUs (Graphics Processor Units ou Unidades de Processamento Gráfico) para o processamento paralelo e elas empregam SIMD. 10
Arquiteturas Paralelas Classificação de Flynn SIMD FI FI UP FD M UC FI UP FD M FI... UP FD... M Memória 11
Arquiteturas Paralelas Classificação de Flynn SIMD Exemplo (SIMD): 3 processos desejando realizar o cálculo abaixo LOAD A(I) B(I)=A(I)*4 => MULT 4 STORE B(I) TEMPO: t 1 P 1 LOAD A(1) P 2 LOAD A(2) P 3 LOAD A(3) t 2 P 1 MULT 4 P 2 MULT 4 P 3 MULT 4 P 1 P 2 P 3 t 3 STORE B(1) STORE B(2) STORE B(3) 12
Arquiteturas Paralelas Classificação de Flynn MIMD MIMD: múltiplo fluxo de instruções, múltiplo fluxo de dados vários processadores ou processadores multicore, cada um controlado por uma unidade de controle processadores recebem instruções diferentes e operam sob fluxo de dados diferentes podem ser síncronos ou assíncronos trabalha com threads essa é, atualmente, a classificação mais utilizada nos sistemas computacionais 13
Arquiteturas Paralelas Classificação de Flynn MIMD UC FI UP FD M FI UC FI UP FD M FI............ UC FI UP FD M FI Memória 14
Arquiteturas Paralelas Classificação de Flynn MIMD Exemplo (MIMD) obrigatório threads TEMPO: P 1 Programa principal Inicializa Dispara tarefa A Dispara tarefa B P 2 P 3 Tarefa B Tarefa A Tarefa C Espera por processador Fim da tarefa B Dispara tarefa C Tarefa D Espera por processador Fim da tarefa A Dispara tarefa D Espera fim de todas as tarefas Fim da tarefa C Fim da tarefa D Junta resultados Fim Fim(B) Tarefa C Fim(C) Fim(A) Tarefa D Fim(D) 15
Modelos de acesso à memória Um computador convencional consiste de um processador executando um programa armazenado na memória: Instruções para o processador Dados para/do processador Memória principal Processador 16
Modelos de acesso à memória Cada lugar da memória possui um endereço que inicia em 0 e vai até 2 n - 1, onde n é o número de bits do endereço Em computação paralela, pode-se ter: memória compartilhada (multiprocessadores) memória distribuída (multicomputadores) 17
Memória Compartilhada Distribuída Tipos de Sistemas Multiprocessador Multiprocessadores: duas ou mais CPUs compartilham uma memória compartilhada Multicomputadores: cada CPU tem sua prórpia memória privada 18
Memória Compartilhada Distribuída Objetivo: Multicomputadores comunicarem-se via memória compartilhada 19
Memória Compartilhada Distribuída Característica: baseada em páginas Nenhum processador pode acessar diretamente a memória de outro processador (NO Remote Memory Access NORMA) Funcionamento: Quando um processador referencia uma página remota, esta página deve ser buscada. A página migra dinamicamente pela rede Os processos acessam a memória sem ter conhecimento que páginas estão em locais remotos e serão transferidas pela rede 20
Memória Compartilhada Distribuída baseada em páginas 21
Memória Compartilhada Distribuída baseada em Variáveis Compartilhadas Organização da memória compartilhada de uma forma mais estruturada Característica: Apenas variáveis e estruturas de dados são compartilhadas Como manter uma base de dados distribuída e replicada? Dois exemplos de implementação: Munin Midway 22
Memória Compartilhada Distribuída baseada em Variáveis Compartilhadas: Munin Variáveis compatilhadas incluem a palavra chave shared para o compilador reconhecê-las Acesso a variáveis compartilhadas são feitas como se fosse local. Se a variável não está presente localmente, uma falta de página acontece e o Munin passa a ter o controle do sistema. Tipos de Variáveis permitidas: Variáveis comuns Variáveis Compartilhadas Variáveis Sincronizadas 23
Memória Compartilhada Distribuída Características: baseada em Objetos processos em múltiplas máquinas compartilham um espaço abstrato que contém objetos compartilhados a localização e o gerenciamento de objetos é realizado pelo ambiente de execução qualquer processo pode invocar métodos nos objetos Vantagens sobre os outros métodos: É mais modular que outras técnicas A implementação é mais flexível porque o acesso é controlado Sincronização e acesso pode ser integrados 24
Memória Compartilhada Distribuída baseada em Objetos Vantagens sobre os outros métodos: É mais modular que outras técnicas A implementação é mais flexível porque o acesso é controlado Sincronização e acesso pode ser integrados 25
MIMD com Memória compartilhada A mesma memória é acessada pelos múltiplos processadores Sincronização entre tarefas é feita por escrita/leitura na/da memória compartilhada e usuário é responsável por sua especificação Um lugar da memória não pode ser modificado por uma tarefa enquanto outra o estiver acessando 26
MIMD com Memória compartilhada Comunicação entre tarefas é rápida Escalabilidade limitada pelo número de caminhos entre memória e processadores UC 1 UC 2 UC n 27
MIMD com Memória compartilhada Usuário é responsável pela sincronização Programação: Linguagens de programação paralela Construções e instruções paralelas permitem declarações de variáveis compartilhadas e seções paralelas de código Compilador responsável pela geração do código final executável Uso de Threads neste contexto Seqüências de código escritas em alto nível para processadores individuais que podem acessar localidades compartilhadas 28
MIMD com Memória compartilhada Exemplos: SMP (Symetric MultiProcessors) SGI Power Chalenge máquinas da Sun Microsystems Silicon Graphics NUMA (NonUniform Memory Access) 29
MIMD com Memória distribuída Memória fisicamente distribuída entre os processadores e cada memória local só pode ser acessada pelo seu processador Tarefas se comunicam através de troca de mensagens e a sincronização entre as tarefas é feita através dessa troca 30
MIMD com Memória distribuída Programação: Bibliotecas com rotinas para passagem de mensagens que são ligadas a programas seqüenciais convencionais são bastante utilizadas Problema dividido em um número de tarefas que se comunicam 31
MIMD com Memória distribuída UC 1 UC 2 UC n 32
MIMD com Memória distribuída MPP (Massively Parallel Processors) interconectadas por rede de alta velocidade boa escalabilidade (podem ser formadas por uma grande quantidade de máquinas) complicadas de programar alto custo (em torno de US$ 1.000.000) Exemplos: Intel Paragon Cray T3E Thinking Machines CM-5 33
MIMD com Memória distribuída COW (Cluster of Workstations) utilização de estações de trabalho em uma rede local de processamento baixo custo boa relação custo/benefício 34
Arquiteturas Paralelas Arquiteturas Paralelas SISD SIMD MISD MIMD (Maquina de Von Neumann)? Vector Processor Array Processor Multi- Processors Multi- Computers UMA COMA NUMA MPP COW Bus Switched CC- NUMA NC- NUMA Grid Fonte: A. Tanenbaum Structured Computer Organization 35
Site Interessante Para maiores exemplos acerca dos supercomputadores (modelos, características, etc) visite o site www.top500.org