Multiprogramação leve em arquiteturas multi-core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação Considerações finais Programa de Verão 2008 Petrópolis,. 1 2 Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação Considerações finais Lei de Moore Motivação da programação em multi-core 3 4
Desenvolver as habilidades de programação concorrente em arquiteturas multi-core. Discutir os benefícios da utilização de arquiteturas multi-core no desenvolvimento de programas concorrentes. Apresentar um conjunto de ferramentas para desenvolvimento de programas concorrentes em arquiteturas multi-core. Conceitos da arquitetura multi-core Evolução Arquitetura básica Produtos de mercado Conceitos e princípios Programação concorrente e paralela Componentes de um programa concorrente Multiprogramação leve 5 6 Conceitos da arquitetura multi-core Multiprogramação leve Fluxo de execução e sincronização Ferramentas de programação POSIX threads.net Framework OpenMP Conceitos da arquitetura multi-core Multiprogramação leve Técnicas para otimização de desempenho 7 8
(von Neumann, 1945) Execução seqüencial para dados e programas Efeito colateral Processador Execução seqüencial para dados e programas Efeito colateral Gargalo de von Neumann Processador Entrada Unidade de controle Unidade lógica e aritmética Saída Entrada Unidade de controle Unidade lógica e aritmética Saída Banco de registradores Banco de registradores 9 10 Gargalo de von Neumann de cache Entrada Processador Unidade de controle Cache Banco de registradores Unidade lógica e aritmética Saída Outras otimizações introduzem paralelismo de execução Pipeline Incorpora o esquema proposto por cadeias de produção Como as unidades funcionais do processador são responsáveis por atividades independentes elas podem operar simultaneamente Um pipeline em 3 estágios pode permitir a execução simultânea de até 3 instruções: Busca instrução I 1 I 2 I 3 I 4 I 5 I 6 Decodifica I 1 I 2 I 3 I 4 I 5 I 6 Executa Superescalar I 1 I 2 I 3 I 4 I 5 I 6 11 12
Outras otimizações introduzem paralelismo de execução Pipeline Superescalar Permite a execução de n instruções simultaneamente (comum n=4) Suposição: as instruções requerem unidades de processamento disjuntas Exemplo: utilização de aritmética inteira e de ponto flutuante por duas instruções consecutivas É comum também que o hardware duplique recursos de processamento mais freqüentemente utilizados Outras otimizações introduzem paralelismo de execução Pipeline Superescalar Pipeline+Superescalar Em ambos casos o programador pode escalonar as instruções no seu código para tirar proveito do paralelismo de baixo nível oferecido Evitar saltos Evitar manipular dados globais Agrupar instruções diferentes Compiladores, em geral, empregam técnicas que otimizam o código de forma satisfatória 13 14 Lei de Moore Previsão de que o número de transistores em um circuito integrado dobraria a cada 24 meses. Lei de Moore Previsão de que o número de transistores em um circuito integrado dobraria a cada 24 meses. Custo por componente Número de componentes por circuito integrado (intel.com) (intel.com) 15 16
Lei de Moore Previsão de que o número de transistores em um circuito integrado dobraria a cada 24 meses. Redução dos custos Aumento da velocidade No entanto, existe um limite tecnológico Densidade de potência: a questão do aumento do consumo pode trazer mais problemas que benefícios Os tempos de acesso a memória Aumento da freqüência em 1% incorre em aumento de consumo na casa de 3% e aumento de desempenho na ordem de 0,66% (intel.com) Classificação de Flynn (Flynn, 1972) Segundo fluxos de controle e de dados Controle Dados Simples Múltiplo Simples SISD von Neumann MISD dataflow, pipeline Múltiplo SIMD array, sistólico MIMD multicomputadores, multiprocessadores 17 18 Classificação de Flynn (Flynn, 1972) Classificação por compartilhamento de memória Extensão a classificação de Flynn para a classe MIMD considerando a apresentação da memória MIMD UMA: Uniform Memory Access Multiprocessador global a todos os processadores Tempo de acesso idêntico a qualquer endereço de memória Fracamente acoplado Espaço de endereçamento múltiplo NORMA NOn-Remote Memory Access Fortemente acoplado Espaço de endereçamento único UMA Uniform Memory Access NUMA Non Uniform Memory Access P 1 M 1 P 2 M m P p Meio de comunicação Configuração de uma máquina UMA com p processadores e m módulos de memória 19 20
UMA: Uniform Memory Access Multiprocessador global a todos os processadores Tempo de acesso idêntico a qualquer endereço de memória Cada processador pode contar com uma cache própria P 1 P 2 P p UMA: Uniform Memory Access SMP: Symmetric MultiProcessor P 1 P 2 P p Barramento ou crossbar M 1 M m Meio de comunicação Configuração de uma máquina UMA com p processadores e m módulos de memória Os processadores são idênticos e operam como definido pela arquitetura von Neumann O acesso a memória é compartilhado 21 22 Programação concorrente Concorrência Possibilidade de execução simultânea de dois ou mais fluxos de execução, não impedindo disputa por recursos Importante: a definição inclui a idéia de disputa por recursos mas não é restrita à ela! Ótica de Sistemas Operacionais Mais ainda, concorrência incorpora a idéia de que existe uma convergência dos fluxos para um ponto comum Uma eventual sincronização A produção do resultado final E também para idéia de ação colaborativa Programação concorrente Concorrência Indica independência temporal O número de atividades concorrentes pode ser maior que a quantidade de recursos de processamento disponíveis Paralelismo Indica execução simultânea A quantidade de recursos de processamento disponível permite que duas ou mais atividades sejam executadas simultaneamente É usual utilizar a expressão programação paralela para o tipo de programação focada em desempenho Na nossa terminologia, programação paralela e programação concorrente são utilizadas com o mesmo significado 23 24
Programação concorrente Diversos níveis de concorrência Intra-instrução CISC Complex Instruction Set Computer, superescalares Entre instruções Hardware pipeline, registradores vetoriais X De bloco Diretivas paralelizantes, compiladores paralelizantes Procedimental Funções, procedimentos, subprogramas De processos Troca de mensagens De aplicações Grades computacionais Nosso escopo: Multiprogramação leve Motivação da programação em multi-core Tendência Limites tecnológicos para aumento de desempenho com foco no aumento da freqüência de clock Arquiteturas com menor consumo de energia Grande problema da sociedade moderna Ainda mais cores no futuro próximo Facilidade de exploração Reflete naturalmente o modelo de programação multithread Suportado pelos SOs atuais Oportunidade Migração das maioria das aplicações desenvolvidas para mono-core Aumento de desempenho Execução paralela de aplicações em HW de baixo custo 25 26 Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação Considerações finais Multiprogramação leve em arquiteturas multi-core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas http://gersonc.anahy.org Programa de Verão 2008 27 Petrópolis,. 28