Escolar Documentos
Profissional Documentos
Cultura Documentos
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”?
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
value PC
Celeron
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 *
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)
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
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
– 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
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
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
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
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
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
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
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.
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
ERAD-SP 2010 35
Multithreading
• Simultaneous Multithreading
ERAD-SP 2010 36
Arquiteturas Multicore
ERAD-SP 2010 37
Processadores Multicore
• Etapa atual no desenvolvimento de novas
arquiteturas de processadores.
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 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
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)
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)
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
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.
ERAD-SP 2010 53
Multicore
• Aplicação de multicores vs. SMP e processadores
superescalares
– Instrução
– Bloco básico
– Loop
– Tarefa
– Processo
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
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.
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
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
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
• 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.
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
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
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
ERAD-SP 2010 78
Multiprocessadores
• Coerência de caches
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
cluster
ERAD-SP 2010 82
Clusters
• Conhecido inicialmente como NOW (Network of
Workstations) ou COW (cluster of workstations)
ERAD-SP 2010 83
Clusters
• Máquinas comerciais
ERAD-SP 2010 84
4. Considerações Finais
ERAD-SP 2010 85
Arquiteturas Paralelas
Alguns pensamentos:
ERAD-SP 2010 86
Arquiteturas Paralelas
Pensamento final:
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