DAP Spr.‘98 ©UCB 3
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 4
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 5
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.
Invalidação na escrita
DAP Spr.‘98 ©UCB 8
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 9
Write hit – modified – escreve dado no cacheWrite 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 e permanece no estado modified.
DAP Spr.‘98 ©UCB 10
Diagrama de transição das ações originadas pelo processador
Solicitação CPU – tipo normalOperação – tipo negrito
DAP Spr.‘98 ©UCB 11
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 12
Diagrama de transiçãodas ações originadas pelo
barramento
Solicitação Bus – tipo normalOperação – tipo negrito
DAP Spr.‘98 ©UCB 14
Example
P1 P2 Bus Memorystep State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1P1: Read A1P2: Read A1
P2: Write 20 to A1P2: Write 40 to A2
Assumes initial cache state is invalid and A1 and A2 map to same cache block,but
Processor 1 Processor 2 Bus Memory
Remote Write
or MissWrite Back
Remote Write or Miss
Invalid Shared
Exclusive
CPU Read hit
Read miss on bus
Write miss on bus CPU Write
Place Write Miss on Bus
CPU read hitCPU write hit
Remote Read Write Back
A2A1
DAP Spr.‘98 ©UCB 15
Example: Step 1P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1P2: Read A1
P2: Write 20 to A1P2: Write 40 to A2
Assumes initial cache state is invalid and A1 and A2 map to same cache block,but .
Active arrow =
Remote Write
or MissWrite Back
Remote Write or Miss
Invalid Shared
Exclusive
CPU Read hit
Read miss on bus
Write miss on bus CPU Write
Place Write Miss on Bus
CPU read hitCPU write hit
Remote Read Write Back
A2A1
DAP Spr.‘98 ©UCB 16
P1 P2 Bus Memorystep State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1P1: Read A1 Excl. A1 10P2: Read A1
P2: Write 20 to A1P2: Write 40 to A2
Example: Step 2
Assumes initial cache state is invalid and A1 and A2 map to same cache block,but
Remote Write
or MissWrite Back
Remote Write or Miss
Invalid Shared
Exclusive
CPU Read hit
Read miss on bus
Write miss on bus CPU Write
Place Write Miss on Bus
CPU read hitCPU write hit
Remote Read Write Back
A2A1
DAP Spr.‘98 ©UCB 17
Example: Step 3P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10Shar. A1 10 RdDa P2 A1 10 10
P2: Write 20 to A1 10P2: Write 40 to A2 10
10
Assumes initial cache state is invalid and A1 and A2 map to same cache block,But
Remote Write
or MissWrite Back
Remote Write or Miss
Invalid Shared
Exclusive
CPU Read hit
Read miss on bus
Write miss on bus CPU Write
Place Write Miss on Bus
CPU read hitCPU write hit
Remote Read Write Back
A1
A2A1
DAP Spr.‘98 ©UCB 18
Example: Step 4P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10Shar. A1 10 RdDa P2 A1 10 10
P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10P2: Write 40 to A2 10
10
Assumes initial cache state is invalid and A1 and A2 map to same cache block,but
Remote Write
or MissWrite Back
Remote Write or Miss
Invalid Shared
Exclusive
CPU Read hit
Read miss on bus
Write miss on bus CPU Write
Place Write Miss on Bus
CPU read hitCPU write hit
Remote Read Write Back
A1
A2A1
DAP Spr.‘98 ©UCB 19
Remote Write
or MissWrite Back
Remote Write or Miss
Invalid Shared
Exclusive
CPU Read hit
Read miss on bus
Write miss on bus CPU Write
Place Write Miss on Bus
CPU read hitCPU write hit
Remote Read Write Back
Example: Step 5P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10Shar. A1 10 RdDa P2 A1 10 10
P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10P2: Write 40 to A2 WrMs P2 A2 10
Excl. A2 40 WrBk P2 A1 20 20
A1
A1
Assumes initial cache state is invalid and A1 and A2 map to same cache block,but A2A1
DAP Spr.‘98 ©UCB 22
No protocolo baseado em diretórioo 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.Remote cache refere-se a todos os caches, exceto local cache.
DAP Spr.‘98 ©UCB 23
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.
Mensagens originadas do local cache para o home directory.
DAP Spr.‘98 ©UCB 24
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.
Outras mensagens
DAP Spr.‘98 ©UCB 25
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 26
CPU -Cache State Machine• State machine
for CPU requestsfor each memory block
• Invalid stateif in memory
Fetch/Invalidateor Miss due to
address conflict:send Data Write Back message
to home directory
Invalidateor Miss due to
address conflict:Invalid
Shared(read/only)
Exclusive(read/write)
CPU Read
CPU Read hit
Send Read Missmessage
CPU Write: Send Write Miss msg to h.d.
CPU Write:Send Write Miss messageto home directory
CPU read hitCPU write hit
Fetch: send Data Write Back message to home directory
DAP Spr.‘98 ©UCB 27
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 28
Directory State Machine• State machine
for Directory requests for each memory block
• Uncached stateif in memory
Data Write Back:Sharers = {}
(Write back block)
UncachedShared
(read only)
Exclusive(read/write)
Read miss:Sharers = {P}send Data Value Reply
Write Miss: send Invalidate to Sharers;then Sharers = {P};send Data Value Reply msg
Write Miss:Sharers = {P}; send Data Value Replymsg
Read miss:Sharers += {P}; send Fetch;send Data Value Replymsg to remote cache(Write back block)
Read miss: Sharers += {P};send Data Value Reply
Write Miss:Sharers = {P}; send Fetch/Invalidate;send Data Value Replymsg to remote cache
DAP Spr.‘98 ©UCB 29
Example
P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value
P1: Write 10 to A1
P1: Read A1P2: Read A1
P2: Write 40 to A2
P2: Write 20 to A1
A1 and A2 map to the same cache block
Processor 1 Processor 2 Interconnect MemoryDirectory
DAP Spr.‘98 ©UCB 30
Example
P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value
P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0
P1: Read A1P2: Read A1
P2: Write 40 to A2
P2: Write 20 to A1
A1 and A2 map to the same cache block
Processor 1 Processor 2 Interconnect MemoryDirectory
DAP Spr.‘98 ©UCB 31
Example
P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value
P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0
P1: Read A1 Excl. A1 10P2: Read A1
P2: Write 40 to A2
P2: Write 20 to A1
A1 and A2 map to the same cache block
Processor 1 Processor 2 Interconnect MemoryDirectory
DAP Spr.‘98 ©UCB 32
Example
P2: Write 20 to A1
A1 and A2 map to the same cache block
P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value
P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0
P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 Ftch P1 A1 10 10Shar. A1 10 DaRp P2 A1 10 A1 Shar.{P1,P2} 10
1010
P2: Write 40 to A2 10
Processor 1 Processor 2 Interconnect MemoryDirectory
A1
Write BackWrite Back
DAP Spr.‘98 ©UCB 33
Example
P2: Write 20 to A1
A1 and A2 map to the same cache block
P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value
P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0
P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 Ftch P1 A1 10 10Shar. A1 10 DaRp P2 A1 10 A1 Shar.{P1,P2} 10Excl. A1 20 WrMs P2 A1 10
Inv. Inval. P1 A1 A1 Excl. {P2} 10P2: Write 40 to A2 10
Processor 1 Processor 2 Interconnect MemoryDirectory
A1
DAP Spr.‘98 ©UCB 34
Example
P2: Write 20 to A1
A1 and A2 map to the same cache block
P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value
P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0
P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 Ftch P1 A1 10 10Shar. A1 10 DaRp P2 A1 10 A1 Shar.{P1,P2} 10Excl. A1 20 WrMs P2 A1 10
Inv. Inval. P1 A1 A1 Excl. {P2} 10P2: Write 40 to A2 WrMs P2 A2 A2 Excl. {P2} 0
WrBk P2 A1 20 A1 Unca. {} 20Excl. A2 40 DaRp P2 A2 0 A2 Excl. {P2} 0
Processor 1 Processor 2 Interconnect MemoryDirectory
A1