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 alterar a pasta de inicialização do Outlook
Por padrão, quando você inicia o Outlook, a caixa de entrada da primeira conta de email que você adicionou é aberta automaticamente. No entanto, essa pode não ser a pasta de email mais usada. Você pode escolher uma pasta diferente nessa conta ou em uma conta diferente quando o Outlook for aberto. Talvez você tenha criado uma regra para mover o email de uma pessoa ou empresa específica para uma pasta e desejar acessá-la automaticamente ao abrir o Outlook.
Abra instantaneamente um terminal de tela inteira no seu Mac usando um atalho de teclado
Muitos usuários de Mac passam a vida inteira no Terminal, mas a maioria de nós só o abre ocasionalmente. No entanto, usar um mouse para abrir uma interface baseada em texto parece estranho. E se houvesse uma maneira de ter o Terminal sempre pronto, acionado por um único atalho de teclado? Você pode configurá-lo facilmente graças ao iTerm, uma alternativa ao Terminal padrão que é personalizável de várias maneiras.