Arquiteturas Paralelas



Documentos relacionados
Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

Capítulo 8 Arquitetura de Computadores Paralelos

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Avaliação de Desempenho de Sistemas. Conceitos Básicos de Sistemas e Modelos

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Máquinas Multiníveis

Organização e Arquitetura de Computadores I. de Computadores

Arquitetura de Computadores I

Introdução às arquiteturas paralelas e taxonomia de Flynn

Microarquiteturas Avançadas

Medidas de Desempenho e a Lei de Amdahl

Arquiteturas RISC. (Reduced Instructions Set Computers)

7-1. Parte 6 Otimizações da Arquitetura

Arquiteturas de Sistemas de Processamento Paralelo. Introdução

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

Algumas características especiais

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

Avaliação de Desempenho de Sistemas

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Informática I. Aula 5. Aula 5-13/05/2006 1

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

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

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

slide 0 Algoritmos Paralelos

3. Arquiteturas SIMD. 3.1 Considerações iniciais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Arquitetura de Computadores II

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Unidade 13: Paralelismo:

AVALIAÇÃO DE DESEMPENHO

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Sistema de Computação

Desempenho de Computadores

Organização de Computadores 1

Pipelining. Professor: Carlos Bazilio. Pólo Universitário rio de Rio das Ostras

Arquitetura e Organização de Computadores I

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores I

Organização de Computadores

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Introdução ao Processamento Paralelo

Sistemas Operacionais

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

Edeyson Andrade Gomes

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes

Introdução a Informática. Prof.: Roberto Franciscatto

FACULDADE PITÁGORAS PRONATEC

Sistemas Computacionais II Professor Frederico Sauer

Organização de Computadores

Organização e Arquitetura de Computadores I

Arquitetura e Organização de Computadores

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN

Comparação SDs X Scs

Arquitetura de Computadores I

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

SSC510 Arquitetura de Computadores. 6ª aula

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS DISTRIBUÍDOS

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Universidade Federal do Rio de Janeiro Pós-Gradução em Informática. Microarquiteturas de Alto Desempenho. Multithreading. Gabriel P. Silva.

Previsão do Desempenho. AC1 13ª aula Previsão do Desempenho 1

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Processos e Threads (partes I e II)

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Sistemas Operacionais Processos e Threads

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES ARQUITETURAS RISC E CISC. Prof. Dr. Daniel Caetano

MEDIDAS DE DESEMPENHO DE SISTEMA DE COMPUTADORES:

Arquitetura e Organização de Computadores

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Organização e Arquitetura de Computadores I. Introdução. Ivan Saraiva Silva Leonardo Casillo

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES

Arquitetura de Computadores

Organização e Arquitetura de Computadores I

Organização de Computadores 2005/2006 Processamento Paralelo

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores. Ivan Saraiva Silva

Programação de Sistemas para Tempo Real Capítulo 1. Luiz Affonso Guedes DCA-CT-UFRN

MEDIDA E ANÁLISE DE DESEMPENHO AULA 14 Arquitetura de Computadores Gil Eduardo de Andrade

A Evolução dos Clusters frente as demais arquiteturas de Alto Desempenho

Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware

Edeyson Andrade Gomes.

Programação Concorrente Introdução

Everson Scherrer Borges João Paulo de Brito Gonçalves

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP

Arquitetura e Organização de Computadores 2. Apresentação da Disciplina

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Transcrição:

Curso de Informática DCC/IM UFRJ Arquitetura de Computadores II Arquiteturas Paralelas Bibliografia Advanced Computer Architecture Dezsõ Sima, Terence Fountain, Péter Kacsuk Addison-Wesley, 1997 Computer Architecture: A Quantitative Approach John L. Henessy e David A. Patterson Morgan Kaufman Publishers, 3 edição, 2003

Aplicações Científicas 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 (+ 72 hs) Conceitos Básicos 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.

Conceitos Básicos Processo: Um processo é criado para execução de um programa pelo sistema operacional. A criação de um processo envolve os seguintes passos: Preparar o descritor de processo; Reservar um espaço de endereçamento; Carregar um programa no espaço reservado; Passar o descritor de processo para o escalonador. Nos modernos S.O.s, um processo pode gerar cópias, chamadas de processos filhos. Conceitos Básicos Execução concorrente está associada a idéia de um servidor atendendo a vários clientes através de uma política de escalonamento no tempo. Execução paralela está associada ao modelo de vários servidores atendendo a vários clientes simultaneamente no tempo. As linguagens de programação podem então ser classificadas como seqüenciais, concorrentes e paralelas. Seqüenciais: C, Pascal, Fortran Concorrentes: Ada, Pascal Concorrente, Modula-2, PROLOG Concorrente Paralelas: Occam-2, 3L Parallel C, Strand-88

Medidas de Desempenho Velocidade: tempo de resposta, vazão e utilização: Vazão/Taxa (Throughput): taxa na qual os pedidos são atendidos (servidos) pelo sistema. Utilização: fração do tempo em que o recurso permanece ocupado atendendo os pedidos dos usuários Tempo de resposta: tempo decorrido entre o pedido e o início/conclusão da realização do serviço (latência). Confiabilidade Probabilidade de erro Intervalo entre erros Disponibilidade Duração da falha Intervalo entre falhas Vazão Taxa na qual os pedidos são atendidos (servidos) pelo sistema. Exemplos: Sistemas em lotes: jobs por segundo; Sistemas interativos: pedidos por segundo; CPUs: MIPs ou MFLOPs; Redes: pacotes por segundo (pps) ou bits por segundo (bps); Sistemas de Processamento de Transações: Transações por segundo (TPS);

Medidas de Desempenho em Processamento Paralelo Speed-up: Mede a razão entre o tempo gasto para execução de um algoritmo ou aplicação em um único processador e o tempo gasto na execução com n processadores S(n) = T(1)/T(n) Eficiência: E(n) = S(n)/n Medidas de Desempenho Escalabilidade: Um sistema é dito escalável quando sua eficiência se mantém constante à medida que o número de processadores (n) aplicado à solução do problema cresce. Se o tamanho do problema é mantido constante e o número de processadores aumenta, o overhead de comunicação tende a crescer e a eficiência a diminuir. A análise da escalabilidade considera a possibilidade de se aumentar proporcionalmente o tamanho do problema a ser resolvido à medida que n cresce de forma a contrabalançar o natural aumento do overhead de comunicação quando n cresce.

Medidas de Desempenho Medidas de Desempenho

Técnicas de Avaliação Medição Modelagem Analítica Simulação Medição Para efetuarmos medições (com os benchmarks programas de avaliação) é preciso termos à disposição ao menos um protótipo do sistema; Normalmente é difícil comparar alternativas; O método utilizado é compilar os benchmarks e executá-los no sistema que se deseja avaliar. Os programas devem ter características de acordo com os parâmetros que se seja avaliar (CPU, E/S, Gráfico, etc.).

Modelagem Analítica Teoria das filas Filas associadas a recursos Caracterização: Processo de chegada Processo de atendimento Número de servidores Tamanho máximo da fila Política de atendimento da fila Modelagem Analítica É uma técnica aproximada, ou seja, aproxima a realidade por um modelo; Se o modelo for simples e a aproximação boa, é possível avaliar facilmente compromissos entre alternativas;

Simulação Simulação de eventos discretos; Cada evento (ex.: chegada de usuário, término de serviço, etc.) é tratado quando do instante de sua ocorrência; Simula o comportamento de um sistema real; Em geral, é possível construir um modelo muito mais próximo da realidade do que com a teoria das filas; Técnicas de Avaliação Critério Modelagem Simulação Medição Analítica Estágio Qualquer Qualquer Protótipo Tempo Pouco Médio Variado Necessário Ferramentas Analistas Linguagens de Instrumentação Programação Precisão Pouca Moderada Variada Avaliação de Fácil Moderada Difícil Compromissos Custo Baixo Médio Alto Escalabilidade Baixa Média Alta

Programas de Avaliação É o processo de comparação entre dois ou mais sistemas através de medições em que são utilizados programas de avaliação (benchmarks) como cargas de trabalho (workloads). Podem ser de vários tipos: Aplicações Reais: compiladores, processadores de texto e imagem são alguns exemplos de programas utilizados. Sofrem de problemas de portabilidade. Aplicações Modificadas: E/S removida. Scripts são utilizados para simular interatividade. Kernels: pequenos trechos de código de programas reais são extraídos de programas reais. Ex: Livermoore loops e Linpack. Programas de Avaliação Benchmarks de brinquedo: tipicamente entre 10 e 100 linhas de código para produzir um resultado previamente conhecido. Exemplos são o Crivo de Eratóstenes, Quicksort e Puzzle. São fáceis de digitar e executam em quase qualquer computador. Benchmarks sintéticos: tentam imitar a freqüência de execução média das instruções esperada em uma aplicação de um determinado tipo, mas não são extratos de programas reais. Whetstone (ponto flutuante) e Dhrystone (inteiro) são os exemplos mais populares.

Programas de Avaliação Suítes de Avaliação: coleção de programas de avaliação que tentam medir o desempenho dos processadores para uma variedade de aplicações. O exemplo de maior sucesso é o SPEC, que possui versões inteiras e de ponto flutuante, com edições em 1989, 1992, 1995 e 2000. Estão divididos em duas grandes categorias: inteiros e de ponto flutuante. O SPEC CPU2000 é constituído por 11 programas de avaliação inteiros (CINT2000) e 14 de ponto-flutuante (CFP2000). http://www.spec.org http://www.top500.org Paralelismo Níveis de paralelismo : nível de instrução (granulosidade fina): arquiteturas pipelined, superescalares e VLIW nível de thread (granulosidade média): arquiteturas multithreading, SMT nível de processo (granulosidade grossa): multiprocessadores e multicomputadores

Paralelismo Classificação de Flynn (1966): Single Instruction Stream (SI) Multiple Instruction Streams(MI) Single Data Stream (SD) Multiple Data Streams (MD) Categorias de Arquiteturas SISD (Processadores Convencionais) SIMD (Processadores Vetoriais) MIMD (Multiprocessadores) Arquitetura SIMD Arquitetura SIMD Básica: REDE DE INTERCONEXÃO M e m. M e m. M e m. Elem. Proc. Elem. Proc. Elem. Proc. Unidade de Controle M e m ó r ia de Programa

Arquitetura MIMD Arquitetura de Memória Centralizada Memória Barramento Cache Proc. Cache Proc. Cache Proc. Arquitetura MIMD Arquitetura de Memória Distribuída REDE DE INTERCONEXÃO Mem. Mem. Mem. Cache Cache Cache Proc. Proc. Proc.

Modelos de Programação Modelos Básicos de Programação: Memória Compartilhada: Todos os processos/threads compartilham de um espaço de endereçamento comum; Comunicação através da memória; Uso de semáforos para sincronização; Linguagens: Pascal e C Concorrente. Memória Distribuída: Os processos/threads não dispõem de um espaço comum para sincronização e comunicação por troca de mensagens; Linguagens: PVM, MPI, Occam-3. Arquiteturas SIMD Processadores Vetoriais Arquiteturas SIMD Arquiteturas Sistólicas

Processadores Vetoriais Os processadores vetoriais são arquiteturas pipelined do tipo SIMD, ou seja, uma única instrução opera sobre vários dados, no caso, um vetor. Um processador vetorial possui instruções para operar em vetores: um conjunto linear de valores. Uma operação vetorial típica pode adicionar dois vetores com 64 elementos em notação ponto flutuante para obter um único vetor de resultado com 64 elementos. Processadores Vetoriais A instrução vetorial é equivalente a um loop inteiro, onde cada iteração computa um dos 64 elementos do resultado, atualiza os índices e retorna para o início. As instruções vetoriais possuem as seguintes características: Cada instrução equivale a um loop O cálculo de cada resultado não depende de resultados anteriores é possível haver pipelines profundos sem a ocorrência de dependências de dados O padrão de acesso à memória para a busca dos operandos é conhecido e regular benéfico utilizar memória com interleaving

Processadores Vetoriais Podem ser de dois tipos: Memória-Memória Arquiteturas mais antigas Todas as operações vetoriais manipulam operandos na memória Registrador-Registrador Arquitetura usadas em todos os processadores vetoriais mais recentes Todas as operações vetoriais, com exceção de load e store, trabalham com registradores Unidades funcionais são organizadas como pipelines profundos Processadores Vetoriais Exemplo: Vetor C Vetor A * Vetor B Estágios do Pipeline: Lê elementos dos vetores A e B Soma expoentes Multipica mantissas Normaliza resultado Armazena resultado em C LA, LB SE MM NR AC

Exemplo de Processamento Vetorial LA/LB 1 2 3 4 5 6 7 8 9 10 SE 1 2 3 4 5 6 7 8 9 MM 1 2 3 4 5 6 7 8 NR 1 2 3 4 5 6 7 AC 1 2 3 4 5 6 Exemplo de Processamento Vetorial Tempo de execução T = [5 + (N-1)] * t N Número de elementos do vetor t Perído do Clock Supondo que os vetores A e B possuam cada um 10.000 elementos e que a freqüência do clock dos pipelines é de 200 MHz, temos, que o tempo total gasto para executar a operação de cálculo de todos os elementos do Vetor C é dado por: T = (5 + (10.000-1)) x 5 ns = 50 µs (aprox.) 200 MFLOPS

Problemas para a vetorização Tamanho dos vetores: Quando o tamanho dos vetores é maior do que o dos registradores vetoriais, o compilador deve quebrar a operação vetorial em uma seqüência de operações com vetores de tamanho igual ou menor do que o dos registradores vetoriais overhead introduzido pelo esvaziamento dos pipelines e operações adicionais de load/store. Stride Problemas para a vetorização Em operações de multiplicação de matrizes, por exemplo, necessariamente o acesso ao vetor que armazena os elementos de uma das matrizes não será feito de forma seqüencial, já que as matrizes são armazenadas na memória de forma ordenada, ou por linha ou por coluna. O salto entre os endereços de dois elementos consecutivos a serem utilizados é chamado stride. Em geral estão disponíveis instruções vetoriais do tipo load/store com a definição do valor do stride.

Problemas para a vetorização A existência de desvios condicionais em loops : for (i=1; i<256; i++) if (a[i] < 0) a[i] = a[i] + b[i]; Problemas para a vetorização Para que operações como a de soma do exemplo anterior possam ser vetorizadas, as arquiteturas de processamento vetorial devem suportar os chamados vetores de máscara associados às operações vetoriais, indicando sobre que elementos dos vetores devem ser efetuadas as operações, em função do resultado do teste relativo ao desvio condicional.

Supercomputadores Vetoriais Comerciais NEC-SX5 Até 16 processadores Período de Clock: 4 ns Desempenho de Pico: 128 GFLOPS (123) Cray T90 * Até 32 processadores Período de Clock: 2.2 ns Desempenho de Pico: 56 GFLOPS (36.6) Fujitsu VPP-5500U Um processador Período de clock: 3,3 ns Desempenho de Pico: 9,6 GFLOPS (8,7) Supercomputadores Vetoriais Comerciais Cray T90

Arquiteturas SIMD É uma classe importante de processadores, devido a fatores como: Simplicidade de conceitos e programação Regularidade da estrutura Facilidade de escalabilidade em tamanho e desempenho Aplicação direta em uma série de aplicações que requerem paralelismo para obter o desempenho necessário. Arquiteturas SIMD Processadores executam sincronizadamente a mesma instrução sobre dados diferentes. Utiliza vários processadores especiais muito mais simples, organizados em geral de forma matricial. Muito eficiente em aplicações onde cada processador pode ser associado a uma sub-matriz independente de dados (processamento de imagens, algoritmos matemáticos, etc.).

Arquitetura Básica REDE DE INTERCONEXÃO Mem. Mem. Mem. E lem. Proc. Elem. Proc. Elem. Proc. Unidade de Controle Memória de Programa Opções Arquiteturais Granulosidade É a relação entre o número de elementos processadores e o paralelismo do conjunto de dados sobre os quais opera. Um sistema com poucos elementos de dados por elemento processador é qualificado como granulosidade fina. Não é prático termos apenas um elemento processador por elemento de dados nas arquiteturas SIMD. Conectividade Vizinhança (Malha ou Toro) Árvore Pirâmide Hipercubo

Opções Arquiteturais Complexidade do Processador Single-Bit Inteiro Ponto Flutuante Granulosidade fina. Usualmente utilizados para processamento de imagem Uma solução de compromisso. Utilizados para visão ou computação genérica Granulosidade grossa. Usualmente utilizados para computação científica. Exemplos Illiac IV Matriz 8 x8 (1968) MPP * Matriz 128 x128 (1983) Connection Machine * Hipercubo (16K x 4) processadores (1985) MasPar Multi-level crossbar switch (1990) 16K processadores

Thinking Machines CM-5 Thinking Machines CM5 fat tree network

Arquiteturas Sistólicas Termo utilizado por H.T. Kung, em 1978, em analogia com o funcionamento do coração. Uma aplicação típica é a multiplicação de matrizes: C mn = ij A in B mj Características Básicas Possui as seguintes características: Cada elemento do arranjo computa um função simples e única Cada elemento está conectado apenas aos seus vizinhos mais próximos através apenas de um caminho de dados uni-direcional O único sinal de controle enviado através do arranjo é um pulso de relógio, utilizado para sincronizar as operações Os dados de entrada são inseridos nos dois lados da matriz e passam através do arranjo em duas direções ortogonais Os dados de saída são extraídos como uma série de elementos de um dos dois lados restantes da matriz

Características Básicas Dimensão: 1, 2 ou mais dimensões Precisão: 1 bit ou multi-bit Inteira ou ponto-flutuante Conectividade Linear, matriz, hexagonal, etc. Uni-direcional ou bi-direcional Sincronicidade Fixa ou programável Organização da Matriz M A T R I Z B M A T R I Z A R E S U L T A D O

Elemento Processador ACIMA ESQUERDA MULTIPLI- CADOR MEMÓRIA MEMÓRIA DIREITA SOMADOR ABAIXO