Aula19: Desempenho de SSM
Large-Scale MP
Sincronização
ARQUITETURA DE COMPUTADORES
DEPT. DE CIÊNCIA DA COMPUTAÇÃO - UFMG
Coerência de Caches
 Classificação de MR
em 3 C’s
 O que pode
acontecer em uma
cache coerente?
 Sharing miss
 False sharing
Time
P1
1
Write x1
2
3
Write x1
4
5
Read x2
P2
Read x2
Write x2
Extendendo Coerência de Caches para
Memórias Compartilhadas Distribuídas
 Ao contrário de memórias compartilhadas
centralizadas, não possuímos neste caso um
recurso centralizado que vê todas as transações
(bus)
 Não há meio de broadcast
 Não há maneira de serializar transações
 barramento funciona como meio de garantir serialização das
operações
 Técnicas
 Extender protocolos do tipo snoopy
 Protocolos baseados em diretórios
Snoopy Hierárquico
Maneira mais simples: hierarquia de
barramentos, coerência snoopy a cada
nível
Duas possibilidades
P
P
P
P
P
P
P
P
L1
L1
L1
L1
L1
L1
L1
L1
B1
B1
L2
L2
B2
Mem
B2
Main Mem
L2
L2
Mem
Hierarquias com Memória
Global
 Caches primárias:
P
P
P
P
L1
L1
L1
L1
B1
L2
L2
B2
Main Mem
 Alta performance (SRAM)
 B1 segue protocolo snoopy
básico
 Caches secundárias:
 Muito maiores que L1
(precisam manter
propriedade de inclusão)
 L2 funciona como filtro p/
B1 e L1
 L2 pode ser baseada em
tecnologia DRAM
Hierarquias com Memória
Global
Vantagens:
Misses na memória principal requerem
tráfego único para a raiz da hierarquia
Utilização de dados compartilhados não é
uma questão importante
Desvantagens:
Misses para dados locais também trafegam
na hierarquia
Memória em barramento global deve ser
intercalada para aumentar BW
Hierarquias Baseadas em
Clusters
P
P
P
P
L1
L1
L1
L1
B1
Mem
L2
L2
Mem
B2
 Memória principal é distribuída entre clusters
 Alocação de dados locais pode reduzir tráfego em barramento
global
 Reduz latência (acessos locais mais rápidos)
 Exemplos: Encore Gigamax
 L2 pode ser substituída por uma chave roteadora
baseada em tags com coerência
Resumo de Hierarquias
Vantagens:
Conceitualmente simples de se construir
(aplica-se snoopy recursivamente)
Pode-se reduzir hardware necessário ao se
combinar as funcionalidades
Desvantagens:
Gargalo de comunicação na direção da raiz
Latências podem ser grandes na direção da
raiz
Protocolos de Coerência
Baseados em Diretórios
 Protocolos do tipo snoopy não escalam bem
porque dependem de algum meio de broadcast
 Snoop hierarquico faz raiz se tornar um gargalo
 Mecanismos baseados em diretório escalam
bem
 Evitam broadcasts
 Mantém informação de todas as caches que possuem cópia
do bloco
 Utilizam mensagens ponto-a-ponto para manter coerência
Protocolo Baseado em
Diretório
P
P
Cache
Cache
 K processadores
 Para cada bloco de cache
na memória => k bits de
presença, 1 dirty-bit
Rede de Interconexão
Memória
Bits de presença
Diretório
Dirty
 Para cada bloco na cache
 Invalid
 Exclusive
 Shared
Estados
Shared: um ou mais processadores
possuem o bloco cached, e o bloco na
memória é atualizado
Invalid ou Uncached: nenhum
processador possui uma cópia do bloco
Exclusivo: um único processador possui
uma cópia do bloco
Protocolo Baseado em
Diretório
Message
Source Destination
Read miss
Cache
Dir
Write miss
Cache
Dir
Invalidate
Dir
R. Caches
Fetch
Dir
R. Caches
Fetch/Inv.
Dir
R. Caches
Data value reply
Dir
Cache
Data write back R.Cache
Dir
Contents
P,A
P,A
A
A
A
Data
A,Data
Protocolo (Cache)
Invalidade
Invalid
CPU read
CPU read hit
Read miss
Exclusive
CPU write hit
CPU read hit
Shared
CPU read miss
Send write miss
CPU write
Data write-back
Fetch invalidade
Send read miss message
CPU write miss
Data write-back
Write miss
Protocolo (Diretório)
Read miss
Data value reply
Sharers = {P}
Data value reply
Sharers = {P}
Write miss
Sharers = {}
Data write back
Uncached
Exclusive
Write miss
Fetch/Invalidate
Data value reply
Sharers = {P}
Shared
Read miss
Data value reply
Sharers += {P}
Organização de Diretórios
 Implementação dos diretórios na memória
(como o apresentado anteriormente)
 Apresenta problemas de escalabilidade
 Pode apresentar problemas de BW
 Implementação dos diretórios na cache (SCI)
 Listas encadeadas (simples ou duplo)
 Mantém em cada cache “link” do próximo
processador compartilhando bloco
 SCI utiliza listas duplamente encadeadas
 Precisamos agora da mensagem “desconectar da
lista” e “conectar à lista” (a última equivalente a um
MISS)
Sincronização
SSM: sequência de instruções capazes de
recuperar ou alterar valores atomicamente
LSM: latência pode adicionar problemas
de desempenho
Primitivas de Hardware
Atomic exchange
Test-and-set
Fetch-and-increment
Load-linked
Load-linked
try:
OR
LL
SC
BEQZ
MOV
R3,R4,R0
R2,0(R1)
R3,0(R1)
R3,try
R4,R2
Implementando fetch-andincrement com load-linked
try:
LL
DADDUI
SC
BEQZ
R2,0(R1)
R3,R2,#1
R3,0(R1)
R3,try
Implementando Locks com
Coerência de Cache
DADDU R2,R0,#1
lockit:
EXCH R2,0(R1)
BNEZ R2,lockit
lockit:
LD
R2,0(R1)
BNEZ R2,lockit
DADDUI R2,R0,#1
EXCH R2,0(R1)
BNEZ R2,lockit
Implementando Locks com
Coerência de Cache
lockit:
LL
BNEZ
DADDUI
SC
BEQZ
R2,0(R1)
R2,lockit
R2,R0,#1
R2,0(R1)
R2,lockit
Download

document