Arquitetura de Computadores Processamento Paralelo 1
Multiprogramação e Multiprocessamento
Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple data stream - SIMD Multiple instruction, single data stream - MISD Multiple instruction, multiple data stream- MIMD
Single Instruction, Single Data Stream - SISD Único fluxo de instrução Dado armazenado numa única memória Uni-processador
Single Instruction, Multiple Data Stream - SIMD Única instrução Controla execuções simultâneas Vários elementos de processamento Cada elemento de processamento possui sua memória de dados associada Cada instrução é executada sobre diferente conjunto de dados por diferentes processadores Processadores em Vetor e Array
Multiple Instruction, Single Data Stream - MISD Sequência de dados Transmitida para conjunto de processadores Cada processador executa uma sequência diferente de instruções Nunca foi implementado
Multiple Instruction, Multiple Data Stream- MIMD Conjunto de processadores Simulteamente executa diferentes sequências de instruções Diferente conjunto de dados Ex: sistemas SMPs, clusters e NUMA
MIMD - Overview Usado em processadores de propósito geral Cada processador pode processar qualquer instrução necessária É também ser subdivida pelo método de comunicação entre processadores e memória
MIMD: fortemente acoplado - SMP Processadores compartilham memória Se comunicam através de memória compartilhada Symmetric Multiprocessor (SMP) Compartilha memória única ou um pool Compartilham barramento para acessar memória Tempo de acesso a memória a uma dada memória é o mesmo (aprox.) para cada processador
MIMD fortemente acoplada - NUMA Nonuniform Memory Access Tempo de acesso a diferentes regioes de memória pode diferenciar
MIMD Fracamente acoplada - Clusters Coleção de processadores independetes ou SMPs Interconectados para formar um cluster Comunicação por caminho fixo ou conexão de rede
Multiprocessadores simétricos (SMP) Um computador com as seguintes características: Dois ou mais processadores similares de capacidade comparável Processadores compartilham mesma memória e E/S Processadores conectados por barramento ou outra conexão interna Tempo de acesso à memória é aproximadamente o mesmo para todos processadores Todos processadores compartilham acesso a E/S Ou através dos mesmos canais ou dedicados para o mesmo dispositivo Todos processadores podem executar as mesmas funções (simétrico) Sistema controlado por SO integrado
Taxonomia de Arquitetura de Processadores Paralelos
SISD
SIMD
MIMD Memória compartilhada
MIMD memória distribuída
Vantagens do SMP Desempenho Se alguma tarefa puder ser executada em paralelo Disponibilidade Se um processador falhar, outro pode substituir Crescimento incremental Desempenho pode ser melhorado adicionando processadores Escalabilidade Fornecedores oferem diversas soluções baseado na quantidade de processadores
Multiprocessador fortemente acoplado
Classificação pela organização Tempo compartilhado ou barramento único Memória de múltiplas portas Unidade de controle central
Barramento de tempo compartilhado Forma mais simples Estrutura e interface são similares a um processador único Funcionalidades: Endereçamento diferentes módulos no barramento Arbitragem cada módulo é master por um tempo Compartilhamento do tempo se um módulo tem acesso ao barramento, os outros são suspensos Múltiplos processadores com múltiplos módulos de E/S
Organização de um SMP
Vantagens de Barramento de Tempo Compartilhado Simplicidade Flexibilidade Confiabilidade
Desvantagens de Barramento de Tempo Compartilhado Desempenho limitado pelo tempo de ciclo do barramento Cada processador deve ter sua cache local Para reduzir número de acesso ao barramento Leva a problemas de coerência de cache Solucionado em hardware
Atribuições do SO Processos simultâneos e concorrentes Escalonamento Sincronização Gerência de memória Confiabilidade e tolerância a falhas
Aumento de desempenho Pode ser medido pela taxa de execução de instruções MIPS = f / CPI f: clock do processador em MHz CPI: média de ciclos por instruções Aumenta-se desempenho aumentando instruções que completam naquele ciclo (CPI) Pode estar alcançando o limite Complexidade Consumo de energia Solução pode ser ter vários computadores para uma mesma tarefa
Multithread e Chips de Multiprocessadores Fluxo de instruções dividido em streams menores (threads) Executados em paralelo Há uma ampla variedade de implementação multithreading
Definições de Threads e Processos Thread em processadores multithread pode, ou não, ser o mesmo de thread em software Processo: Instância do programa rudando num computador Propriedade de recursos Espaço virtual de endereçamento para manter imagem do processo Escalonamento troca de processo mais custosa Thread: unidade despachável de trabalhodentro do processo Contexto: inclui PC, SP e área de pilha Interrompível: processador pode mudar para outra thread Troca de threads Troca de threads dentro de um mesmo processo Menos custo que troca de processo
Multithread implícito e explícito Todos processadores comerciais usam multithread explícito Executa instruções concorrentemente de diferentes threads explícitas Intercala instruções de diferentes threads em pipeline compartilhado Ou executa em paralelo em pipelines paralelos Multithread implícito é execução concorrente de threads extraídos de programa sequencial Threads implícitas definidas estaticamente pelo compilador ou dinamicamente pelo hardware
Técnicas para multithreading explícito Intercalado Granularidade fina Processador lida com dois ou mais contextos de thread por vez Troca de threads em cada ciclo de clock Se thread for bloqueada ela é removida da fila Bloqueio Granularidade grossa Thread é executada até que um evento cause delay Ex: cache miss Efetivo para processador com execução em ordem Evita stall de pipeline Multithread Simultâneo (SMT) Instruções simultâneas buscadas de múltiplos threads para unidades de execução de superescalar Chip de Multiprocessamento (Multi Core) Processador replicado num único chip Cada processador executa threadas separadas
Técnicas de processadores superescalares Escalar mono-thread Pipeline simples Sem multithread Escalar com multithread intercalado Forma mais fácil de implementar multithread Troca de thread a cada ciclo de clock Estágios de pipeline próximos de ocupação total Hardware precisa troca contexto de thread entre ciclos Escalar com multithread com Bloqueio Thread executada até evento ocorra Pode parar pipeline Processador troca entre threads
Diagramas de Modelos Escalares
Modelos de entrega de instruções Superescalar Sem multithread Multithread escalar intercalado: A cada ciclo, o máximo possível de instruções entregues Atrasos causados por troca de thread são eliminados Número de instruções entregues por ciclo é limitado por dependências Multithread superescalar com bloqueio Instrução de uma thread Multithread com bloqueio
Entrega de múltiplas instruções
Processadores com entrega múltipla de instruções Very Long Instruction Word (VLIW) Ex: IA-64 Múltiplas instruções numa única palavra Tipicamente construído pelo compilador Operações que podem ser executadas na mesma palavra Pode carregar com instrução vazia (nop) Multithread VLIW intercalado Eficiência semelhante com multithread intercalado em arquitetura superescalar Multithread VLIW com bloqueio Eficiência semelhante com multithread com bloqueio em arquitetura superescalar
Entrega de Múltiplias instruções
Execução de múltiplas threads Multithread Simultâneo (SMT) Entrega múltiplas instruções por vez Uma thread pode preencher todas janelas horizontais Intruções de dois ou mais threads podem ser entregues Com threads suficientes, pode entregar máximo de instruções a cada ciclo Chip com multiprocessadores Múltiplos processadores Cada núcleo com processador superscalar Threads são passadas para cada processador Pode entregar até 2 instruções por ciclo, por thread
Paralelismo
Clusters Alternativo aos SMPs Alta performance Alta disponibilidade Formado por um grupo heterogêneo de computaros interconectados Trabalham em conjunto como se fossem um único computador
Cluster de dois computadores sem disco compartilhado
Discos compartilhados