O que é falso compartilhamento?
O compartilhamento falso é uma situação que pode ocorrer em um programa de computador quando dois aplicativos que estão em execução simultaneamente tentam acessar informações na mesma região de memória lógica que cada programa ou processo armazenou em seu próprio cache. Os dados no cache de cada aplicativo são copiados de uma fonte comum, portanto, a modificação de um cache faz com que o outro precise ser recarregado da fonte. O aspecto falso do compartilhamento surge quando as alterações feitas na linha de cache por um programa não afetam os dados que o segundo programa está usando, nesse caso, forçar o cache a ser recarregado é um desperdício de recursos do sistema e pode afetar negativamente o desempenho do programa. O problema do compartilhamento falso é difícil de detectar, porque não é um resultado direto de qualquer código contido nos aplicativos, embora haja maneiras eficazes de evitar compartilhamento falso, como mover dados que estão em uma linha atualmente em cache para uma linha separada.
Uma das principais razões pelas quais o compartilhamento falso pode ocorrer é encontrado em como um sistema operacional ou lida com hardware lida com dados de leitura e gravação. Quando as informações de um disco rígido ou de outra fonte estão sendo lidas ou gravadas por um programa, geralmente são carregadas em um cache temporário para que possa ser acessado rapidamente. A quantidade de informações que é armazenada em cache do local de origem é chamada de linha de cache e é um bloco lógico de memória que normalmente pode estar entre 2 bytes e 256 bytes de comprimento. Sob alguns sistemas operacionais ou arquiteturas do sistema, os programas podem ser executados ao mesmo tempo, como no processamento paralelo. Isso significa que é possível para dois programas separados tentarem acessar informações na mesma linha de cache; portanto, cada programa terá sua própria cópia dos dados de origem, potencialmente causando alterações em um cache a não se refletir no outro cache, invalidando os dados que ele possui.
Existem vários mecanismos empregados para haNDLE A situação em que dois programas tentam acessar a mesma linha de cache, mas o resultado com mais frequência é que um programa é forçado a recarregar seu cache com as informações atualizadas que o outro programa modificou. Esse tipo de incidente é conhecido como compartilhamento falso quando os dados da linha de cache que cada programa está acessando não estão relacionados; portanto, forçar um programa a recarregar o cache é um desperdício de poder de processamento e outros recursos. Isso geralmente é um problema para um programa que nunca modificará as informações em seu cache; portanto, não há risco de que o aplicativo substitua as alterações que o outro processo fez.
Duas maneiras predominantes existem para prevenir ou mitigar os efeitos do compartilhamento falso. O primeiro é adicionar informações em branco antes ou depois dos dados na memória, forçando -os essencialmente a uma linha de cache separada que não está sendo acessada por outro programa. O segundo método é restringir a frequência de leitura e escrita à linha de cache, para que seja recarregada como little o possível. Soluções mais complexas envolvem gerenciamento no nível do cache ou mesmo mudanças na maneira como um sistema operacional lida com o compartilhamento.