Skip to main content

O que é coerência de cache?

A coerência do cache é o problema natural que se desenvolve quando o conjunto de dados de um sistema é acessado e alterado por vários agentes. A principal área da arquitetura de computadores em que isso se torna um problema está nos computadores com multiprocessadores. Cada processador em um computador com multiprocessador possui seu próprio cache que carrega e armazena informações da memória de acesso aleatório (RAM). Quando dois processadores estão acessando a mesma área de memória, a coerência do cache será perdida se determinadas precauções não forem tomadas.

Sem coerência de cache, um sistema multiprocessador seria incapaz de funcionar. Existem vários métodos que foram desenvolvidos para solucionar esse problema e evitar possíveis problemas. Coerência com base em diretório, espionagem e snarfing são três métodos usados ​​para evitar a perda de coerência de cache.

A coerência baseada em diretório funciona como um filtro para garantir a coerência. Os dados são colocados em uma parte da memória acessível a todos os processadores. Quando as informações armazenadas nessa área de memória são alteradas, o sistema atualiza os caches ou os invalida.

A espionagem requer que o processador monitore todos os acessos aos locais de memória que foram armazenados em cache. Isso permite que o processador saiba quando ocorreu uma operação de gravação. Ao saber quando ocorre uma operação de gravação, o processador pode atualizar seu cache.

Snarfing é bastante semelhante a bisbilhotar. O snarfing envolve não apenas monitorar os acessos aos locais de memória que foram armazenados em cache, mas também monitorar as informações reais armazenadas na memória. Quando ocorre uma gravação na memória, o cache pode ser atualizado com as novas informações.

Os sistemas de coerência baseados em diretório têm uma latência relativamente alta, resultando em um processamento mais lento. Os requisitos de largura de banda mais baixa permitem que os sistemas de coerência baseados em diretório sejam práticos em aplicativos de larga escala de coerência de cache. Quanto mais processadores um sistema usar, mais vantagens ele terá ao usar um sistema de coerência baseado em diretório.

Bisbilhotar é um método muito mais rápido. Este método requer mais largura de banda do que a abordagem baseada em diretório. Este método pode ser usado efetivamente em sistemas que possuem relativamente poucos processadores.

O snarfing geralmente não é usado como um método para manter a coerência do cache. Isso ocorre principalmente porque o snarfing requer que mais recursos sejam usados ​​em comparação com os métodos de espionagem e de diretório. Para que um sistema snarfing funcione, ele deve acompanhar os endereços de memória e os dados armazenados nessas áreas da memória. A quantidade de largura de banda e processamento utilizados por esse método torna indesejável para a maioria dos aplicativos de manutenção da coerência do cache.