De qual memória os processadores realmente lêem os dados?

-1

De acordo com o meu próprio entendimento, para que os dados sejam processados pela CPU, eles devem ser colocados em RAM , nesse meio tempo, as próprias CPUs têm memória cache , que também é usada para acessar dados. É um fato bem conhecido que o cache da CPU está "mais próximo" do processador e mais rápido do que qualquer outro tipo de memória. Mas é um pouco incerto para mim, se é obrigatório que os dados no cache da CPU sejam processados? Em caso afirmativo, como o cache pode manter uma grande quantidade de dados? (o tamanho do cache tende a ser pequeno, comparado com a RAM, até alguns mb, mais freqüentemente menos que 1) Se não, como uma CPU decide qual parte dos dados deve ser mantida em seu cache?

Eu também estou um pouco confuso com o swap. As CPUs podem tratá-lo como parte da RAM e endereçar os dados mantidos diretamente do HDD?

    
por Aleksandr Medvedev 01.09.2017 / 18:52

1 resposta

3

O cache na CPU não armazena os dados, apenas acelera o acesso.

A explicação mais básica do cache é que quando a CPU vai ler um byte específico da RAM, esses dados são copiados para o cache também. Na próxima vez em que a CPU precisar ler esse byte, o controlador de memória vê que está no cache e, em vez de fazer a chamada lenta para a RAM, ele apenas entrega à CPU os dados do cache.

Existem dois problemas específicos com esta explicação:

  1. O cache é um tamanho finito. Por causa disso, quando dados são adicionados, você eventualmente precisa se livrar de (ou 'soltar') dados antigos para dar espaço para isso. Existem várias maneiras de fazer isso, e a metodologia exata não importa exatamente para essa discussão, mas o que importa é que depois de um tempo, os dados podem não estar mais no cache, e então você precisa sair para a memória principal de qualquer maneira.

  2. Quando os dados são gravados, você também precisa atualizar ou remover os dados do cache que foi armazenado anteriormente nesse endereço. Existem três maneiras principais de lidar com isso:

    • Writeback: Usando o método de write-back, os dados são gravados primeiro no cache e depois, eventualmente, gravados na memória principal. Isso tem várias vantagens para o desempenho, mas pode causar problemas em algumas circunstâncias.
    • Escrita: Usando o método writethrough, os dados são gravados simultaneamente no cache e na memória principal. Este é um desempenho inferior ao write-back, mas é mais seguro.
    • Write-around: Usando o método write-around, os dados são gravados diretamente na memória principal e, em seguida, os dados que estavam no mesmo local são removidos do cache. Isso raramente é usado, exceto em casos de uso muito específicos.

Portanto, para responder à sua pergunta sobre RAM versus o cache da CPU, tecnicamente, ambos, mas os dados, em última instância, vêm da RAM em quase todos os casos. Se você estiver interessado em aprender mais sobre isso especificamente, sugiro ler os seguintes dois artigos da Wikipédia:

link

Agora, quanto à questão do espaço de troca, esse é um conceito completamente diferente que está ligado à memória virtual e à paginação. Tentar explicar isso aqui resultaria em mim escrevendo a maior parte de alguns artigos da Wkipedia, então vou apenas te apontar diretamente nos artigos em questão:

link

link

    
por 01.09.2017 / 19:43