Multiprogramação leve em arquiteturas multi-core

Documentos relacionados
Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores. Processamento Paralelo

Organização e Arquitetura de Computadores I

SSC510 Arquitetura de Computadores. 6ª aula

Ferramentas para Programação em Processadores Multi-Core

Caracterização de Sistemas Distribuídos

Processamento Paralelo

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Arquiteturas Paralelas

Sistemas Distribuídos

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Organização de Computadores II. Arquiteturas MIMD

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Computadores e Programação (DCC/UFRJ)

Processadores. Principal função é executar programas armazenados na memória principal.

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Linguagem de Programação II

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Programação Distribuída e Paralela. Jorge Barbosa

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

Disciplina de Arquitetura de Computadores

Arquiteturas paralelas Parte 1

Programação Concorrente e Paralela. Noemi Rodriguez

Arquitetura de Computadores Aula 11 - Multiprocessamento

Unidade I. Organização de Computadores. Prof. Renato Lellis

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Unidade 12: Introdução ao Paralelismo:

PROCESSADORES SUPERESCALARES FELIPE G. TORRES

Sistemas distribuídos. Prof. Emiliano Monteiro

Processamento Paralelo

ULA (ALU) - UNIDADE DE ARITMÉTICA E LÓGICA

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

ORGANIZAÇÃO DE COMPUTADORES

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

Conceitos Básicos Processador

Arquitetura de Sistemas Digitais

OpenMP: Variáveis de Ambiente

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

3. Unidade Central de Processamento

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Sistemas Operacionais. Conceitos de Hardware

Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h

PARALELISMO NO NÍVEL DO PROCESSADOR

Sistemas Operacionais. Adão de Melo Neto

SSC510 Arquitetura de Computadores. 7ª aula

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Organização Estruturada de Computadores Arquitetura e Organizaçãode Computadores. Nesta Aula. Abstração de Computadores. O Modelo von Neumann

Arquitetura de Computadores Unidade Central de Processamento CPU

Arranjo de Processadores

SSC0611 Arquitetura de Computadores

Prof a Andréa Schwertner Charão DELC/CT/UFSM

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Microprocessadores II - ELE 1084

Sistemas Operacionais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PARALELISMO: SMP E PROCESSAMENTO VETORIAL. Prof. Dr. Daniel Caetano

Parte I Multiprocessamento

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Desafios do Mapeamento de Processos em Arquiteturas Many-Core

Introdução a Arquitetura e Organização de Computadores. Stallings: Cap.1 e 2, Monteiro: Cap. 1, Tanenbaum: Cap. 1. Prof. Alexandre Beletti Ferreira

Transcrição:

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