Estudante
Um sistema multiprocessado com caches particulares permite a existência de várias cópias de um mesmo dado em diferentes caches. Quando realizamos uma operação de escrita no endereçoo desse dado, apenas será alterado do dado da cache particular do processador que executa a instrução. Logo, teremos diferentes dados armazenados nas caches e, portanto, ao carregarmos o dado através de diferentes processados, obtermos resultados diferentes. Assim, ter uma cache coerente é garantir que qualquer processador sempre receba o dados mais atual contido em qualquer cache para um mesmo endereço. Em um sistema monoprocessado pode ocorrer incoerência de cache quando a DMA altera algum dado na memória principal, podendo torná-lo incoerente com o valor do dado que estava contido na cache.
Inúmeras soluções já foram criadas para resolver o problema da coerência de cache. Essas soluções podem ser dividas entre soluções de software e soluções de hardware. Apesar do nome, mesmo as soluções de software exigem algum suporte especial do hardware, sendo na verdade soluções híbridas.
As soluções em Hardware são bem eficientes e reduzem o tráfego na rede, porém a medida em que se aumenta a quantidade de processadores, a complexidade exigida aumenta muito o custo de implementação. Logo, soluções baseadas em softwares são mais convenientes para grandes siste- mas multiprocessadores por serem mais baratos, mas soluções em Hardware ainda são mais eficientes.
Soluções Baseadas em Software
Soluções baseadas em softwares são mais baratas, porém podem exigir um esforçoo extra do sistema operacional, do compilador ou do programador. Elas são dividas em soluções estáticas ou dinâmicas. As soluções estáticas resultam de ações realizadas durante a criação do programa, normalmente pelo compilador. As soluções dinâmicas são soluções feitas em tempo de execução, por isso são baseadas em ações do sistema operacional.