Se você está começando a aprender como CPUs multi-core, cache, coerência de cache e memória funcionam, pode parecer um pouco pouco confuso no começo. Com isso em mente, a postagem de perguntas e respostas do SuperUser de hoje responde à pergunta de um curioso leitor.
A sessão de Perguntas e Respostas vem para nós, cortesia da SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade. > A Questão
Se eu tiver uma CPU com dois núcleos e cada núcleo tiver seu próprio cache L1, é possível que Core1 e Core2 ambos armazenam em cache a mesma parte da memória ao mesmo tempo? Se for possível, qual será o valor da memória principal se tanto o Core1 quanto o Core2 tiverem editado seus valores no cache?
Quando o cache de uma CPU é liberado de volta para a memória principal?
Os contribuidores do Answer
Se eu tiver uma CPU com dois núcleos e cada núcleo tiver seu próprio cache L1, será possível que Core1 e Core2 armazenem a mesma parte da memória ao mesmo tempo?
Sim, o desempenho seria terrível se não fosse esse o caso. Considere dois segmentos executando o mesmo código. Você quer esse código em ambos os caches L1.
Se for possível, qual será o valor da memória principal se tanto o Core1 quanto o Core2 tiverem editado seus valores no cache?
O valor antigo estará na memória principal, que Não importa, pois nenhum dos núcleos irá lê-lo. Antes de ejetar um valor modificado do cache, ele deve ser gravado na memória. Normalmente, alguma variante do protocolo MESI é usada. Na implementação tradicional do MESI, se um valor for modificado em um cache, ele não poderá estar presente em nenhum outro cache no mesmo nível.
Seguido pela resposta de sleske:
Sim, com dois caches de cache a mesma região de memória pode acontecer e é realmente um problema que ocorre muito na prática. Existem várias soluções, por exemplo:
Os dois caches podem se comunicar para garantir que não discordem
- Você pode ter algum tipo de supervisor que monitora todos os caches e os atualiza de acordo
- Cada processador monitora as áreas de memória que foi armazenado em cache, e quando ele detecta uma gravação, ele lança seu cache (agora inválido)
- O problema é chamado de coerência de cache e o artigo da Wikipedia sobre o tópico tem uma boa visão geral do problema e possíveis soluções. > E nossa resposta final de Kimberly W:
Para responder a pergunta no título do seu post, depende do protocolo de cache. Se for write-back, o cache só será liberado de volta para a memória principal quando o controlador de cache não tiver escolha a não ser colocar um novo bloco de cache no espaço já ocupado. O bloco que ocupava anteriormente o espaço é removido e seu valor é gravado de volta na memória principal.
O outro protocolo é write-through. Nesse caso, sempre que o bloco de cache for gravado no nível
n
, o bloco correspondente no nível n + 1 será atualizado. É semelhante em conceito ao preenchimento de um formulário com papel carbono por baixo; tudo o que você escreve no topo é copiado na folha abaixo. Isso é mais lento porque obviamente envolve mais operações de escrita, mas os valores entre os caches são mais consistentes. No esquema write-back, somente o cache de nível mais alto teria o valor mais atualizado para um determinado bloco de memória. Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui Crédito de imagem: Lemsipmatt (Flickr)
Como limpar seu menu de contexto do Windows desarrumado
Se você já se viu clicando com o botão direito do mouse em alguma coisa e imaginando de onde veio todo esse lixo, você não está sozinho. Quer se livrar do lixo que você não usa e adicionar alguns itens realmente úteis ao menu de contexto? Você pode. O Windows inclui várias opções nesse menu de contexto por padrão, e essa lista aumenta à medida que você instala mais aplicativos.
O que é o Microsoft Azure, de qualquer forma?
Se você seguiu as notícias da Microsoft, há uma boa chance de você ter ouvido falar do Microsoft Azure, anteriormente conhecido como Windows Azure. Esse serviço de computação em nuvem é uma grande parte dos negócios da Microsoft e concorre com serviços semelhantes da Amazon e do Google. RELACIONADO: Como o colapso e as falhas de espectro afetam o meu PC?