Coerência de Cache Márcia A. Santos – RA Novembro/2005
Agenda Objetivo Visão geral do problema Como manter a coerência Exemplos
Objetivo Apresentar o problema da coerência de cache e os diferentes esquemas utilizados para resolvê-lo.
Visão Geral do Problema sistema com um processador design mais simples os dados mantidos na cache são acessados por um único processador somente uma cópia desse dado existirá na cache. sistema com vários processadores usam várias caches, uma para cada processador múltiplas cópias dos mesmos dados em caches diferentes
armazenado 5 em X na memória Mem. Compartilhada X : 5 P1 Cache X: P2 Cache X: Mem. Compartilhada X : 5 P1 Cache X: 5 P2 Cache X: 5 leitura X. Valor é copiado para as caches Mem. Compartilhada X : ? P1 Cache X: 6 P2 Cache X: 7 P1 faz X+1 e P2 faz X+2 Visão Geral do Problema Qual Valor Estará em X?
Como Manter a Coerência Através de esquemas baseados em software ou em hardware. Software: compilador (estática) ou o sistema operacional (dinâmica) fica responsável por garantir a coerência. Hardware: as inconsistências são identificadas pelo hardware durante a execução (dinâmica).
Como Manter a Coerência Software x Hardware Software Mais barato Menos complexo Não exige hardware adicional Hardware Mais caro Mais complexo Exige hardware adicional Atende melhor a sistemas com mais multiprocessadores Utilizado, principalmente, em multiprocessadores comerciais.
Exemplos Sofware – One Time Identifier Cada página compartilhada possui um identificador único associado à página, chamado one-time identifier. Um campo de identificador é adicionado para cada linha da cache e para cada entrada da TLB (registrador de identificadores). A cada atualização da TLB um novo valor de identificador é colocado no campo de identificador Compara o valor do identificador one-time da entrada de identificadores da TLB com o valor do identificador da entrada da cache no registro. Valores iguais, tem-se um hit. Caso contrário, tem-se um miss. Registros são invalidados quando processador sai da região crítica que protege os dados compartilhados e são copiados novamente quando outro processador acessa os dados compartilhados
Exemplos Hardware – Snoopy Write-invalidate - Synapse Write-invalidate permite apenas um escritor e vários leitores invalidação de todas as cópias do dado antes que a escrita se inicie Synapse faz uso de três estados: Invalid, Valid e Dirty Qualquer cache que possua uma cópia em estado Dirty é a “dona” do bloco. Caso contrário, memória principal Read Hit: não há problemas de coerência Read Miss: o bloco é copiado para a cache e a CPU muda o estado da linha na cache para Valid. Write Hit: o barramento notifica todos os processadores que a linha é Invalid. A linha na cache é marcada como Dirty e todos os outros processadores marcam suas linhas correspondentes como Invalid. Write Miss: idêntico ao caso anterior
Para os mais curiosos… …outros protocolos: