Title: Multiprocessadores e Paralelismo n
1(No Transcript)
2Multiprocessadores e Paralelismo nível de Thread
3Roteiro da Aula
- Conceitos básicos
- Taxonomia dos processadores
- Modelos de memória e de comunicação
- Problema da coerência de memória
- Protocolos de coerência baseado em snoop
- Protocolos de coerência baseado em diretórios
4Desempenho Uniprocessor (SPECint)
3X
From Hennessy and Patterson, Computer
Architecture A Quantitative Approach, 4th
edition, 2006
- VAX 25/year 1978 to 1986
- RISC x86 52/year 1986 to 2002
- RISC x86 ??/year 2002 to present
5Interesse em Multiprocessadores
- Uma crescente utilização de servidores
- Um crescimento em aplicações data-intensive
- Um melhor entendimento de como usar
multiprocessadores para explorar thread-level
paralelismo - Investimento em replicação é mais atrativo que
investimento em um projeto exclusivo.
6Flynns Taxonomy
M.J. Flynn, "Very High-Speed Computers", Proc.
of the IEEE, V 54, 1900-1909, Dec. 1966.
Single Instruction Single Data (SISD) (Uniprocessor) Single Instruction Multiple Data SIMD (single PC Vector, CM-2)
Multiple Instruction Single Data (MISD) (????) Multiple Instruction Multiple Data MIMD (Clusters, SMP servers)
- Flynn classificou de acordo com streams de dado e
controle em 1966 - SIMD ? Data Level Parallelism
- MIMD ? Thread Level Parallelism
- MIMD mais popular pois
- Flexibilidade N programs e 1 programa
multithreaded - Cost-effective mesma MPU em desktop MIMD
7Multiprocessamento
- Clusters
- commodity clusters
- Baseados em processadores comerciais e
interconexões - custom clusters
- O projetista customiza cada nó de processamento e
a rede de interconexão
8Multiprocessamento
- Clusters
- Aplicações que focam em taxa de transferência e
possuem pouca (ou nenhuma) comunicação entre
threads, com Servidores WEB, e aplicações
baseadas em transações podem ser implementadas em
um cluster.
9Classificação de Multiprocessadores
- Arquitetura Paralela Arquitetura do Computador
Arquitetura da Comunicação - Classificação por memória
- Processador de Memória Centralizada (Symmetric)
- Típico para sistemas pequenos ? demanda de
largura de banda de memória e rede de
comunicação. - Multiprocessador de Memória Fisicamente
Distribuída - Escala melhor ? demanda de largura de banda para
rede de comunicação
10Classificação por Memória
- Multiprocessadores de Memória Centralizada
- Poucos processadores ( poucas dezenas chips ou
cores) em 2006 - Memória única e centralizada
11Classificação por Memória
- Multiprocessadores de Memória Fisicamente
Distribuída - Maior número de processadores (centenas de chips
ou cores) - Memória distribuída entre processadores
12Centralized vs. Distributed Memory
Scale
13Classificação de Multiprocessadores
- Arquitetura Paralela Arquitetura do Computador
Arquitetura da Comunicação - Classificando por comunicação
- Multiprocessador baseado em Message-Passing
processadores enviam menssagens - Processador baseado em Memória Compartilhada
processadores se comunicam através de espaço de
endereçamento comum. - Memória Centralizada , UMA (Uniform Memory
Access time) - Memória Distribuída, NUMA (Non Uniform Memory
Access time)
14Exemplos de Multiprocessadores
15Exemplos de Multiprocessadores
16Multi-core
- Multiprocessador implementado em um único
circuito integrado
17Mudança de Paradigma
- We are dedicating all of our future product
development to multicore designs. This is a sea
change in computing - Paul Otellini, President, Intel (2005)
- Todas as companhias de processadores estão
desenvolvendo multi-core (2X CPUs / 2 anos)
Manufacturer/Year AMD/05 Intel/06 IBM/04 Sun/05
Processors/chip 2 2 2 8
Threads/Processor 1 2 2 4
Threads/chip 2 4 4 32
18Multi-Core Processor
19Intel Core 2 Duo
- Cores homegêneos
- Superscalares
- (escalonamento dinâmico, especulação, multiple
issue) - Interconexão baseada em barramento
- Cada core tem cache local (L1)
- Memória compartilhada
- (cache L2) no chip
Source Intel Corp.
20Desafios do processamento Paralelo
- Primeiro desafio quantos do programa é
inerentemente sequencial - Suponha speedup de 80X speedup para 100
processadores. Qual a fração do programa que deve
ser sequencial? - 10
- 5
- 1
- lt1
O,25
21Resposta usando Lei de Amdahl
22Desafios do processamento Paralelo
- Segundo desafio longas latências de memórias
remotas - Suponha 32 CPU MP, 2GHz, 200 ns memória remota,
todos acessos locais são hits e CPI base de 0.5.
(Acesso remoto 200/0.5 400 ciclos.) - Qual o impacto no desempenho se 0.2 das
instruções envolvem acessos remotos? - gt 1.5X
- gt 2.0X
- gt 2.5X
2,6X
23Equação do CPI
- CPI CPI base taxa de acesso remoto x custo
do acesso remoto - CPI 0.5 0.2 x 400 0.5 0.8 1.3
- Sem acesso remoto é 2.6 mais rápida que com 0.2
das instruções envolvendo acessos remoto
24Desafios do processamento Paralelo
- Paralelismo da Aplicação? através de novos
algoritmos com melhor desempenho - Impacto da longa latência no acesso remoto?
mudanças na arquitetura e na programação - For exemplo, redução dos acessos remotos por
- Caching shared data (HW)
- Restruturando estruturas de dados para garantir
mais acessos locais (SW) - Foco do capítulo gerenciar latência através do
uso de cache.
25Multi-processadores de Memória Compartilhada
26Multi-processadores de Memória Compartilhada
- Evolução
- Múltiplas placas ou chips usando barramento
compartilhado - Múltiplos processadores dentro de um chip.
- Caches
- Dados Privado usados por cada processador
- Dados Compartilhados usados por múltiplos
processadores - Caching dado compartilhado
- ? reduz latência a dados compartilhado, largura
de banda da memória para acesso a dado
compartilhado e largura de banda de interconexão - ? problema de coerência de cache
27Exemplo de problema de Coerência de Cache
P
P
P
2
1
3
I/O devices
Memory
- Processadores verão diferentes valores de u após
evento 3 - Caches write-through valores inconsistentes
- Caches write back valor escrito na memória
depende do momento que que ocorre o flush de
cache e os valores são atualizados na memória
28Garantindo a Coerência
- Como caches suportam o compartilhamento com
coerência? - Replicação para dados compartilhados que estão
na memória são feitas cópias nas caches que estão
usando o dado - Reduz latência de acesso e utilização simultânea
do barramento na leitura de dado compartilhado.
P
P
P
2
1
3
I/O devices
Memory
29Garantindo a Coerência
- Como caches suportam o compartilhamento com
coerência? - Migração o valor mais atualizado da variável é
movido entre a cache que tem o valor mais atual e
a cache que precisa do dado - Reduz a latência devido a leitura dos dados na
memória
P
P
P
2
1
3
7
u7
I/O devices
Memory
30Garantindo a Coerência
- Como manter coerência de dados migrados ou
replicados? - Protocolos implementados pelo controlador da
cache e/ou pelo controlador de memória que
permitem o rastreamento do status de
compartilhamento.
31Coerência
- Só uma pessoa pode falar no microfone por vez
- Toda modificação em conta deve ser comunicada
entre os funcionários através do alto falante - Após modificações cópias devem ser inutilizadas
32Protocolos de Coerência de Cache
- Snooping Cada cache que possui cópia de um dado
também tem uma cópia do status de
compartilhamento, - Todas as caches são acessíveis através de meio
barramento - Todos os controladores de caches monitoram ou
snoop o meio para determinar se eles possuem ou
não uma cópia sendo requisitada pelo barramento - Directory based O status do compartilhamento de
um bloco da memória física é armazenado em um
local, diretório
33Protocolos de Coerência de Cache
- Write Invalidate
- As cópías nas demais caches são Invalidadas na
ocorrência de uma escrita em uma das caches - Write Update
- As cópias das demais caches são atualizadas após
a ocorrência de uma escrita em uma das caches - Write update causam maior utilização do
barramento - Multiprocessadores atuais usam write invalidate
34Protocolo Snooping de Coerência de Cache
- Controladores de Cache snoops todas as
transações no barramento - Transações relevantes envolvem bloco que a
cache possui - Realiza ação para garantir coerência
- invalida, atualiza, ou fornece valor
- Atualiza estado de compartilhamento do bloco de
cache
35Exemplo Write-thru Invalidate
P
P
P
2
1
3
I/O devices
Memory
- P3 Deve invalidar todas as cópias antes da
escrita - Caches write through simplicidade de
implementação porém mais acessos à memória - Caches write-back menos acessos à memória, mas
como encontrar o bloco que contem a cópia com
valor atualizado?
36Módulos da Arquitetura
- Estados
- Não válido,
- Válido,
- dirty
- Protocolo de barramento
- Requisição
- Comando
- Dado
- Acesso simultâneo
- Só um processador ganha o acesso
- Decisão árbitro
- Invalidação das demais cópias
- Onde encontrar a cópia mais atualizada do bloco
de cache?
37Localizando cópia mais atualizada
- Caches Write-through usa cópia da memória
- Write through é mais simples porém causa muitos
acessos à memória e maior utilização do
barramento. - Caches Write-back deve localizar cópia mais
recente nas caches. - É mais complicado de implementar
- Reduz acessos à memória
- A maioria dos multiprocessadores usam caches
write-back
38Localizando cópias em Caches Write Back
- Solução Usar o mesmo mecanismo de snooping para
achar a cópia mais atual - Blocos de cache Snoop todo endereço colocado no
barramento - Se processador possui cópia atual do bloco
requisitado ele responde a requisição de leitura
e aborta acesso à memória.
39Localizando cópia mais atualizada
- Caches Write-through usa cópia da memória
- Write through é mais simples porém causa muitos
acessos à memória e maior utilização do
barramento. - Caches Write-back deve localizar cópia mais
recente nas caches. - É mais complicado de implementar
- Reduz acessos à memória
- A maioria dos multiprocessadores usam caches
write-back
40Localizando cópias em Caches Write Back
- Solução Usar o mesmo mecanismo de snooping para
achar a cópia mais atual - Blocos de cache Snoop todo endereço colocado no
barramento - Se processador possui cópia atual do bloco
requisitado ele responde a requisição de leitura
e aborta acesso à memória.
41Protocolo Snooping Write Back
- Cada bloco de cache vai estar em UM dos estados
- Shared bloco pode ser lido
- OU Modified/Exclusive cache tem somente uma
cópia que pode ser escrita e dirty - OU Invalid bloco não contem dado válido
42Protocolo Snooping Write Back
- Cada bloco de cache vai estar em UM dos estados
- Shared bloco pode ser lido
- OU Modified/Exclusive cache tem somente uma
cópia que pode ser escrita e dirty - OU Invalid bloco não contem dado válido
- CPU solicita leitura
- Se cache não tem cópia
- Controlador coloca Read Miss no barramento
- Outras caches
- Read misses todas as caches vão dar snoop no
barramento - Controlador bisbilhota todo endereço colocado no
barramento - Se a cache possui uma cópia Exclusive do bloco
requisitado, fornece o bloco em resposta a
requisição de leitura e aborta o acesso à memória.
43Protocolo Snooping Write Back
- Cada bloco de cache vai estar em UM dos estados
- Shared bloco pode ser lido
- OU Modified/Exclusive cache tem somente uma
cópia que pode ser escrita e dirty - OU Invalid bloco não contem dado válido
- CPU solicita escrita
- Se cache não tem cópia
- Controlador coloca Write Miss no barramento
- Outras caches
- Write misses todas as caches vão dar snoop no
barramento - Controlador bisbilhota todo endereço colocado no
barramento - Se a cache possui uma cópia Exclusive do bloco
requisitado, atualiza a memória e Invalida a
cópia. - Se a cache possui uma cópia Shared do bloco
requisitado invalida a cópia
44Snooping Write-Back - CPU
- Mudança de estado considerando requisições da CPU
para cada bloco de cache - Blocos que não estão na cache não são validos
Shared (read/only)
CPU Read
Invalid
Place read miss on bus
CPU Write
Place Write Miss on bus
CPU Write Place Write Miss on Bus
Cache Block State
Exclusive (read/write)
CPU read hit CPU write hit
CPU Write Miss (?) Write back cache block Place
write miss on bus
45Snooping Write-Back Substituição de Bloco
CPU Read hit
- Mudança de estado para requisições da CPU para
cada bloco da cache
CPU Read
Shared (read/only)
Invalid
Place read miss on bus
CPU Write
CPU Read miss Place read miss on bus
CPU read miss Write back block, Place read
miss on bus
Place Write Miss on bus
Cache Block State
CPU Write Place Write Miss on Bus
Exclusive (read/write)
CPU read hit CPU write hit
CPU Write Miss Write back cache block Place write
miss on bus
46Snooping Write-Back - Bus
- Mudança de estado considerando operações do
barramento para cada bloco de cache
Write miss for this block
Shared (read/only)
Invalid
Write miss for this block
Read miss for this block
Write Back Block (abort memory access)
Write Back Block (abort memory access)
Exclusive (read/write)
47Snooping Write-back
CPU Read hit
Write miss for this block
- Mudança de estado para requisições da CPU para
cada bloco da cache e para requisições do
barramento para cada bloco de ache
Shared (read/only)
CPU Read
Invalid
Place read miss on bus
CPU Write
Place Write Miss on bus
CPU Read miss Place read miss on bus
Write miss for this block
CPU read miss Write back block, Place read
miss on bus
Write Back Block (abort memory access)
CPU Write Place Write Miss on Bus
Read miss for this block
Write Back Block (abort memory access)
Cache Block State
Exclusive (read/write)
CPU read hit CPU write hit
CPU Write Miss Write back cache block Place write
miss on bus
48Exemplo
Bus
Processor 1
Processor 2
Memory
- Assuma que estado inicial da cache é não válido
- A1 e A2 mapeiam para o mesmo slot de cache mas A1
! A2
49Exemplo Passo 1
50Exemplo Passo 2
CPU Read hit
Remote Write
- Assuma que estado inicial da cache é não válido
- A1 e A2 mapeiam para o mesmo slot de cache mas A1
! A2
Shared
Invalid
Read miss on bus
Write miss on bus
Remote Write Write Back
CPU Write Place Write Miss on Bus
Remote Read Write Back
Exclusive
CPU read hit CPU write hit
51Exemplo Passo 3
A1
A1
- Assuma que estado inicial da cache é não válido
- A1 e A2 mapeiam para o mesmo slot de cache mas A1
! A2
52Exemplo Passo 4
A1
A1 A1
- Assuma que estado inicial da cache é não válido
- A1 e A2 mapeiam para o mesmo slot de cache mas A1
! A2
53Exemplo Passo 5
A1
A1 A1 A1
A1
- Assuma que estado inicial da cache é não válido
- A1 e A2 mapeiam para o mesmo slot de cache mas A1
! A2
54Limitações
- Aumento no número de processadores -gt cresce
demanda por memória - gt tornando-se um
bottleneck. - Para bus-based multiprocessador,
- Bus acessos devido a coerência e acessos à
memória - Memória UNICA recebe TODAS as requisições dos
processadores. - Processadores mais rápidos e em maior número.
- Como suportar este novo cenário?
- Múltiplos barramentos e redes de interconexão
- Memória configurada em bancos de memória
55Limitações
- Múltiplos barramentos e redes de interconexão
- Memória configurada em bancos de memória
56Network-based Coherence
57Abordagem Escalável Diretórios
- Cada bloco de memória tem uma informação
armazenada em um diretório - Gerencia cópias dos blocos em cache e seus
estados - Em caso de miss, encontra entrada no diretório,
analiza o mesmo e comunica somente com os nós que
possuem cópia se necessário - Em redes escaláveis , comunicação com diretório e
cópias é feita através da rede. - Várias alternativas para organizar informação no
diretório.
58Operação Básica de Diretório
k processadores. Cada bloco de cache na
memória k presence-bits, 1 dirty-bit Cada
bloco de cache em cache 1 valid bit, e 1
dirty (owner) bit
- Leitura da memória pelo processador i
- Se dirty-bit está OFF então leitura da
memória atualiza pi para ON - Se dirty-bit está ON então acessa linha de
cache do processador dirty (estado de cache para
shared) atualiza memória faz dirty-bit igual a
OFF faz pi igual a ON fornece dado para i - Escrita na memória pelo processador i
- Se dirty-bit igual a OFF então fornece dado
para i envia nvalidations para todas as caches
que tem o bloco faz dirty-bit igual a ON faz
pi igual a ON ... - ...
59Operação Básica de Diretório
60Coerência
- Só uma pessoa pode falar no microfone por vez
- Toda modificação em conta deve ser comunicada
entre os funcionários através do alto falante - Após modificações cópias devem ser inutilizadas
61CoerênciaDiretório
- Acessos às pastas somente através do diretório
- Toda modificação em qualquer cópia deve ser
comunicada ao diretório - Diretório comunica a necessidade de inutilização
- Diretório envia cópia mais atualizada
62Protocolo baseado em Diretório
63Protocolo baseado em Diretório
Interconnection Network
Bit Vector
X
U 0 0 0
Directories
7
X
Memories
Caches
64CPU 0 lê X
Interconnection Network
X
U 0 0 0
Directories
7
X
Memories
Caches
65CPU 0 lê X
Interconnection Network
X
S 1 0 0
Directories
7
X
Memories
Caches
66CPU 0 lê X
Interconnection Network
X
S 1 0 0
Directories
Memories
Caches
67CPU 2 lê X
Interconnection Network
X
S 1 0 0
Directories
Memories
Caches
68CPU 2 lê X
Interconnection Network
X
S 1 0 1
Directories
Memories
Caches
69CPU 2 lê X
Interconnection Network
X
S 1 0 1
Directories
Memories
Caches
70CPU 0 escreve 6 em X
Interconnection Network
Write Miss
X
S 1 0 1
Directories
Memories
Caches
71CPU 0 escreve 6 em X
Interconnection Network
X
S 1 0 1
Directories
Invalidate
Memories
Caches
72CPU 0 escreve 6 em X
Interconnection Network
X
E 1 0 0
Directories
Memories
Caches
6
X
73CPU 1 lê X
Interconnection Network
Read Miss
X
E 1 0 0
Directories
Memories
Caches
74CPU 1 lê X
Interconnection Network
Switch to Shared
X
E 1 0 0
Directories
Memories
Caches
75CPU 1 lê X
Interconnection Network
X
E 1 0 0
Directories
Memories
Caches
76CPU 1 lê X
Interconnection Network
X
S 1 1 0
Directories
Memories
Caches
77CPU 2 escreve 5 em X
Interconnection Network
X
S 1 1 0
Directories
Memories
Write Miss
Caches
78CPU 2 escreve 5 em X
Interconnection Network
Invalidate
X
S 1 1 0
Directories
Memories
Caches
79CPU 2 escreve 5 em X(Write back)
Interconnection Network
X
E 0 0 1
Directories
Memories
5
X
Caches
80CPU 0 escreve 4 em X
Interconnection Network
X
E 0 0 1
Directories
Memories
Caches
81CPU 0 escreve 4 em X
Interconnection Network
X
E 1 0 0
Directories
Memories
Take Away
Caches
82CPU 0 escreve 4 em X
Interconnection Network
X
E 1 0 0
Directories
Memories
Caches
83CPU 0 escreve 4 em X
Interconnection Network
X
E 1 0 0
Directories
Memories
Caches
84CPU 0 escreve 4 em X
Interconnection Network
X
E 1 0 0
Directories
Memories
Caches
85CPU 0 escreve 4 em X
Interconnection Network
X
E 1 0 0
Directories
Memories
Caches
4
X
86Exemplo T1
- Oito cores cada um suporta até 4 threads.
- Cada core consiste num pipeline de 6 estágios
- Tl usa fine-grained multithreading,
- Os cores acessam 4 caches de 2 níveis
- Existe coerência entre caches L1 e um diretório
com cada cache L2 - LI data cache é write through,
87Exemplo T1
88Exemplo T1
89Comparação T1 e Superescalares
90Comparação T1 e Superescalares
91Comparação T1 e Superescalares
92Comparação T1 e Superescalares