Multithreading e multiprocessamento
(continuação)
DAP Spr.‘98 ©UCB 1
Coerência de cache
DAP Spr.‘98 ©UCB 2
Coerência de sistema memória
Um sistema de memória é coerente se:
1 – Uma leitura de um processador P a uma posição X que segue uma
uma escrita de X por P, sem nenhuma escrita de X por um outro processador
ocorrendo entre a escrita e a leitura por P, sempre retorna o valor escrito por P.
2- Uma leitura por um processador à posição X que segue uma escrita por um
outro processador a X retorna o valor escrito se a leitura e a escrita são
suficientemente separadas no tempo e nenhuma outra escrita a X ocorre
entre os dois acessos.
3- Escritas à mesma posição são serializadas; isto é, duas escritas à mesma
posição por quaisquer dois processadores são vistas na mesma ordem por
todos os processadores. Por exemplo: se valores 1 e 2 são escritos numa
posição, os processadores nunca vão ler primeiro o 2 e depois o 1.
DAP Spr.‘98 ©UCB 3
Protocolos de coerência
Existem dois protocolos comumente usados para a obtenção da coerência
de sistemas de cache em multiprocessadores:
Baseados em diretório – o estado de compartilhamento de um bloco de
memória é mantido num único local chamado de diretório. Esse tipo de
protocolo pode ser escalável, ou seja, pode ser usado para um sistema
com um número grande de processadores.
Snooping – todo cache que tem uma cópia de um dado de um bloco de
memória também tem uma cópia do estado de compartilhamento do bloco.
Os caches são todos acessíveis via algum meio de difusão (broadcast)
e todos os controladores de cache monitoram (snoop) o meio para
determinar se tem ou não uma cópia de um bloco que é requisitado num
acesso pelo barramento (ou outro sistema de interconexão usado).
DAP Spr.‘98 ©UCB 4
Invalidação na escrita
Existem duas formas de manter a coerência.
Um método é assegurar que um processador tenha acesso exclusivo
a uma dada posição antes de escrever.
Esse estilo de protocolo é chamado de protocolo de invalidação na
escrita (write invalidate protocol), pois invalida outras cópias numa
escrita.
É de longe, o protocolo mais comum, tanto para o esquema de snooping
comno para o de diretório.
O acesso exclusivo assegura que nenhuma outra cópia de uma posição
exista quando uma escrita ocorre: todas as outras cópias em cache do
conteúdo daquela posição são invalidadas.
DAP Spr.‘98 ©UCB 5
Multiprocessador com memória
compartilhada usa protocolo
snooping
DAP Spr.‘98 ©UCB 6
Protocolo snooping
DAP Spr.‘98 ©UCB 7
Protocolo snooping usando write-back
(ações originadas pelo processador)
Read hit – shared/modified – acerto no cache, leitura no cache, e fica no estado atual.
Read miss – invalid – falta no cache, faz leitura do bloco na memória e vai para shared.
Read miss – shared - o bloco requisitado pela CPU usa o mesmo slot do cache, logo há
falta de conflito de endereço. Substitui o bloco fazendo uma leitura
na memória e continua no mesmo estado.
Read miss – modified - o bloco requisitado pela CPU usa o mesmo slot do cache, logo há
falta de conflito de endereço. Substitui o bloco fazendo write-back e
lê o bloco requisitado na memória. Vai para o estado shared.
DAP Spr.‘98 ©UCB 8
Write hit – modified – escreve dado no cache
Write hit – shared – o bloco é atualizado no cache e as cópias do bloco em outros caches
são invalidadas. Passa para estado modified.
Write miss – invalid – falta de escrita, o bloco deve ser lido da memória, modificado
no cache, e vai para o estado modified.
Write miss – shared - o bloco no cache ocupa o mesmo slot do bloco para escrita,
portanto ocorre conflito de endereço. Deve fazer write-back
e uma leitura de bloco na memória. O novo bloco é modificado
e vai para o estado modified.
Write miss- modified- o bloco no cache ocupa o mesmo slot do bloco para escrita,
portanto ocorre conflito de endereço. Deve fazer write-back
e uma leitura de bloco na memória. O novo bloco é modificado
DAP Spr.‘98 ©UCB 9
e permanece no estado modified.
Diagrama de transição das ações
originadas pelo processador
Solicitação CPU – tipo normal
Operação – tipo negrito
DAP Spr.‘98 ©UCB 10
Protocolo snooping usando write-back
(ações originadas pelo barramento)
Read miss – shared – um outro processador (bus) tenta ler o bloco. Continua no estado shared.
Read miss – modified – um outro processador (bus) tenta ler o bloco, e o bloco não está
atualizado na memória pois foi modificado. Atualizar a
memória (write-back), abortando acesso à memória pelo outro
processador. Vai para o estado shared.
Invalidate - shared – um outro processador (bus) tenta escrever no bloco compartilhado,
resultando em write hit. Invalida o bloco indo para o estado invalid.
Write miss – shared – um outro processador (bus) tenta escrever no bloco compartilhado,
resultando em write miss. Invalida o bloco indo para o estado invalid.
Write miss – modified – um outro processador (bus) tenta escrever no bloco modificado.
Atualizar a memória (write-back), abortando acesso à memória
pelo outro processador. Vai para o estado invalid.
DAP Spr.‘98 ©UCB 11
Diagrama de transição
das ações originadas pelo
barramento
Solicitação Bus – tipo normal
Operação – tipo negrito
DAP Spr.‘98 ©UCB 12
Diagrama completo
CPU – preto
Bus – cinza
Atividade - negrito
DAP Spr.‘98 ©UCB 13
Example
Processor 1
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P1
State
Addr
Processor 2
P2
Value State
Bus
Memory
Bus
Addr Value Action Proc. Addr
Mem ory
Value Addr Value
P2: Write 20 to A1
P2: Write 40 to A2
Assumes initial cache state
is invalid and A1 and A2 map
to same cache block,
but A1  A2
Remote Write
or Miss
Invalid
Remote
Write
or Miss
Write Back
Read
miss on bus
Write
miss on bus
Remote Read
Write Back
CPU Read hit
Shared
CPU Write
Place Write
Miss on Bus
Exclusive
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 14
Example: Step 1
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P1
State
Excl.
P2
Value State
10
Addr
A1
Bus
Addr Value Action Proc. Addr
WrMs
P1
A1
Mem ory
Value Addr Value
P2: Write 20 to A1
P2: Write 40 to A2
Assumes initial cache state
is invalid and A1 and A2 map
to same cache block,
but A1  A2 .
Active arrow =
Remote Write
or Miss
Invalid
Remote
Write
or Miss
Write Back
Read
miss on bus
Write
miss on bus
Remote Read
Write Back
CPU Read hit
Shared
CPU Write
Place Write
Miss on Bus
Exclusive
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 15
Example: Step 2
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P1
State
Excl.
Excl.
P2
Value State
10
10
Addr
A1
A1
Bus
Addr Value Action Proc. Addr
WrMs
P1
A1
Mem ory
Value Addr Value
P2: Write 20 to A1
P2: Write 40 to A2
Assumes initial cache state
is invalid and A1 and A2 map
to same cache block,
but A1  A2
Remote Write
or Miss
Invalid
Remote
Write
or Miss
Write Back
Read
miss on bus
Write
miss on bus
Remote Read
Write Back
CPU Read hit
Shared
CPU Write
Place Write
Miss on Bus
Exclusive
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 16
Example: Step 3
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P1
State
Excl.
Excl.
Addr
A1
A1
Shar.
A1
P2
Bus
Value State Addr Value Action Proc. Addr
10
WrMs
P1
A1
10
Shar.
A1
RdMs
P2
A1
10
WrBk
P1
A1
Shar.
A1
10
RdDa
P2
A1
Mem ory
Value Addr Value
10
10
A1
P2: Write 20 to A1
P2: Write 40 to A2
Assumes initial cache state
is invalid and A1 and A2 map
to same cache block,
But A1  A2
Remote Write
or Miss
Invalid
Remote
Write
or Miss
Write Back
Read
miss on bus
Write
miss on bus
Remote Read
Write Back
10
10
10
10
10
CPU Read hit
Shared
CPU Write
Place Write
Miss on Bus
Exclusive
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 17
Example: Step 4
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
P1
State
Excl.
Excl.
Addr
A1
A1
Shar.
A1
P2
Bus
Value State Addr Value Action Proc. Addr
10
WrMs
P1
A1
10
Shar.
A1
RdMs
P2
A1
10
WrBk
P1
A1
Shar.
A1
10
RdDa
P2
A1
Excl.
A1
20
WrMs
P2
A1
Inv.
Assumes initial cache state
is invalid and A1 and A2 map
to same cache block,
but A1  A2
Remote Write
or Miss
Invalid
Remote
Write
or Miss
Write Back
Read
miss on bus
Write
miss on bus
Remote Read
Write Back
Mem ory
Value Addr Value
10
10
A1
10
10
10
10
10
CPU Read hit
Shared
CPU Write
Place Write
Miss on Bus
Exclusive
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 18
Example: Step 5
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
P1
State
Excl.
Excl.
Addr
A1
A1
Shar.
A1
Inv.
Assumes initial cache state
is invalid and A1 and A2 map
to same cache block,
but A1  A2
P2
Bus
Value State Addr Value Action Proc. Addr
10
WrMs
P1
A1
10
Shar.
A1
RdMs
P2
A1
10
WrBk
P1
A1
Shar.
A1
10
RdDa
P2
A1
Excl.
A1
20
WrMs
P2
A1
WrMs
P2
A2
Excl.
A2
40
WrBk
P2
A1
Remote Write
or Miss
Invalid
Remote
Write
or Miss
Write Back
Read
miss on bus
Write
miss on bus
Remote Read
Write Back
Mem ory
Value Addr Value
10
10
A1
20
A1
CPU Read hit
Shared
CPU Write
Place Write
Miss on Bus
Exclusive
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 19
10
10
10
10
20
Multiprocessamento com memória
distribuída e o protocolo baseado em
diretório
DAP Spr.‘98 ©UCB 20
Os blocos de memória podem estar
num dos seguintes estados
DAP Spr.‘98 ©UCB 21
No protocolo baseado em diretório
o sistema faz troca de mensagens
Local cache refere-se ao local node - nó onde as requisições originam.
Home directory refere-se ao home node - nó onde a posição de memória
e a entrada no diretório de um endereço se encontram.
DAP Spr.‘98 ©UCB 22
Remote cache refere-se a todos os caches, exceto local cache.
Mensagens originadas do local cache
para o home directory.
Read miss – O processador P tem uma falta de leitura no endereço A.
Requisita dados e transforma P em compartilhador de leitura.
Write miss - O processador P tem uma falta de escrita no endereço A.
Requisita dados e transforma P em proprietário exclusivo.
Invalidate -
Requisita o envio de invalidações a todos os caches remotos
que estejam com o bloco com endereço A.
DAP Spr.‘98 ©UCB 23
Outras mensagens
Invalidate – invalida uma cópia compartilhada de dados do endereço A.
Fetch – busca o bloco do endereço A e envia ao home directory.
Muda o estado de A do remote cache para shared.
Fetch/invalidate – Busca o bloco do endereço A e envia ao home directory.
Invalida o bloco no cache.
Data value reply – retorna um dado da memória (home memory).
Data write back – faz o write-back de um dado no endereço A.
DAP Spr.‘98 ©UCB 24
Diagrama de transição CPU- bloco de
cache individual no protocolo baseado em
diretório
processador local - preto
diretório - cinza
DAP Spr.‘98 ©UCB 25
CPU -Cache State Machine CPU Read hit
Invalidate
• State machine
or Miss due to
for CPU requests
address conflict:
for each
Invalid
CPU Read
memory block
Send Read Miss
• Invalid state
message
if in
CPU Write:
Fetch/Invalidate
memory
Send Write Miss
or Miss due to
address conflict:
send Data Write Back message
to home directory
msg to h.d.
Exclusive
(read/write)
Shared
(read/only)
CPU Write:
Send
Write Miss message
to home directory
Fetch: send
Data Write Back message
to home directory
CPU read hit
CPU write hit
DAP Spr.‘98 ©UCB 26
Diagrama de transição para o
diretório.
Os negritos indicam as ações
tomadas pelo diretório em resposta
à requisição.
Todas as requisições são causadas
externamente.
DAP Spr.‘98 ©UCB 27
Directory State Machine
• State machine
for Directory
requests for each
memory block
• Uncached state
if in memory
Uncached
Data Write Back:
Sharers = {}
(Write back block)
Write Miss:
Sharers = {P};
send Fetch/Invalidate;
send Data Value Reply
msg to remote cache
Read miss:
Sharers = {P}
send Data Value
Reply
Write Miss:
Sharers = {P};
send Data
Value Reply
msg
Exclusive
(read/write)
Read miss:
Sharers += {P};
send Data Value Reply
Shared
(read only)
Write Miss:
send Invalidate
to Sharers;
then Sharers = {P};
send Data Value
Reply msg
Read miss:
Sharers += {P};
send Fetch;
send Data Value Reply
msg to remote cache
DAP Spr.‘98 ©UCB 28
(Write back block)
Example
Processor 1 Processor 2 Interconnect
step
P1: Write 10 to A1
Directory Memory
P1
P2
Bus
Directory
Mem ory
State Addr ValueState Addr ValueAction Proc. Addr Value Addr State {Procs} Value
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
A1 and A2 map to the same cache block
DAP Spr.‘98 ©UCB 29
Example
Processor 1 Processor 2 Interconnect
step
P1: Write 10 to A1
Directory Memory
P1
P2
Bus
Directory
Mem ory
State Addr ValueState Addr ValueAction Proc. Addr Value Addr State {Procs} Value
WrMs P1 A1
A1
Ex {P1}
Excl. A1 10
DaRp P1 A1
0
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
A1 and A2 map to the same cache block
DAP Spr.‘98 ©UCB 30
Example
Processor 1 Processor 2 Interconnect
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
Directory Memory
P1
P2
Bus
Directory
Mem ory
State Addr ValueState Addr ValueAction Proc. Addr Value Addr State {Procs} Value
WrMs P1 A1
A1
Ex {P1}
Excl. A1
10
DaRp P1 A1
0
Excl. A1
10
P2: Write 20 to A1
P2: Write 40 to A2
A1 and A2 map to the same cache block
DAP Spr.‘98 ©UCB 31
Example
Processor 1 Processor 2 Interconnect
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
Directory Memory
P1
P2
Bus
Directory
Mem ory
State Addr ValueState Addr ValueAction Proc. Addr Value Addr State {Procs} Value
WrMs P1 A1
A1
Ex {P1}
Excl. A1
10
DaRp P1 A1
0
Excl. A1
10
Shar. A1
RdMs P2 A1
Shar. A1
10
Ftch
P1 A1
10
10
A1
Shar. A1 10 DaRp P2 A1
10
A1 Shar. {P1,P2}
10
10
10
10
Write Back
A1 and A2 map to the same cache block
DAP Spr.‘98 ©UCB 32
Example
Processor 1 Processor 2 Interconnect
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
Directory Memory
P1
P2
Bus
Directory
Mem ory
State Addr ValueState Addr ValueAction Proc. Addr Value Addr State {Procs} Value
WrMs P1 A1
A1
Ex {P1}
Excl. A1
10
DaRp P1 A1
0
Excl. A1
10
Shar. A1
RdMs P2 A1
Shar. A1
10
Ftch
P1 A1
10
10
A1
Shar. A1 10 DaRp P2 A1
10
A1 Shar. {P1,P2}
10
Excl. A1 20 WrMs P2 A1
10
Inv.
Inval. P1 A1
A1 Excl. {P2}
10
10
A1 and A2 map to the same cache block
DAP Spr.‘98 ©UCB 33
Example
Processor 1 Processor 2 Interconnect
step
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
Directory Memory
P1
P2
Bus
Directory
Mem ory
State Addr ValueState Addr ValueAction Proc. Addr Value Addr State {Procs} Value
WrMs P1 A1
A1
Ex {P1}
Excl. A1
10
DaRp P1 A1
0
Excl. A1
10
Shar. A1
RdMs P2 A1
Shar. A1
10
Ftch
P1 A1
10
10
A1
Shar. A1 10 DaRp P2 A1
10
A1 Shar. {P1,P2}
10
Excl. A1 20 WrMs P2 A1
10
Inv.
Inval. P1 A1
A1 Excl. {P2}
10
WrMs P2 A2
A2 Excl. {P2}
0
WrBk P2 A1
20 A1 Unca. {}
20
Excl. A2 40 DaRp P2 A2
0 A2 Excl. {P2}
0
A1 and A2 map to the same cache block
DAP Spr.‘98 ©UCB 34
Download

write-back