Multiprocessadores e
Roteiro da Aula
• Conceitos básicos
• Paralelismo de Thread
• 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
Além de ILP….
• Em algumas aplicações existem paralelismo
natural
– Thread Level Parallelism – Data Level Parallelism
Além de ILP….
• Thread
: processo com instruções e dados
próprios
– thread pode ser parte de um programa paralelo de múltiplos processos, ou pode ser um programa
independente
– Cada thread tem seu estado (instruções, dados, PC, register state,etc) necessários para sua execução
• Data Level Parallelism
: realiza operações
identicas sobre um conjunto de dados
Thread Level Parallelism (TLP)
• ILP explora paralelismo implícito dentro de um
loop ou trecho de código
• TLP é representado explicitamente de uso de
múltiplas threads de execução que são
paralelas.
• Objetivo: usar múltiplos streams de instruções
para melhorar:
– Throughput de computadores que executam vários programas
– Tempo de Execução de programas multi-threaded.
Multithreaded Execution
• Multithreading: múltiplas threads que compartilham a unidade funcional de um processador
– processador deve duplicar estado para cada thread i.e, uma cópia separada do register file, um PC separado, e para
execução de programas independentes uma page table separada.
– Compartilhamento de memória através de mecanismos de memória virtual.
– HW chaveamento rápido de thread cerca de 100s para 1000s. • Quando chavear?
– Alternar instrução por thread (fine grain)
– Quando um thread está em estado de espera (devido a cache miss), um outro thread pode ser executado (coarse grain)
8
Multithreaded Categories
Time (proce
ss
or
cy
cl
e)
Superscalar Fine-Grained Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slotFine-Grained Multithreading
• Chaveamento entre threads a cada instrução causa a execução de multiplas threads.
• Usualmente feito em round-robin fashion, pulando threads em stall
• CPU deve ser capaz de chavear entre threads a cada clock • Vantagem de aproveitar pequenas e longas esperas desde
que instruções de outras threads podem executar quando uma thread está em espera
• Desvantagem de tornar execução de threads individuais mais lenta desde que uma thread pronta para executar vai esperar execução de outras threads
11
Multithreaded Categories
Time (proce
ss
or
cy
cl
e)
Superscalar Fine-Grained Coarse-GrainedThread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot
Coarse-Grained Multithreading
• Chaveamento de threads somente quando demora longa ocorre (L2 cache misses)
• Vantagens
– Não necessita de mecanismo para chaveamento rápido – Não torna a thread mais lenta,
• Desvantagem
– Não melhora desempenho devido a esperas curtas
– Desde que a CPU despacha instruções para 1 thread, quando um stall ocorre, o pipeline deve ser esvaziado
– Nova thread deve preencher o pipeline antes que as instruções completem
• Devido a este start-up overhead, coarse-grained multithreading é melhor para reduzir a penalidade de stalls de alto custo, quando pipeline refill << stall time
Coarse-Grained Multithreading
• + Sacrifica muito pouco o desempenho de uma single thread • – Tolera somente latencias longas (e.g., L2 misses)
• Definição de política de escalonamento de Thread • Define uma “preferred” thread (e.g., thread A) • Chaveia para thread B quando thread A L2 miss • Chaveia de volta para A quando A L2 miss retorna • Não pode tolerar latências menores que duas vezes a
profundidade do pipeline
• Necessita in-order pipeline pequeno para bom desempenho • Exemplo: IBM Northstar/Pulsar
Usar ambos ILP e TLP
• TLP e ILP exploram diferentes tipos de paralelismo em um programa
• Pode um processador orientado a ILP explorar TLP?
– Unidades Funcionais estão ociosas no data path projetado para ILP devido aos stalls ou dependencias no código.
• Pode TLP ser usado como fonte de instruções independentes que podem ocupar o processador durante stalls?
• Pode TLP ser usado para ocupar unidades funcionais que estariam ociosas quando não existe ILP suficiente?
16
Simultaneous Multi-threading ...
1 2 3 4 5 6 7 8 9 M M FX FX FP FP BR CC CycleOne thread, 8 units
M = Load/Store, FX = Fixed Point, FP = Floating Point, BR = Branch, CC = Condition Codes
1 2 3 4 5 6 7 8 9 M M FX FX FP FP BR CC Cycle
12/3/2018 17
Simultaneous Multithreading (SMT)
• Podemos usar multithread em uma máquina out-of-order?
• Simultaneous multithreading (SMT)
• + Tolera todas latencias (e.g., L2 misses, mispredicted branches)
• ± Sacrifica um pouco o desempenho de uma única thread
• Politica de Escalonamento de Thread – Round-robin
• Particionamento dinamico do Pipeline
• Exemplo:
12/3/2018 18
Simultaneous Multithreading (SMT)
• Simultaneous multithreading (SMT): dentro de um processador com escalonamento dinamico existem
vários mecanismos de HW para suportar multithreading – Grande conjunto de registradores virtuais que podem ser usados
para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar
registradores de forma única.
– Out-of-order completion permite a execução de threads out of order para melhor utilização do HW.
• Necessidade da adição de uma renaming table por thread e manter PCs separados
– Commit independente pode ser suportado através de reorder buffers separados para cada thread
19
Multithreaded Categories
Time (proce
ss
or
cy
cl
e)
Superscalar Fine-Grained Coarse-Grained SimultaneousMultithreadingThread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot
20
21
Desafios em SMT
• Deve ter um grande Banco de registradores para
armazenar contextos multiplos.
• Desenvolvimento eficiente do hardware para não
afetar o tempo de ciclo de clock
– Instruction issue – mais instruções devem ser consideradas
– Instruction completion – escolher quais instruções para commit pode ser um desafio
• Garantir que os conflitos gerados pela cache e
TLB em um processador SMT não degradam
desempenho.
26
Multithreaded Categories
Time (proce
ss
or
cy
cl
e)
Superscalar Fine-Grained Coarse-Grained SimultaneousMultithreading MultiprocessingThread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot
Interesse 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.
Flynn’s Taxonomy
• 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
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)
M.J. Flynn, "Very High-Speed Computers",
Multiprocessamento
• 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
Multiprocessamento
• 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.
Classificaçã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
Classificação por Memória
• Multiprocessadores de Memória Centralizada
– Poucos processadores ( poucas dezenas
chips ou cores) em 2006
– Memória única e centralizada
P0 P1 M IO C C C Pn ...
Centralized Memory
Classificaçã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
Distributed Memory
... P0 M C IO Interconnection Network P1 M C IO Pn M C IOCentralized vs. Distributed Memory
ScaleCentralized Memory
P0 P1 M IO C C C Pn ...Distributed Memory
... P0 M C IO Interconnection Network P1 M C IO Pn M C IOClassificaçã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
Multi-core
• Multiprocessador implementado em um
único circuito integrado
Mudanç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
Intel 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
Desafios 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?
a. 10%
b. 5%
c. 1%
Resposta usando Lei de Amdahl
(
)
(
)
(
)
%
75
.
99
2
.
79
/
79
Fraction
Fraction
8
.
0
Fraction
80
79
1
)
100
Fraction
Fraction
1
(
80
100
Fraction
Fraction
1
1
0
8
Speedup
Fraction
Fraction
1
1
Speedup
parallel parallel parallel parallel parallel parallel parallel parallel parallel enhanced overall=
=
−
=
=
+
−
+
−
=
+
−
=
Desafios 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?
a. > 1.5X
b. > 2.0X
Equaçã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
Desafios do processamento Paralelo
1. Paralelismo da Aplicação através de novos
algoritmos com melhor desempenho
2. 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
Multi-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
Exemplo de problema de Coerência de
Cache
– 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
I/O devices Memory P1 $ $ $ P2 P3 5 u = ? 4 u = ? u :5 1 u :5 2 u :5 3 u= 7
Garantindo a 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.
I/O devices Memory P1 $ $ $ P2 P3 u =? u :5 u :5
Garantindo a 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
I/O devices Memory P1 $ $ $ P2 P3 3 u = ? u :5 1 u :5 2 u=7 u=7 =7
Exemplo de problema de Coerência de
Cache
– 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
I/O devices Memory P1 $ $ $ P2 P3 5 u = ? 4 u = ? u :5 1 u :5 2 u :5 3 u= 7
Garantindo 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
Protocolos de Coerência de Cache
1. 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
2. Directory based
— O status do
compartilhamento de um bloco da memória
física é armazenado em um local,
diretório
Coerência:
Conceito
• 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 qualquer modificação, as cópias
Protocolo Snooping de Coerência de Cache
State Tag Data I/O devices Mem P1 $ Bus snoop $ Pn Cache-memory transaction• Controladores de Cache “snoops” (bisbilhotam) todas as
transações no barramento
– Transações relevantes : envolvem bloco que a sua cache possui
– Realiza ação para garantir coerência
• invalida, atualiza, ou fornece valor
Protocolos 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
Exemplo: Write-thru Invalidate
• 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? I/O devices Memory P1 $ $ $ P2 P3 5 u = 7 4 u = 7 u :5 1 u :5 2 u :5 3 u= 7 u = 7
PROBLEMA 1: COMO GARANTIR QUE
SÓ UM PROCESSADOR ESCREVE NA
VARIÁVEL COMPARTILHADA?
• Só um processador usa o barramento por vez
Bus Request Bus Grant Cmd+Addr R/W Address Data1 Data2 Data ClockProtocolo de Barramento
Contenção de Barramento
• Dois processadores querem usar o
barramento ao mesmo tempo
P0 P1 M IO C C C Pn ...
Contenção de Barramento
• Dois processadores querem usar o
barramento ao mesmo tempo
P0 P1 M IO C C C Pn ...
Bus req. Bus req.
Árbitro
Módulos da Arquitetura
• Protocolo de barramento: – Requisição – Comando – Dado State Tag Data I/O devices Mem P1 $ Bus snoop $ Pn Cache-memory transaction Estados: • Não válido, • Válido, • dirty• Acesso simultâneo:
– Só um processador ganha o acesso – Decisão: árbitro
PROBLEMA 2: ONDE ENCONTRAR A
CÓPIA MAIS ATUALIZADA DO BLOCO
DE CACHE?
Localizando 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
Localizando 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.
Protocolo 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
Protocolo 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.
Protocolo 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
CPU Read hit
Snooping: 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 Invalid Shared (read/only) Exclusive (read/write) CPU Read CPU Write Place read miss on bus Place Write Miss on bus CPU Write
Place Write Miss on Bus
CPU Write Miss (?)
Write back cache block
Place write miss on bus
CPU read hit
CPU write hit
Cache Block State
Snooping: Write-Back
Substituição de Bloco
Mudança de estado para requisições da CPU para cada
bloco da cache
Invalid (read/only)Shared
Exclusive (read/write)
CPU Read
CPU Write
CPU Read hit
Place read miss on bus
Place Write Miss on bus
CPU read miss
Write back block, Place read miss on bus
CPU Write
Place Write Miss on Bus
CPU Read miss
Place read miss on bus
CPU Write Miss
Write back cache block
Place write miss on bus
CPU read hit
CPU write hit Cache Block
Snooping:
Write-Back - Bus
Mudança de estadoconsiderando operações do barramento para
cada bloco de cache
Invalid Shared (read/only) Exclusive (read/write) Write Back Block; (abort memory access) Write miss
for this block
Read miss
for this block
Write miss
for this block
Write Back Block; (abort memory access)
Place read miss on bus
Snooping Write-back
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
Invalid (read/only)Shared
Exclusive (read/write)
CPU Read
CPU Write
CPU Read hit
Place Write Miss on bus
CPU read miss
Write back block, Place read miss
on bus CPU Write
Place Write Miss on Bus
CPU Read miss
Place read miss on bus
CPU Write Miss
Write back cache block
Place write miss on bus
CPU read hit
CPU write hit
Cache Block State
Write miss
for this block
Write Back Block; (abort memory access)
Write miss
for this block
Read miss
for this block
Write Back Block; (abort memory access)
75
Exemplo
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 P1: Read A1
P2: Read A1
P2: Write 20 to A1 P2: Write 40 to A2
• Assuma que estado inicial da cache é “não válido” • A1 e A2 mapeiam para o
mesmo slot de cache mas A1 != A2
Processor 1 Processor 2 Bus Memory
Remote Write Write Back Remote Write Invalid Shared Exclusive
CPU Read hit
Read
miss on bus
Write
miss on bus CPU Write Place Write Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
CPU Write Miss
Write Back
76
Exemplo: Passo 1
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1 P1: Read A1 P2: Read A1 P2: Write 20 to A1 P2: Write 40 to A2 Remote Write Write Back Remote Write Invalid Shared Exclusive
CPU Read hit
Read
miss on bus
Write
miss on bus CPU Write Place Write Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
CPU Write Miss
Write Back
CPU Read Miss • Assuma que estado inicial da
cache é “não válido” • A1 e A2 mapeiam para o
mesmo slot de cache mas A1 != A2
77
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1 P1: Read A1 Excl. A1 10 P2: Read A1 P2: Write 20 to A1 P2: Write 40 to A2
Exemplo: Passo 2
Remote Write Write Back Remote Write Invalid Shared ExclusiveCPU Read hit
Read
miss on bus
Write
miss on bus CPU Write Place Write Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial da cache é “não válido” • A1 e A2 mapeiam para o
mesmo slot de cache mas A1 != A2
78
Exemplo: Passo 3
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1 P1: Read A1 Excl. A1 10 P2: Read A1 Shar. A1 RdMs P2 A1 Shar. A1 10 WrBk P1 A1 10 10 Shar. A1 10 RdDa P2 A1 10 10 P2: Write 20 to A1 10 P2: Write 40 to A2 10 10 Remote Write Write Back Remote Write Invalid Shared Exclusive
CPU Read hit
Read
miss on bus
Write
miss on bus CPU Write Place Write Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
A1
A1
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial da cache é “não válido” • A1 e A2 mapeiam para o
mesmo slot de cache mas A1 != A2
79
Exemplo: Passo 4
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1 P1: Read A1 Excl. A1 10
P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10
Shar. A1 10 RdDa P2 A1 10 10 P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10
P2: Write 40 to A2 10 10 Remote Write Write Back Remote Write Invalid Shared Exclusive
CPU Read hit
Read
miss on bus
Write
miss on bus CPU Write Place Write Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
A1
A1 A1
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial da cache é “não válido” • A1 e A2 mapeiam para o
mesmo slot de cache mas A1 != A2
80 Remote Write Write Back Remote Write Invalid Shared Exclusive
CPU Read hit
Read
miss on bus
Write
miss on bus CPU Write Place Write Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
Exemplo: Passo 5
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1 P1: Read A1 Excl. A1 10
P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10
Shar. A1 10 RdDa P2 A1 10 10 P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10
P2: Write 40 to A2 WrMs P2 A2 10 Excl. A2 40 WrBk P2 A1 20 20 A1 A1 A1 A1 A1
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial da cache é “não válido” • A1 e A2 mapeiam para o
mesmo slot de cache mas A1 != A2
Snooping
• Protocolo de barramento: – Requisição – Comando – Dado State Tag Data I/O devices Mem P1 $ Bus snoop $ Pn Cache-memory transaction Estados: • Shared, • Não válido, • Exclusivo• Acesso simultâneo:
– Só um processador ganha o acesso – Decisão: árbitro
Limitações
• Aumento no número de processadores -> cresce
demanda por memória - > 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
Limitações
• Múltiplos barramentos e redes de interconexão
• Memória configurada em bancos de memória
Abordagem 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.
Operaçã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
• • •
P P
Cache Cache
Memory Directory
presence bits dirty bit Interconnection Network
• Leitura da memória pelo processador i:
• Se dirty-bit está OFF então { leitura da memória; atualiza p[i] 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 p[i] 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 p[i] igual a ON; ... }
Coerência
Snooping
• 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
Coerência:
Diretó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
Protocolo baseado em Diretório
Interconnection Network Directory Local Memory Cache CPU 0 Directory Local Memory Cache CPU 1 Directory Local Memory Cache CPU 2Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X U 0 0 0 Bit Vector
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X U 0 0 0 Read Miss
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X
Caches Memories
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X S 1 0 0 7 X
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X S 1 0 0 7 X Read Miss
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X S 1 0 1 7 X
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X S 1 0 1 7 X X 7
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X S 1 0 1 7 X X 7 Write Miss
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X S 1 0 1 7 X X 7 Invalidate
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X E 1 0 0 6 X
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X E 1 0 0 6 X Read Miss
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7 X Caches Memories Directories X E 1 0 0 6 X Switch to Shared
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X E 1 0 0 6 X
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X S 1 1 0 6 X X 6
CPU 2 escreve 5 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X S 1 1 0 6 X X 6 Write Miss
CPU 2 escreve 5 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X S 1 1 0 6 X X 6
CPU 2 escreve 5 em X
(Write back)
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X E 0 0 1 5 X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X E 0 0 1 5 X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6 X Caches Memories Directories X E 1 0 0 Take Away 5 X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5 X Caches Memories Directories X E 1 0 0 5 X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5 X
Caches Memories
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5 X Caches Memories Directories X E 1 0 0 5 X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5 X Caches Memories Directories X E 1 0 0 4 X
Exemplo 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,