Você está na página 1de 88

I Escola Regional de Alto Desempenho de SP

São Paulo - SP – 30 e 31 de Julho de 2010

Arquiteturas Paralelas
Prof. Dr. Edson T. Midorikawa
edson.midorikawa@poli.usp.br
Departamento de Engenharia de Computação
e Sistemas Digitais
Escola Politécnica da USP

ERAD-SP 2010 1
Apresentação – Prof. Edson Midorikawa
• Formação
– Graduação em Engenharia Elétrica – EPUSP (1986)
– Mestrado em Engenharia Elétrica – EPUSP (1992)
– Doutorado em Engenharia Elétrica – EPUSP (1997)
• Atividades
– Professor doutor da Escola Politécnica da USP
– Membro do LAHPC (Laboratório de Arquitetura e Computação
de Alto Desempenho)
• Áreas de Interesse
– Arquiteturas paralelas (multicore, hierarquia de memória)
– Máquinas virtuais (escalonamento de recursos, gerencia de
memória, interação MMV-SO)
– Computação avançada (cluster, grid, cloud computing)

ERAD-SP 2010 2
Sumário
• Introdução
– Motivação
– Classificação de Máquinas Paralelas
• Paralelismo em Arquitetura de Computadores
– Pipelining
– Superescalaridade
– Multithreading

• Arquiteturas Multicore

• Arquiteturas Avançadas
– Multicores Avançados – Multiprocessadores
– GPGPU – Clusters

ERAD-SP 2010 3
1. Introdução

ERAD-SP 2010 4
Motivação
• Por que estudar “Arquitetura de Computadores”?

– Disciplina obrigatória nos cursos de Engenharia de


Computação, Ciência da Computação,
Sistemas de Informação, etc.

– Melhor entendimento do funcionamento (e aproveitamento)


das máquinas modernas.

– Cria novas oportunidades de pesquisa em computação


avançada.

ERAD-SP 2010 5
Motivação
• Por que pesquisar “Arquiteturas Paralelas”?
– Explora alternativas de projeto de novos sistemas para
aumento de desempenho e de recursos de microeletrônica.
– Área de pesquisa com uma comunidade brasileira ativa e
atuante em várias áreas (SBAC-PAD)
– Áreas de atuação:
• Desenvolvimento de novos modelos de computação
• Desenvolvimento de novas arquiteturas de sistemas
computacionais (processadores multi-core, multiprocessadores,
sistemas de cluster, grid e cloud computing)
• Viabiliza novas aplicações computacionais (modelos matemáticos)
– Previsão de tempo e de clima
– Drug design, genômica, proteômica
– Simulação (car crash, plataforma petrolífera, ...)

ERAD-SP 2010 6
Motivação
• Evolução em várias categorias de computadores

ENIAC NORC CDC-6600 Cray-1 Cray-2 Cray-3 Cray T3E


super-
computador Cray-4
?
UNIVAC /360 /370 /390 z/900
mainframe

PDP-8 PDP-11 VAX


minicomputador x
RS/6000 Xeon
servidor/workstation
4004 8080 8088 PPro
microcomputador
80286 80486 PII PIIIP4
desktop PC
Altair 8088 80386 Pentium

value PC
Celeron

1950 1960 1970 1980 1990 2000

ERAD-SP 2010 7
Motivação
• Evolução do desempenho de processadores

SPE C int92
L e ve ling off
10000
Pr e s c ott (2M )
P4/3200 ***
* * Pr e s c ott (1M )
5000 P4/3060 *N or thw ood B
P4/2400 ***
P4/2800
P4/2000* *P4/2200
2000 P4/1500**
P4/1700
PI I I /600PI I I /1000
1000 ** *
PI I /400 PI I I /500
* *PI I /450
PI I /300
500 *

~ 100*/10 ye ar s Pe ntium/200 *Pe ntium Pr o/200


200 *
*
Pe ntium/133 * Pe ntium/166
Pe ntium/100
* *Pe ntium/120
100
Pe ntium/66
*
50 * 486-D X 4/100
486/50 * 486-D X 2/66
486/33* *
20 486-D X 2/50
*
*
486/25
10 *386/33
386/20 *386/25
5 *
*
386/16
80286/12
2 *
80286/10
1 *
8088/8
0.5 *

0.2 * 8088/5

Y e ar
79 1980
8 1 82 83 84 85 86 87 88 891990
91 92 93 94 95 96 97 98 99 2000
01 02 03 04 05

ERAD-SP 2010 8
Motivação
• Fatores para melhora de desempenho
fc
(MHz)
Le ve ling off
5000
Pe ntium 4 * * *
* *

* *
2000 * * 

1000
Aumento da ~100*/10ye ars
*
* * 


500
Frequencia do relógio Pe ntium III* *
**
*
Pe ntium II *
* * 
200 * *
Pe ntium Pe ntium Pro
*
486-DX4 ** 
100 *
~10*/10ye ars 
486-DX2 * *
50 * *
486 
* *
386
* * 
20 *
286 *
*
10 *
8088 * 
5 *


1 Year
78 79 1980 81 82 83 84 85 86 87 88 89 1990 91 92 93 94 95 96 97 98 99 2000 01 02 03 04 05
Year of first volume shipment

ERAD-SP 2010 9
Motivação
• Fatores para melhora de desempenho (2)

Lei de Moore

ERAD-SP 2010 10
Motivação
• Fatores para melhora de desempenho (3)

• Como manter a tendencia de aumento de desempenho


dos processadores?

• O que fazer se não é possível manter continuamente


o aumento do clock?

• Como utilizar eficientemente os transistores


disponíveis em um chip?

ERAD-SP 2010 11
Motivação
• Resposta

PARALELISMO

ERAD-SP 2010 12
Classificação de Máquinas Paralelas
• Classificação de Flynn
– Classificação de arquiteturas paralelas genérica
de acordo com as características do fluxo de
instruções e o fluxo de dados (único ou múltiplo)

Michael J. Flynn

ERAD-SP 2010 13
Classificação de Máquinas Paralelas
• SISD
– Single Instruction, Single Data
• Um único fluxo de instruções
• Um único fluxo de dados

– Contém as arquiteturas tradicionais não paralelas


• Máquinas de Von Neumann

instrução dado
UC = unidade de controle
UP = unidade de processsamento
MEM = memória

ERAD-SP 2010 14
Classificação de Máquinas Paralelas
• SIMD
– Single Instruction, Multiple Data
• Um único fluxo de instrução
• Múltiplos fluxos de dados

– Execução síncrona da instrução


para todos os dados

– Exemplos:
• Processadores vetoriais (Cray 1) instrução dados
• GPU

ERAD-SP 2010 15
Classificação de Máquinas Paralelas
• MISD
– Multiple Instruction, Single Data
• Múltiplos fluxos de instrução
• Um único fluxo de dados

UP2
– Execução de várias instruções
UP3
em um único dado.

...
...
– Não há exemplos. UCn UPn

instruções
dado

ERAD-SP 2010 16
Classificação de Máquinas Paralelas
• MIMD
– Multiple Instruction, Multiple Data
• Múltiplos fluxos de instruções
• Múltiplos fluxos de dados

– Permite a execução de
instruções diferentes para
cada um dos dados

– Exemplos:
• Arquiteturas paralelas atuais instruções dados
• Top500.org

ERAD-SP 2010 17
Máquinas Paralelas
• Top500.org
– Lista com os 500 computadores mais rápidos
– Atualizada duas vezes ao ano (junho e novembro)

ERAD-SP 2010 18
ERAD-SP 2010 19
2. Paralelismo em Arquitetura de
Computadores

ERAD-SP 2010 20
Fontes de Paralelismo
• Há várias fontes de execução paralela em um
computador moderno:

– Aplicações diferentes;
Multiprogramação

– Instâncias de execução Multitarefa


da mesma aplicação;

– Fluxo de instruções (threads)


de uma aplicação; Processadores
multicore
– Instruções de um programa (ILP)

ERAD-SP 2010 21
Fontes de Paralelismo
• Paralelismo no Nível de Instrução (ILP)
– Permite executar várias instruções em cada ciclo de relógio.
– Modificações na microarquitetura do processador para
possibilitar a execução paralela de instruções.
– Alternativas:
• Paralelismo temporal: encadeamento no fluxo de execução das
instruções (pipeline);
• Paralelismo na emissão de instruções: submissão de várias
instruções para execução pelo fluxo de dados (VLIW e
superescalaridade);
• Paralelismo de dados: permite executar várias instâncias da
mesma instrução para um conjunto de dados (processamento
SIMD ou vetorial).

ERAD-SP 2010 22
Fontes de Paralelismo
Paradigmas de processamento ILP

Paralelismo Paralelismo de Paralelismo


Temporal Emissão de Instruções de Dados

Resolução estática Resolução dinâmica


de dependências de dependências

Processadores
Processadores Processadores extensão
com Pipeline
VLIW Superscalares SIMD
ERAD-SP 2010 23
Evolução do Paralelismo

Extensão do Processamento
paralelismo ILP
Sequencial
da execução
+ paralelismo
Paralelismo de envio de + paralelismo
temporal instruções de dados

Processadores Processadores
Processadores Processadores
von Neumann Superscalares com
tradicionais Pipelined Superscalares extensão SIMD

~ 1985/88 ~ 1990/93 ~ 1994/00 t

Nível de
redundância
de hardware

ERAD-SP 2010 24
Pipelining
• Execução de uma instrução é dividida em etapas:
Memória
Memória Registra-
dores

IF ID EXE MEM WB

IF = busca da instrução na memória (inclui atualização do PC)


ID = decodificação da instrução + busca de valores em registradores
EXE = execução da instrução (ULA ou cálculo de endereços)
MEM = acesso à memória ou instrução de desvio
WB = escrita resultados nos registradores de saída

Uma instrução leva 5 períodos de clock para concluir.

ERAD-SP 2010 25
Pipelining
• Fluxo de dados do processador MIPS didático
(COD/4e, Patterson & Hennessy)

ERAD-SP 2010 26
Pipelining
• Inicia a execução de uma instrução por ciclo de clock

IF I1 I2 I3 I4 I5 I6
fluxo de
instruções ID I1 I2 I3 I4 I5

EXE I1 I2 I3 I4

MEM I1 I2 I3

WB I1 I2

ciclo 1 2 3 4 5 6

A cada ciclo de clock, termina-se a execução de uma instrução.

ERAD-SP 2010 27
Superescalaridade
• Em um processador superescalar, várias instruções são
submetidas para execução simultaneamente.

Memoria
Memoria Regis-
tradores
instruções instruções
Busca
de instr. ID EXE MEM WB

• Várias instruções do programa são analisadas para


execução paralela.

PROBLEMA: dependência de dados entre instruções.

ERAD-SP 2010 28
Superescalaridade
• Dependência de dados
1 2 3 4 5 6 7 8 9

Time (cycles)
$s0
lw $t0
lw $t0, 40($s0) 40 +
RF DM RF
IM

$t0 $t0
add $t1
add $t1, $t0, $s1 $s1 $s1 +
RF $s2 RF $s2 DM RF
IM
sub $t0
sub $t0, $s2, $s3 $s3 $s3 -

Stall $s4
and and $t2
and $t2, $s4, $t0 $t0 &
RF $s5 DM RF
IM IM
or or $t3
or $t3, $s5, $s6 $s6 |

$t3
sw $s7
sw $s7, 80($t3) 80 +
RF DM RF
IM

ERAD-SP 2010 29
Superescalaridade
• Para resolver o problema da dependência de dados, um
processador superescalar permite a execução fora de
ordem das instruções (OOO – out of order execution)
1 2 3 4 5 6 7 8

Time (cycles)
$s0
lw $t0
lw $t0, 40($s0) 40 +
RF $s5 DM RF
IM
or $t3
or $t3, $s5, $s6 $s6 |

RAW
$t3
sw $s7
sw $s7, 80($t3) 80 +
RF DM RF
two cycle latency IM
between load and RAW
use of $t0
$t0
add $t1
add $t1, $t0, $s1 $s1 +
RF $s2 DM RF
WAR IM
sub $t0
sub $t0, $s2, $s3 $s3 -

RAW
$s4
and $t2
and $t2, $s4, $t0 $t0 &
RF DM RF
IM

ERAD-SP 2010 30
Multithreading
• Algumas definições:
– Processo: programa rodando em um computador.
– Vários processos estão em execução simultaneamente, como
p. ex.: browser Web, editor de texto, anti-virus.
– Thread: parte de um processo.
– Cada processo pode ter vários threads, como p. ex.: um editor
de texto pode ter vários threads para digitação, verificação
ortográfica e impressão.

• Em um processador convencional:
– Apenas um thread é executado por vez.
– Quando ocorre uma parada (stall) na execução de um thread
(p.ex. acesso à memória), realiza-se uma troca de contexto
para outro thread.

ERAD-SP 2010 31
Multithreading
• Em um processador com multithreading, vários threads
podem estar ativos ao mesmo tempo:
– Possui mais de um conjunto de registradores de estado
– Quando ocorre stall em um thread, outro é colocado em
execução imediatamente (não há necessidade de operações
de salvamente e carga de estado)
– Se um thread não usar uma unidade funcional (p.ex. somador,
ULA, FPU), outro pode usá-lo

• Não modifica o paralelismo de instruções de um único


thread, mas aumenta o desempenho geral do sistema.

ERAD-SP 2010 32
Multithreading
• A presença de vários conjuntos de registradores de
estado é normalmente interpretado pelos sistemas
operacionais como se houvesse vários processadores
(virtuais), onde os processos podem ser escalonados.

• Permite um melhor compartilhamento dos recursos do


processador
– Unidades funcionais
– Memórias cache

ERAD-SP 2010 33
Multithreading
• Simultaneous Multithreading (SMT)
– Permite executar instruções de threads de vários programas
(processos) simultaneamente sem a necessidade de troca de
contexto
sem blocked Interleaved
multithreading multithreading multithreading SMT

ciclos

cache
miss

– Vantagens
• Permite a execução simultânea de mais instruções por ciclo
• Desempenho total se tiver apenas um thread ativo

ERAD-SP 2010 34
Multithreading

Superescalar Superescalar com SMT


(4-way) (4-way/2 threads)

Thread Thread 1 Thread 2

ERAD-SP 2010 35
Multithreading
• Simultaneous Multithreading

– A Intel implementa a técnica SMT em seus processadores


com o nome comercial “Hyperthreading” (HT)
permitindo a execução simultânea
de 2 threads por core.

– Sun UltraSparc T2 (8 threads por core)

– IBM Power 7 (4 threads por core)

ERAD-SP 2010 36
Arquiteturas Multicore

ERAD-SP 2010 37
Processadores Multicore
• Etapa atual no desenvolvimento de novas
arquiteturas de processadores.

• Permite a execução simultânea de


múltiplos threads e/ou aplicações.

• Inclui vários núcleos de


processadores na pastilha.

ERAD-SP 2010 38
Exemplos de Multicore
• Intel Core i7 e AMD Phenom X6

ERAD-SP 2010 39
Exemplos de Multicore
• Intel Xeon 5600 (hexacore)

ERAD-SP 2010 40
Exemplos de Multicore
• Intel Xeon 7500 (8-core)

ERAD-SP 2010 41
Exemplos de Multicore
• AMD Opteron 6000 (12-core)

ERAD-SP 2010 42
Processadores Multicore
Intel Tilera Tile64

UltraSparc T2

ERAD-SP 2010 43
Paralelismo no Nível de Threads

Granularidade
do paralelismo

Múltiplos threads

TLP
(paralelismo no nível de threads)

Thread
(fluxo de instruções)
ILP
(paralelismo no nível de instruções)

ERAD-SP 2010 44
Paralelismo no Nível de Threads
• Execução paralela de threads

De onde vem os vários threads?

de aplicações da mesma
diferentes aplicação

Multiprogramação Multitarefa,
Multithreading

ERAD-SP 2010 45
Paralelismo no Nível de Threads
Implementação de paralelismo no nível de
threads em microprocessadores

SMP: Symmetric Multiprocessing SMT: Simultaneous Multithreading


(CMP: Chip Multiprocessing) (HT: Hyperthreading (Intel))
Implementação de dois ou mais cores Implementação de um
colocados na mesma pastilha core multithreaded

pastilha
(chip) Core
SMT
Core L2/L3 Core
L2/L3

L3/Memória
ERAD-SP 2010 L3/Memória 46
Paralelismo no Nível de Threads
• Simultaneous
Superescalar Superescalar com SMT
Multithreading (4-way) (4-way/2 threads)

Thread Thread 1 Thread 2

ERAD-SP 2010 47
Paralelismo no Nível de Threads
• Simultaneous
Multiprocessing

Nehalem-EX

ERAD-SP 2010 48
Simultaneous Multiprocessing
• A presença de vários núcleos de processador (core) em
um computador pode ser realizada em dois níveis
distintos:
– Multiprocessador: vários chips processadores.
– Multicore: um único chip processador com vários cores.

chip único

ERAD-SP 2010 49
Multicore
• Vários “processadores single core” agrupados em um
único chip (CMP = chip multiprocessor).
– Replicação real dos recursos de um processador dentro do chip
(ao contrário do multithreading)

– Compatibilidade de código com os multiprocessadores


(modelo de memória compartilhada)
– Incorpora uma hierarquia complexa de memórias cache interna
• Caches L1 e L2 privados (particulares a cada core)
• Cache L3 único e compartilhado entre os cores

ERAD-SP 2010 50
Multicore
• Organização interna de um Multicore

– Principais componentes:
• Núcleos de processador
(cores)
• Memórias cache
• Rede de interconexão interna
• Interface com barramento
de E/S externo
• Controlador de interrupções
• Timers
• etc

Fonte: ARM, The ARM Cortex-A9 Processors White Paper, 2009.

ERAD-SP 2010 51
Multicore
• Hierarquia de caches

ERAD-SP 2010 52
Multicore
• Interconexão Interna
Implementação das interconexões

Árbitro/Implementações
Crossbar Anel
de cache multi-porta

Aspectos quantitativos, tais como número de fontes e destinos ou requisitos de banda, afetam
qual alternativa de implementação é mais benéfica.

Número pequeno de Número grande de


fontes e destinos fontes e destinos

p.ex. Conexão dos dual-cores UltraSPARC T1 (2005) Cell BE (2006)


aos cache L2 compartilhado UltraSPARC T2 (2007) XRI (2005)

ERAD-SP 2010 53
Multicore
• Aplicação de multicores vs. SMP e processadores
superescalares

– Instrução
– Bloco básico
– Loop
– Tarefa
– Processo

Fonte: Olukotun et al. Chip Multiprocessor Architecture, 2007.

ERAD-SP 2010 54
Multicore
• Breve Histórico
Prescott Smithfield
(core original) (dois cores Prescott modificados colocados no mesmo die)

2/2004 5/2005

90 nm 90 nm
112 mm2 2 x 103 mm2
125 mtrs 2 x 115 mtrs
L2: 1 MB L2: 2 MB
Pentium D/EE
Pentium 4 A/E/F series Pentium D 8xx
Pentium 4 5xx series Pentium EE 840

ERAD-SP 2010 55
Multicore
• Breve Histórico
Conroe Kentsfield
(die) (dois Conroes no mesmo empacotamento)

7/2006 11/2006
65 nm 65 nm
143 mm2 2 x 143 mm2
167/291 mtrs 2 x 167/291 mtrs

Core 2 Duo E 6x00 series Core 2 Extreme QX6x00 series


Core2 Extrem X6x00 series
ERAD-SP 2010 56
Desafio dos Multicores
• Os processadores multicore...

– possuem uma grande capacidade computacional


(“lembre-se que um octocore permite executar ao menos 8
threads simultaneamente”);
– Implementam várias otimizações para execução paralela
(caches integrados, alta banda de comunicação, etc);

mas
– Os programas existentes não foram escritos para usar
tais recursos.

ERAD-SP 2010 57
Desafio dos Multicores
• É muito importante que a aplicação seja capaz de
aproveitar completamente os recursos dos
processadores multicore.

 Conceitos de programação paralela


e multithreaded.

ERAD-SP 2010 58
Fonte: Multi-core Programming, Intel Press, 2006.
ERAD-SP 2010 59
3. Arquiteturas Avançadas

ERAD-SP 2010 60
Multicores Avançados
• IBM Power 7
– Lançado em 2010
– 1,2 bilhões de transistores
– Módulos de até 4 soquetes
– 4, 6 ou 8 cores por chip
– 4 threads SMT por core
– 12 unidades funcionais por
core

ERAD-SP 2010 61
Multicores Avançados
• Sun UltraSparc T3
– a ser lançado em 2010
– 1 bilhão de transistores
– 16 cores
– 8 threads SMT por core
– 128 threads por chip
– SMP com 4 processadores

ERAD-SP 2010 62
Manycore
• Pastilhas de processadores multicore com
cores heterogêneos

• Aplicações
– Processamento especializado
– Co-processamento

• Exemplos:
– Cell (Sony, Toshiba, IBM)
– Intel Sandy Bridge
– AMD Fision

ERAD-SP 2010 63
Manycore
• Cell
– 1 PPE (PowerPC)
– 8 SPE

– PS3 (Cell BE)


– Roadrunner
(PowerXCell 8i)
Top 500 #3

ERAD-SP 2010 64
Manycore
• Cell

Fonte: Gshwind M., „Chip Multiprocessing and the Cell BE,” ACM Computing Frontiers, 2006,
http://beatys1.mscd.edu/compfront//2006/cf06-gschwind.pdf

ERAD-SP 2010 65
Manycore
• Cell

Circuito de um único SPE

Fonte: Gshwind M., „Chip Multiprocessing and the Cell BE,” ACM Computing Frontiers, 2006,
http://beatys1.mscd.edu/compfront//2006/cf06-gschwind.pdf

ERAD-SP 2010 66
Manycore
• CPU + GPU (ex. Intel Sandy Bridge, AMD Fusion)

ERAD-SP 2010 67
GPGPU
• GPGPU = General Purpose computation on Graphics
Processing Unit

• Utilização de GPUs (unidades de processamento


gráfico) para execução de computação normalmente
realizada em CPUs.

• Exemplos:
– NVIDIA
– ATI

ERAD-SP 2010 68
GPGPU
• GPU
– Unidade de processamento especializado para acelerar o
processamento gráfico 2D e 3D.

ERAD-SP 2010 69
GPGPU
• GPU
– Arquitetura baseada em SP (streaming processor) e
SFU (Special Function Units)

ERAD-SP 2010 70
GPGPU
• CPU vs. GPU
– Comparação relativa a utilização de área de silício alocada por
funcionalidade nas CPUs e GPUs.

Fonte: Nvidia, Compute Unified Device Architecture Programming Guide. 2008.

ERAD-SP 2010 71
GPGPU
• Princípios básicos
– Multicore
• streaming multiprocessor (Nvidia)
• superscalar shader processor (AMD)
• wide SIMD processor, CPU core (Intel).

– Processamento vetorial
• Modelo SIMD
• Paralelismo de dados

– Hardware Multithreading
• Sincronização de barreira

ERAD-SP 2010 72
GPGPU
• Paralelismo de dados

Mesma instrução
para todos os dados

ERAD-SP 2010 73
GPGPU

Fonte: Nvidia, Compute Unified Device Architecture Programming Guide. 2008.

ERAD-SP 2010 74
GPGPU
• Mais informações:

– gpgpu.org
– www.nvidia.com
– developer.amd.com (ATI)

– Minicurso 2 (avançado):
“Programação Paralela: CUDA”
Raphael Y. de Camargo (UFABC)
ERAD-SP 2010 (Material disponível no CD)

ERAD-SP 2010 75
Multiprocessadores
• Um multiprocessador contém vários (chips de)
processadores

• Memória compartilhada entre os processadores


– Comunicação pela memória
– Modelo UMA (uniform memory access)
– Baixa escalabilidade (até poucas dezenas de processadores)
– Fácil programação (OpenMP, CPar, ...)

ERAD-SP 2010 76
Multiprocessadores
• Arquitetura básica

ERAD-SP 2010 77
Multiprocessadores
• Cada processador pode ser um multicore com suporte a
multithreading
– Vários níveis de paralelismo

• Outras questões importantes


– Coerência de caches
– Multiprocessadores NUMA
– Programação paralela

ERAD-SP 2010 78
Multiprocessadores
• Coerência de caches

Várias soluções na literatura.

ERAD-SP 2010 79
Multiprocessadores
• Multiprocessadores
NUMA

– NUMA = Non-Uniform
Memory Acess
– Grupos de processadores
com sua respectiva
memória
– Tempos de acesso à
memória diferentes
– Mantém modelo de
memória compartilhada
(mas precisa cuidados
para obter desempenho)

ERAD-SP 2010 80
Multiprocessadores
• Programação Paralela
– Método de desenvolvimento de programas que explora a
disponibilidade de vários processadores/cores para uma
única aplicação.

– Modelos de programação
• Memória compartilhada (OpenMP, CPar)
• Memória distribuída (MPI)
• Mais informações:
Minicurso 3 (básico):
Programação Paralela: multicores e clusters
Profa. Dra. Liria Matsumoto Sato (Poli-USP)
(amanhã – 31/07 às 14h00)

ERAD-SP 2010 81
Clusters
• Arquitetura de sistema paralelo multiprocessador
organizado como um conjunto de processadores
interligados através de uma rede de interconexão rápida

Interconexão rápida (Myrinet,


Infiniband, Gigabit Ethernet)

Rede interna de administração


(Ethernet)

cluster

ERAD-SP 2010 82
Clusters
• Conhecido inicialmente como NOW (Network of
Workstations) ou COW (cluster of workstations)

• Cada nó tem sua própria memória local (não


compartilhada)
– Comunicação por troca de mensagens
– Difícil programação
• Modelo de programação diferente
• Conceito cliente-servidor
• MPI

ERAD-SP 2010 83
Clusters
• Máquinas comerciais

ERAD-SP 2010 84
4. Considerações Finais

ERAD-SP 2010 85
Arquiteturas Paralelas
Alguns pensamentos:

• Hoje, a maioria de sistemas computacionais apresenta


uma arquitetura paralela. Contudo nossos cursos não
apresentam este conteúdo de forma detalhada.

• É uma grande oportunidade para todos melhorar sua


formação com um estudo detalhado deste tópico.

ERAD-SP 2010 86
Arquiteturas Paralelas
Pensamento final:

• Precisamos difundir a necessidade


em compreender o funcionamento
das arquiteturas paralelas e do
aprendizado das técnicas de
programação paralela e distribuída
para usufruirmos dos benefícios
destas máquinas.

ERAD-SP 2010 87
Bibliografia
Algumas referências bibliográficas interessantes para
consulta sobre Arquiteturas Paralelas:
• Akter, S.; Roberts, J. Multi-core Programming. Intel Press, 2006.
• Culler, D.; Singh, J. Parallel Computer Architecture: A Hardware/
Software Approach. Morgan Kaufmann, 1999.
• De Rose, C.; Navaux, P. Arquiteturas Paralelas. Editora Sagra-Luzzatto,
2003. (Série Livros Didáticos - Número 15)
• Grama, A.; Gupta, A.; Karypis, G. and Kumar, V. Introduction to Parallel
Computing. 2nd ed., Addison-Wesley, 2003.
• Hennessy, J.L.; Patterson, D.A. Computer Architecture: A Quantitative
Approach. 4th ed., Morgan Kaufmann, 2007.
• Olukotun, K.; Hammond, L. and Laudon, J. Chip Multiprocessor
Architecture: Techniques to Improve Throughput and Latency.
Morgan & Claypool, 2007.
• Zomaya, A.Y.H. (ed.) Parallel & Distributed Computing Handbook.
McGraw-Hill, 1996.
ERAD-SP 2010 88

Você também pode gostar