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 mecanismos disponíveis em sistemas multiprocessados –Não é um problema novo
Modelo Genérico Processador 1 Cache Memória Processador 2 Cache Processador 3 Cache Processador 4 Cache
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
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]
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
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
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
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
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
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
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]
Outros Modelos MESI MOSI MOESI
Escalabilidade Quandos processadores? E para muitos processadores? –Mecanismo de dicionário