Arquitetura e Organização de Computadores. Capítulo 7 Multicores, Multiprocessadores e Clusters



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

Capítulo 8 Arquitetura de Computadores Paralelos

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

Máquinas Multiníveis

Organização de Computadores 2005/2006 Processamento Paralelo

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

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

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

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

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

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

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

SSC510 Arquitetura de Computadores. 12ª aula

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

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

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

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

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

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

Microarquiteturas Avançadas

slide 0 Algoritmos Paralelos

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

Sistemas Operacionais

FACULDADE PITÁGORAS PRONATEC

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

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

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores

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

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Organização de Computadores

Imagem retirada de documentações de treinamentos oficiais INTEL

7 Processamento Paralelo

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

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Ricardo Gonçalves 2013/2014. Arquitecturas Multicore

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Aula 04 A. Barramentos. Prof. Ricardo Palma

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

BARRAMENTO DO SISTEMA

Arquitetura de Von Neumann e os Computadores Modernos

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

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

Symmetric Multiprocessing Simultaneous Multithreading Paralelismo ao nível dos dados

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquiteturas Paralelas

Unidade 13: Paralelismo:

Sistema de Computação

Definindo melhor alguns conceitos

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

Sistemas Operacionais. Prof. André Y. Kusumoto

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Organização e Arquitetura de Computadores

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

Organização e Arquitetura de Computadores. Hugo Barros @hugobarros.com.br


Arquitetura e Organização de Computadores 2

Programação Paralela

Visão Geral de Pipelining

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 02 - Estrutura dos Sistemas Operacionais. Cursos de Computação

Processador ARM Cortex-A9

3. Arquiteturas SIMD. 3.1 Considerações iniciais

Arquitetura de Computadores II

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

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquitetura e Programação de GPU. Leandro Zanotto RA: Anselmo Ferreira RA: Marcelo Matsumoto RA:

Paralelização Introdução a vetorização, OpenMP e MPI

Arquitetura de Computadores. Ivan Saraiva Silva

Introdução aos Computadores

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Introdução ao Processamento Paralelo

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

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Aula 26: Arquiteturas RISC vs. CISC

Computação Heterogênea Programação paralela, clusters e GPUs

HARDWARE GRÁFICO. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Sistemas Computacionais II Professor Frederico Sauer

Arquitectura de Computadores II. Multiprocessadores

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

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:

Arquitetura de Computadores. Professor: Vilson Heck Junior

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Capítulo 1 Introdução

Organização de Computadores

Arquitetura de Computadores

SISTEMAS DISTRIBUÍDOS

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

Programação Concorrente Processos e Threads

Microprocessadores. Prof. Leonardo Barreto Campos 1

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Organização e Arquitetura de Computadores I

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

Organização de Computadores 1

Arquitetura e Organização de Computadores

Introdução à Arquitetura de Computadores

Transcrição:

Arquitetura e Organização de Computadores Capítulo 7 Multicores, Multiprocessadores e Clusters

Material adaptado de: Patterson e Henessy, Computer Organization and Design 4 th Edition 2

Objetivo: conectar vários computadores para alcançar um desempenho maior: Multiprocessadores; Escalabilidade, disponibilidade, eficiência energética; Job-level (process-level) parallelism: Alto throughput para tarefas independentes; Parallel processing program: Um programa que executa em vários processadores; Microprocessadores multicore: Chips com vários processadores (cores). Introdução 3

Hardware: Serial: ex. Pentium 4; Paralelo: ex. quad-core Xeon e5345; Software: Sequencial: ex. multiplicação de matrizes; Concorrente: ex. sistema operacional; Software sequencial/concorrente pode rodar em hardware serial/paralelo: Desafio: fazer o uso efetivo do hardware paralelo. Hardware e Software 4

2.11: Paralelismo e instruções: Sincronização; 4.10: Paralelismo e paralelismo avançado a nível de instrução; 5.8: Paralelismo e hierarquia de memória: Coerência de cache; 6.9: Paralelismo e I/O: Redundant Arrays of Inexpensive Disks. O que nós já vimos durante o semestre 5

Software paralelo é o problema; Necessita alcançar um ganho significativo de desempenho: Caso contrário, use apenas um uniprocessador rápido, dado que é mais fácil! Dificuldades: Particionamento; Coordenação; Custo da comunicação. Programação paralela 6

Parte sequencial pode limitar o speedup; Exempli: 100 processadores com 90x de speedup? Tnew = Tparallelizabls/100 + Tsequential T new T Speedup Solving : F parallelizable 1 /100 parallelizable T 1 F paralleliz F able 0.999 sequential parallelizable /100 90 É necessário que apenas 0,1% do tempo total seja sequencial. Lei de Amdahl s 7

Carga: soma de 10 escaleres e soma matrizes de 10x10: Speedup de 10 para 100 processaores; Uniprocessador: Tempo = (10 + 100) x t add ; 10 processadores: Tempo = 10 x t add + 100/10 x t add = 20 x t add ; Speedup = 110/20 = 5.5; 100 processadores: Tempo = 10 x t add + 100/100 x t add = 11 x t add ; Speedup = 110/11 = 10; OBS: Assuma que a carga pode ser balanceada entre os processadores. Exemplo: Aumentando a escala 8

SMP: shared memory multiprocessor: Hardware provê um único espaço de endereço a todos os processaodres; Sincroniza as variáveis compartilhadas usando locks; Tempo de acesso à memória: UMA (uniforme) vs. NUMA (não uniforme). Memória compartilhada 9

Soma de 100.000 números em 100 processadores UMA: Cada processador tem ID: 0 Pn 99; Partição 1000 números por processador; Simulação inicial em cada processador: sum[pn] = 0; for (i = 1000*Pn; i < 1000*(Pn+1); i=i+1) sum[pn] = sum[pn] + A[i]; Agora é necessário somar essas somas parciais: Redução: dividir para conquistar; Metade dos processadores somas pares, depois quadras,... Necessita sincronizar entre os passos da redução. Exemplo: Soma com redução 10

half = 100; repeat synch(); if (half%2!= 0 && Pn == 0) sum[0] = sum[0] + sum[half-1]; /* Conditional sum needed when half is odd; Processor0 gets missing element */ half = half/2; /* dividing line on who sums */ if (Pn < half) sum[pn] = sum[pn] + sum[pn+half]; until (half == 1); Exemplo: Soma com redução 11

Cada processador tem o seu espaço de endereços privados; Hardware envia/recebe mensagem entre processadores. Passagem de mensagem 12

Rede de computadores independentes: Cada um tem sua memória privada e SO; Conectados através de um sistema de I/O: Ex. Ethernet/switch, internet; Adequados para aplicações de tarefas independentes: Web servers, databases, simulações,... Alta disponibilidade, escalável, acessível; Problemas: Custo de administração (melhor usar máquina virtuais); Baixa largura de banda da interconexão: Diferente largura de banda do processador/memória de um SMP. Clusters fracamente acoplados 13

Soma de 100.000 em 100 processaores; Primeiro distribui 100 números para cada: As somas parciais: sum = 0; for (i = 0; i<1000; i = i + 1) sum = sum + AN[i]; Redução? Metade dos processadores enviam, outra metade recebe e realiza a soma; etc. Soma com redução (novamente!) 14

Dados as funções de send() e receive(): limit = 100; half = 100;/* 100 processors */ repeat half = (half+1)/2; /* send vs. receive dividing line */ if (Pn >= half && Pn < limit) send(pn - half, sum); if (Pn < (limit/2)) sum = sum + receive(); limit = half; /* upper limit of senders */ until (half == 1); /* exit with final sum */ Enviar/receber também provê sincronização; Assuma que enviar/receber tenha o mesmo tempo da adição. Soma com redução (novamente!) 15

Computadores separados interconectados por redes distantes: Ex. conexões de internet; As unidade de trabalho são terceirizadas, resultados são enviados de volta; Pode usar o tempo não utilizado pelos PCs: Ex. SETI@home, World Community Grid Grid Computing 16

Executa várias threads em paralelo: Replica registradores, PC, etc; Troca rápida entre threads; Multithread de ajuste fino: Troca as threads depois de cada ciclo; Executa as instruções de forma intercalada; Se uma thread entra em stall, outras serão executadas; Multithread de ajuste grosseiro: Só troca de thread quando o stall é longo (ex. L2 miss); Simplifica o hardware, mas não esconde stalls curtos (ex. hazard de dados). Multithreading 17

Em processadores múltiplas requisições dinamicamente escalonados: Escalona instruções de várias threads; Instruções de threads independentes executam quando a unidade funcional está disponível; Nas threads, a gestão dependências é feita por escalonamento e renomeação de registradores; Exemplo: Intel Pentium-4 HT Duas threads: registradores duplicados, unidades funcionais e caches compartilhadas. Simultaneous Multithreading - SMT 18

Exemplo Multithreading 19

Classificação alternativa: Data Streams Single Multiple Instruction Streams Single SISD: Intel Pentium 4 SIMD: SSE instructions of x86 Multiple MISD: No examples today MIMD: Intel Xeon e5345 SPMD: Single Program Multiple Data: Um programa paralelo em um computador MIMD; Código condicional para processadores diferentes. Stream de dados e instruções 20

Operam elemento a elemento em vetores de dados: Ex. Instruções MMX e SSE do x86 Vários dados em registradores de 128 bits; Todos os processadores executam a mesma instrução ao mesmo tempo: Cada um com um endereço diferente do dado; Simplifica a sincronização; Hardware de controle das instruções reduzido; Funciona melhor com aplicações com alto grau de paralelismo de dados. SIMD 21

Unidades funcionais com um alto grau de pipeline; Stream de dados de/para registradores vetoriais para as unidades: Dados coletados da memória nos registradores; Resultados armazenados nos registradores para a memória; Exemplo: Extensão vetorial do MIPS: 32x64 registradores de elementos (elementos de 64 bits); Instruções vetoriais: lv, sv: load/store vector; addv.d: add vectors of double Addvs.d: add scalar to each element of vector of double; Reduz significativamente a largura de banda de busca de instruções. Processadores vetoriais 22

Compiladores e arquiteturas vetoriais: Simplifica a programação de aplicações com paralelismo de dados; Declaração explícita de ausência de dependência no loop: Verificação reduzida no hardaware; Acesso a padrões regulares se beneficiam de memórias intercaladas e rajadas; Evita hazards de controle, pois evita o uso de loops; Mais gerais que extensões de mídia ad-hoc (como MMX, SSE): Se ajusta melhor a tecnologia dos compiladores. Vetor vs. escalar 23

Placas de vídeo originais: Buffer de memória para armazenar os quadros com geração de endereços para a saída de vídeo. Processamento de gráficos 3D: Originalmente em computadores de alto desempenho (ex. SGI); Lei de Moore => menor custo, maior densidade; Placas gráficas 3D para PCs e consoles de games; Graphics Processing Units: Processadores orientados para tarefas 3D; Processamento de vértices/pixel, sombras, mapeamento de texturas, etc... História das GPUs 24

Gráficos no sistema 25

Processamento de aplicações com bastante paralelismo de dados: GPUs são altamente mutlithread; Usa a troca de thread para esconder a latência de memória; Menos dependente de caches multinível; Memória gráfica é grande com alta largura de banda; Tendências das GPUs de uso geral: Sistemas de CPU/GPU hereterogêneas; CPU para código sequencial, CPU para código paralelo; Linguagens de programação/apis: DirectX, OpenGL; C for Graphics (Cg), High Level Shader Language (HLSL); Compute Unified Device Architecture (CUDA) Arquiteturas das GPUs 26

Streaming multiprocessor 8 Streaming processors Exemplo: NVIDIA Tesla 27

Stream Processors (SP): Unidades de inteiros e FP de precisão simples; Cada SP é um multithread de ajuste fino; Warp: grupo de 32 threads: Executadas em parelalo, estilo SIMD: 8 SPs x 4 ciclos de clock; Contexto de hardware para 24 warps: Registradores, PCs, etc... Exemplo: NVIDIA Tesla 28

Não casam precisamente no modelo SIMD/MIMD: Execução condicional de uma thread permite a ilusão de um MIMD: Entretanto com degradação de desempenho; Instruction-Level Parallelism Data-Level Parallelism Static: Discovered at Compile Time VLIW SIMD or Vector Dynamic: Discovered at Runtime Superscalar Tesla Multiprocessor Classificando GPUs 29

Topologias de rede: Arranjos de processadores, switches e links. Bus Ring 2D Mesh N-cube (N = 3) Fully connected Redes de interconexão 30

Redes multiestágio 31

Desempenho: Latência por mensagem (rede sem carga); Throughput: Largura de banda do link; Largura de banda da rede; Largura de banda da bisseção; Atrasos de congestionamento (depende do tráfego); Custo; Energia; Roteabilidade em silício. Características das redes 32

Linpack: algebra linear com matrizes; SPECrate: execução paralela de programas SPEC CPU: Paralelismo de tarefas; SPLASH: Starnford Parallel Applications for Shared Memory: Mix de kernels e aplicações, altamente escalável; NAS (NASA Adavanced Supercomputing): Kernels de computação de fluídos dinâmicos; PARSEC (Princeton Application Repository for Shared Memory Computers): Aplicações multithread usando Pthreads e OpenMP. Benchmarks paralelos 33

Lei de Amdahl não se aplica a computadores paralelos: Uma vez que podemos alcançar um speedup linear; Entretanto só para aplicações com escalabilidade ruim; Pico de desempenho define o desempenho observado: Vendedores adoram essa abordagem! Necessário ter cuidado com os gargalos. Falácias 34

Não desenvolver o software levando em conta a arquitetura multiprocessador: Ex. usar um único lock para um recurso composto compartilhado; Serializa o acesso, mesmo se eles pudessem ser feitos em paralelo; Use um lock de granularidade fina. Armadilhas 35

Objetivo: alto desempenho usando vários processadores; Dificuldades: Desenvolver software paralelo; Construir arquiteturas apropriadas; Muitas razões para otimismo: Mudanças no ambiente de software e aplicações; Chip-level Multiprocessors (CMP) com menor latência, maior largura de banda de interconexão; Um desafio constante para arquitetos de computador! Conclusões 36

Arquitetura e Organização de Computadores Capítulo 6 Armazenamento e outros tópicos de E/S