Multiprocessadores e
Paralelismo nível de Thread
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.
• TLP pode ser mais eficiente que o ILP.
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 CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Idle slot
Fine-Grained Multithreading
Fine-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
• Usado Sun’s Niagara
11
Multithreaded CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained Coarse-Grained
Thread 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
• Usado no IBM AS/400
Coarse-Grained Multithreading
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 CCCycle
One 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 CCCycleTwo threads, 8 units
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:
– Pentium4 (hyper-threading): 5-way issue, 2 threads
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 CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained Coarse-GrainedSimultaneous
Multithreading
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Idle slot
20
SMT
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.
Exemplos
Exemplos
Exemplos
Desempenho dos Processadores
26
Multithreaded CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained Coarse-Grained MultiprocessingSimultaneous
Multithreading
Thread 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",
Proc. of the IEEE, V 54, 1900-1909, Dec. 1966.
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
IO
Centralized vs. Distributed Memory
Scale
Centralized Memory
P0 P1
M IO
C C C
Pn
...
Distributed Memory
...
P0
M
C
IO
Interconnection Network
P1
M
C
IO
Pn
M
C
IO
Classificaçã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)
Exemplos de Multiprocessadores
Exemplos de Multiprocessadores
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
Threads/chip 2 4 4 32
Multi-Core Processor
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
– (cache L2) no chip Source: Intel Corp.
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%
d. <1% O,25%
Resposta usando Lei de Amdahl
( )
( )
( )
%75.992.79/79Fraction
Fraction8.0Fraction8079
1)100
Fraction Fraction 1(80
100
Fraction Fraction 1
1 08
Speedup
Fraction Fraction 1
1 Speedup
parallel
parallelparallel
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
c. > 2.5X 2,6X
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 remotomudanç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.
Multi-processadores de Memória Compartilhada
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
• problema de coerência de cache
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:51
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 é movidoentre 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:51
u :5
2
u=7u=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:51
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 compartilhamento.
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
devem ser inutilizadas
Protocolo Snooping de Coerência de Cache
Protocolo Snooping de Coerência de Cache
State
Tag
Data
I/O devicesMem
P1
$
Bus snoop
$
Pn
Cache-memorytransaction
• 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
– Atualiza estado de compartilhamento do bloco de cache
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 invalidate
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:51
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+AddrR/W
Address
Data1 Data2Data
Clock
Protocolo de Barramento
Contenção de Barramento
• Dois processadores querem usar o
barramento ao mesmo tempo
P0 P1
MIO
C C C
Pn
...
Bus req. Bus req.
Contenção de Barramento
• Dois processadores querem usar o
barramento ao mesmo tempo
P0 P1
MIO
C C C
Pn
...
Bus req. Bus req.
Árbitro
• O processador P0 tem que esperar
Módulos da Arquitetura
• Protocolo de barramento:– Requisição
– Comando
– Dado
State
Tag
Data
I/O devicesMem
P1
$
Bus snoop
$
Pn
Cache-memorytransaction
Estados:
• Não válido,
• Válido,
• dirty
• Acesso simultâneo:– Só um processador ganha o acesso
– Decisão: árbitro
– Invalidação das demais cópias
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
– OU Invalid : bloco não contem dado válido
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 CPUpara cada bloco de cache
• Blocos que não estão na cache não são validos
InvalidShared
(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
InvalidShared
(read/only)
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
State
Snooping: Write-Back - Bus
Mudança de estado considerando 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 epara requisições do
barramento para cada bloco de ache
InvalidShared
(read/only)
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 busWrite
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
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 busWrite
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
Estado ativo:
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
Exclusive
CPU Read hit
Read
miss on busWrite
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 busWrite
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 busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
A1A1
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 busWrite
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 devicesMem
P1
$
Bus snoop
$
Pn
Cache-memorytransaction
Estados:
• Shared,
• Não válido,
• Exclusivo
• Acesso simultâneo:– Só um processador ganha o acesso
– Decisão: árbitro
– Invalidação das demais cópias
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
Network-based Coherence
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; ... }
• ...
Operação Básica de Diretório
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
inutilizadas
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
• Diretório envia cópia mais atualizada
Protocolo baseado em Diretório
Interconnection Network
Directory
Local Memory
Cache
CPU 0
Directory
Local Memory
Cache
CPU 1
Directory
Local Memory
Cache
CPU 2
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X U 0 0 0
Bit Vector
Protocolo baseado em Diretório
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X U 0 0 0
Read Miss
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
7X
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
7X
Read Miss
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X 7X
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X 7X
Write Miss
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X 7X
Invalidate
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
Read Miss
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
Switch to Shared
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 1 0 0
6X
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
CPU 2 escreve 5 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
Write Miss
CPU 2 escreve 5 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
CPU 2 escreve 5 em X
(Write back)
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
5X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
5X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 1 0 0
Take Away
5X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
5X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
5X
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
4X
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,
Exemplo T1
Exemplo T1
Comparação T1 e Superescalares
Comparação T1 e Superescalares
Comparação T1 e Superescalares
Comparação T1 e Superescalares