arquiteturas paralelas - eradsp2010.files.wordpress.com · erad-sp 2010 sumário • introdução...
TRANSCRIPT
Arquiteturas Paralelas
Prof. Dr. Edson T. [email protected]
Departamento de Engenharia de Computação
e Sistemas Digitais
Escola Politécnica da USP
I Escola Regional de Alto Desempenho de SP
São Paulo - SP – 30 e 31 de Julho de 2010
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
ERAD-SP 2010
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
3
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
ERAD-SP 2010
Motivação
• Evolução em várias categorias de computadores
1950 1960 1970 1980 1990 2000
mainframe
minicomputador
microcomputador
x
UNIVAC
4004
/370 /390 z/900
servidor/workstation
desktop PC
value PC
8080 8088
80286
80386
80486
Pentium
PIIPIIIP4
Celeron
/360
PDP-8 PDP-11 VAX
RS/6000
PPro
Xeon
super-computador
ENIAC CDC-6600
?Cray-1 Cray-2NORC Cray-3 Cray T3E
Cray-4
8088Altair
7
Motivação
• Evolução do desempenho de processadores
ERAD-SP 2010
SPE Cint92
5
10
50
Year
86 8879 198081 82 83 84 85 87 89199091 92 93 94 95 96 97 98 99
*
*
*
**
*
**
2
386/16
*
* *
*
*
* 8088/5
*0.5
100
8088/8
80286/10
80286/12
386/20 386/25
386/33
500
*
*
*1000
20
200
1
0.2
*
***
**
*
486/25
486/33
486/50486-DX2/66
Pentium/66
Pentium/100Pentium/120
Pentium Pro/200
PI I /450
PI I I /600
486-DX4/100
Pentium/133Pentium/166
Pentium/200
PI I /300PI I /400PI I I /500
486-DX2/50
*
200001 02 03
5000
2000
**
*
*
*
***
*
PI I I /1000
P4/1500P4/1700
P4/2000P4/2200
P4/2400P4/2800
P4/3060
P4/3200
~ 100*/10 years
*
*
***
04 05
Northwood B
10000
Pres cott (1M )Pres cott (2M )
L eveling off
8
Motivação
• Fatores para melhora de desempenho
ERAD-SP 2010
5
10
50
Year
*
**
*
2
8088
*
100
386
Pentium
Year of first volume shipment
cf
500
1000
20
200
*
486-DX2
79 1980 81 82 83 84 85 86 87 88 89 1990 91 92 93 94 95 96 97 98 9978
*
*
*
*
*
*486
*
* * *
*
*
* ***
Pentium II
** *Pentium III
*
286
*
Pentium Pro
1
486-DX4
2000 01 02 03
2000
***
**
***
*
*
5000
Pentium 4
~10*/10years
~100*/10years
04 05
* * *
Leveling off(MHz)
Aumento da
Frequencia do relógio
9
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
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)
ERAD-SP 2010 13
Michael J. Flynn
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
ERAD-SP 2010 14
dadoinstruçãoUC = unidade de controle
UP = unidade de processsamento
MEM = memória
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)
• GPU
ERAD-SP 2010 15
dadosinstrução
Classificação de Máquinas Paralelas
• MISD
– Multiple Instruction, Single Data
• Múltiplos fluxos de instrução
• Um único fluxo de dados
– Execução de várias instruções
em um único dado.
– Não há exemplos.
ERAD-SP 2010 16
dado
instruções
UP2
UP3
UPnUCn
...
...
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
• Top500.org
ERAD-SP 2010 17
dadosinstruções
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
Fontes de Paralelismo
• Há várias fontes de execução paralela em um
computador moderno:
– Aplicações diferentes;
– Instâncias de execução
da mesma aplicação;
– Fluxo de instruções (threads)
de uma aplicação;
– Instruções de um programa (ILP)
Processadores
multicore
Multiprogramação
Multitarefa
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
ERAD-SP 2010
Paralelismo
de DadosParalelismo
Temporal
Paradigmas de processamento ILP
Resolução estática
de dependências
Resolução dinâmica
de dependências
Processadores
com Pipeline Processadores
VLIW
Processadores
Superscalares
extensão
SIMD
Paralelismo de
Emissão de Instruções
23
Evolução do Paralelismo
ERAD-SP 2010
Processadores von Neumanntradicionais
Processadores Superscalares com
extensão SIMD
Processadores
SuperscalaresProcessadores
Pipelined
Extensão do
paralelismo
da execução
Nível de
redundância
de hardware
ProcessamentoILP
~ 1985/88 ~ 1990/93 ~ 1994/00
Sequencial
t
+ paralelismo
de dados
+ paralelismo
de envio de
instruções
Paralelismo
temporal
24
Pipelining
• Execução de uma instrução é dividida em etapas:
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
Registra-
dores
ID MEMIF EXE WB
MemóriaMemória
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
ERAD-SP 2010 27
IF I1 I2
I1 I2ID
EXE
MEM
WB
I1 I2
I1 I2
I1 I2
I3 I4
I3
I3 I4 I5
I3 I4 I5 I6
ciclo 1 2 3 4 5 6
fluxo de
instruções
A cada ciclo de clock, termina-se a execução de uma instrução.
Superescalaridade
• Em um processador superescalar, várias instruções são
submetidas para execução simultaneamente.
• 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
Regis-
tradores
ID MEMBusca
de instr. EXE WB
MemoriaMemoria
instruções instruções
Superescalaridade
• Dependência de dados
ERAD-SP 2010 29
Stall
Time (cycles)
1 2 3 4 5 6 7 8
RF40
$s0
RF
$t0+
DMIM
lwlw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3
and $t2, $s4, $t0
sw $s7, 80($t3)
RF$s1
$t0add
RF$s1
$t0
RF
$t1+
DM
RF$t0
$s4
RF
$t2&
DMIM
and
IMor
and
sub
|$s6
$s5$t3
RF80
$t3
RF
+
DM
sw
IM
$s7
9
$s3
$s2
$s3
$s2
-$t0
oror $t3, $s5, $s6
IM
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)
ERAD-SP 2010 30
Time (cycles)
1 2 3 4 5 6 7 8
RF40
$s0
RF
$t0+
DMIM
lwlw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3
and $t2, $s4, $t0
sw $s7, 80($t3)
or|$s6
$s5$t3
RF80
$t3
RF
+
DM
sw $s7
or $t3, $s5, $s6
IM
RF$s1
$t0
RF
$t1+
DMIM
add
sub-$s3
$s2$t0
two cycle latency
between load and
use of $t0
RAW
WAR
RAW
RF$t0
$s4
RF
&
DM
and
IM
$t2
RAW
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
– 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
ciclos
sem
multithreading
cache
miss
blocked
multithreading
Interleaved
multithreading SMT
Multithreading
ERAD-SP 2010 35
Superescalar
(4-way)
Superescalar com SMT
(4-way/2 threads)
Thread Thread 2Thread 1
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
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
Paralelismo no Nível de Threads
ERAD-SP 2010
ILP(paralelismo no nível de instruções)
TLP(paralelismo no nível de threads)
Thread
(fluxo de instruções)
Múltiplos threads
Granularidade
do paralelismo
44
Paralelismo no Nível de Threads
• Execução paralela de threads
ERAD-SP 2010
De onde vem os vários threads?
da mesma
aplicação
Multiprogramação Multitarefa,
Multithreading
de aplicações
diferentes
45
Paralelismo no Nível de Threads
ERAD-SP 2010
Implementação de dois ou mais cores
colocados na mesma pastilha
Implementação de um
core multithreaded
pastilha
(chip)
SMP: Symmetric Multiprocessing
(CMP: Chip Multiprocessing)SMT: Simultaneous Multithreading
(HT: Hyperthreading (Intel))
L3/Memória
L2/L3Core Core
L3/Memória
Core
SMT
L2/L3
Implementação de paralelismo no nível de
threads em microprocessadores
46
Paralelismo no Nível de Threads
• Simultaneous
Multithreading
ERAD-SP 2010 47
Superescalar
(4-way)
Superescalar com SMT
(4-way/2 threads)
Thread Thread 2Thread 1
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.
ERAD-SP 2010 49
chip único
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
ERAD-SP 2010 51
Fonte: ARM, The ARM Cortex-A9 Processors White Paper, 2009.
Multicore
• Interconexão Interna
ERAD-SP 2010 53
Árbitro/Implementações de cache multi-porta
Crossbar
Implementação das interconexões
Anel
Número pequeno defontes e destinos
Número grande defontes e destinos
Cell BE (2006)XRI (2005)
p.ex. Conexão dos dual-coresaos cache L2 compartilhado
UltraSPARC T1 (2005)UltraSPARC T2 (2007)
Aspectos quantitativos, tais como número de fontes e destinos ou requisitos de banda, afetamqual alternativa de implementação é mais benéfica.
Multicore
• Aplicação de multicores vs. SMP e processadores
superescalares
– Instrução
– Bloco básico
– Loop
– Tarefa
– Processo
ERAD-SP 2010 54
Fonte: Olukotun et al. Chip Multiprocessor Architecture, 2007.
Multicore
• Breve Histórico
ERAD-SP 2010 55
Prescott(core original)
Smithfield(dois cores Prescott modificados colocados no mesmo die)
2/2004
90 nm112 mm2
125 mtrsL2: 1 MB
Pentium 4 A/E/F seriesPentium 4 5xx series
5/2005
90 nm2 x 103 mm2
2 x 115 mtrsL2: 2 MB
Pentium D 8xxPentium EE 840
Pentium D/EE
Multicore
• Breve Histórico
ERAD-SP 2010 56
7/2006
65 nm143 mm2
167/291 mtrs
Core 2 Duo E 6x00 series
Core2 Extrem X6x00 series
11/2006
65 nm2 x 143 mm2
2 x 167/291 mtrs
Core 2 Extreme QX6x00 series
Conroe(die)
Kentsfield(dois Conroes no mesmo empacotamento)
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
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
ERAD-SP 2010 65
Fonte: Gshwind M., „Chip Multiprocessing and the Cell BE,” ACM Computing Frontiers, 2006,http://beatys1.mscd.edu/compfront//2006/cf06-gschwind.pdf
Manycore
• Cell
ERAD-SP 2010 66
Fonte: Gshwind M., „Chip Multiprocessing and the Cell BE,” ACM Computing Frontiers, 2006,http://beatys1.mscd.edu/compfront//2006/cf06-gschwind.pdf
Circuito de um único SPE
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
ERAD-SP 2010
• GPU
– Unidade de processamento especializado para acelerar o
processamento gráfico 2D e 3D.
69
GPGPU
ERAD-SP 2010
• GPU
– Arquitetura baseada em SP (streaming processor) e
SFU (Special Function Units)
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
Fonte: Nvidia, Compute Unified Device Architecture Programming Guide. 2008.
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
• 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
• 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
• 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
ERAD-SP 2010 82
Interconexão rápida (Myrinet,
Infiniband, Gigabit Ethernet)
Rede interna de administração
(Ethernet)
cluster
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
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