A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Coerência de Cache – Parte 2 MO801/MC972. Visão Geral Caches são essenciais Como garantir que os dados presentes na cache estão coerentes? O que é coerência?

Cópias: 1
Coerência de Cache MO801/MC972. Visão Geral Caches são essenciais Como garantir que os dados presentes na cache estão coerentes? O que é coerência? Mesmos.

Apresentações semelhantes


Apresentação em tema: "Coerência de Cache – Parte 2 MO801/MC972. Visão Geral Caches são essenciais Como garantir que os dados presentes na cache estão coerentes? O que é coerência?"— Transcrição da apresentação:

1 Coerência de Cache – Parte 2 MO801/MC972

2 Visão Geral Caches são essenciais Como garantir que os dados presentes na cache estão coerentes? O que é coerência? Mesmos mecanismos disponíveis em sistemas multiprocessados –Não é um problema novo

3 Modelo Genérico Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache

4 MSI Modified –O dado foi modificado na cache e está inconsistente com a memória. O bloco da cache é responsável por atualizar a memória Shared –O bloco não foi modificado e existe em pelo menos uma cache. A cache pode removê-lo sem ter que escrever na memória Invalid –O bloco está inválido e deve ser buscado na memória ou em outra cache para ser acessado

5 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000]

6 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000] - Modified

7 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000] – Shared

8 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000]M[1000] - ModifiedM[1000] – Invalid

9 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000]M[1000] – Shared

10 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000] - InvalidM[1000] - ModifiedM[1000] - Invalid

11 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000] - Shared

12 Exemplo – MSI Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P1 escreve M[1000] P3 lê M[1000] P4 escreve M[1000] P2 lê M[1000] M[1000]

13 Escalabilidade Quandos processadores? E para muitos processadores? –Mecanismo de dicionário

14 MSI Modified –O dado foi modificado na cache e está inconsistente com a memória. O bloco da cache é responsável por atualizar a memória Shared –O bloco não foi modificado e existe em pelo menos uma cache. A cache pode removê-lo sem ter que escrever na memória Invalid –O bloco está inválido e deve ser buscado na memória ou em outra cache para ser acessado

15 MSI

16 MOSI Modified –O dado foi modificado na cache e está inconsistente com a memória. O bloco da cache é responsável por atualizar a memória Owned –A cache possui o dado e deve servi-lo para outras caches Shared –O bloco não foi modificado e existe em pelo menos uma cache. A cache pode removê-lo sem ter que escrever na memória Invalid –O bloco está inválido e deve ser buscado na memória ou em outra cache para ser acessado

17 MOSI

18 MESI Modified –O dado está presente apenas na cache atual e foi modificado (dirty). A cache deve escrever o dado na memória em algum momento no futuro antes de permitir que outra leia a memória Exclusive –O dado está presente apenas na cache atual, não foi modificado (clean) e é idêndico ao valor da memória Shared –O dado pode estar presente em mais de uma cache Invalid –O dado na cache não é válido

19 MESI

20 MOESI Modified –Possui a cópia mais recente (correta) do dado. A memória não tem o dado correto. Nenhuma outra cache contém esse dado Owned –Possui uma cópia do dado (como shared) mas somente um processador pode estar em Owned (os outros estão em shared). A memória pode estar errada. Exclusive –Somente essa cache contém a cópia do dado. A memória também tem uma cópia correta. Shared –Contém a cópia mais recente do dado. Outros processadores podem conter essa cópia. A memória está correta. Invalid –A cópia do dado não é válida

21 MOESI

22 Operações de busca e atualização da memória Atomic exchange –Troca de um valor em um registrador com um valor de memória 0 -> sincronismo está livre 1 -> sincronismo está bloqueado e indisponível Test and set –Testa um valor e seta se passar no teste Fetch and increment –Retorna o valor da posição de memória e, atomicamente, o incrementa


Carregar ppt "Coerência de Cache – Parte 2 MO801/MC972. Visão Geral Caches são essenciais Como garantir que os dados presentes na cache estão coerentes? O que é coerência?"

Apresentações semelhantes


Anúncios Google