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

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

Coerência de Cache – Parte 2

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"— 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 Processador 2 Cache Processador 3
4 Cache Memória

4 MSI Modified Shared Invalid
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 Processador 2 Cache Processador 3
4 Cache M[1000] P1 lê M[1000] P1 escreve M[1000] P2 lê M[1000] P3 lê M[1000] P4 escreve M[1000] Memória

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

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

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

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

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

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

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

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

14 MSI Modified Shared Invalid
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 Owned Shared Invalid
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 Exclusive Shared Invalid
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 Owned Exclusive Shared Invalid
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"

Apresentações semelhantes


Anúncios Google