![De qual memória as CPUs realmente leem os dados?](https://rvso.com/image/1540085/De%20qual%20mem%C3%B3ria%20as%20CPUs%20realmente%20leem%20os%20dados%3F.png)
De acordo com meu entendimento, para que os dados sejam processados pela CPU, eles devem ser colocados emBATER, entretanto, as próprias CPUs têmmemória cache, que também é usado para acessar dados. É um fato bem conhecido que o cache da CPU está “mais próximo” da CPU e é mais rápido do que qualquer outro tipo de memória. Mas não está claro para mim se é obrigatório que os dados estejam no cache da CPU para serem processados? Se sim, como o cache pode manter uma grande quantidade de dados? (o tamanho do cache tende a ser pequeno, comparado à RAM, até alguns MB, geralmente menor que 1). Caso contrário, como uma CPU decide qual parte dos dados deve ser mantida em seu cache?
Também fiquei um pouco confuso com a troca. As CPUs podem tratar parte da RAM e endereçar os dados armazenados diretamente no HDD?
Responder1
O cache da CPU não armazena os dados, apenas acelera o acesso.
A explicação mais básica do cache é que quando a CPU lê um byte específico da RAM, esses dados também são copiados para o cache. Na próxima vez que a CPU precisar ler esse byte, o controlador de memória verá que ele está no cache e, em vez de fazer uma chamada lenta para a RAM, apenas entrega à CPU os dados do cache.
Existem dois problemas específicos com esta explicação:
O cache tem um tamanho finito. Por causa disso, quando os dados são adicionados, você eventualmente precisará se livrar (ou 'descartar') dados antigos para abrir espaço para eles. Existem várias maneiras de fazer isso, e a metodologia exata não importa exatamente para esta discussão, mas o que importa é que depois de um tempo, os dados podem não estar mais no cache, e então você tem que sair para a memória principal de qualquer maneira.
Quando os dados são gravados, você também precisa atualizar ou remover os dados do cache que foram armazenados anteriormente nesse endereço. Existem três maneiras principais de lidar com isso:
- Writeback: Usando o método writeback, os dados são primeiro gravados no cache e, em seguida, gravados na memória principal. Isto tem uma série de vantagens para o desempenho, mas pode causar problemas em algumas circunstâncias.
- Writethrough: 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.
Então, para responder à sua pergunta sobre RAM versus cache da CPU, tecnicamente ambos, mas os dados vêm da RAM em quase todos os casos. Se você estiver interessado em aprender mais sobre isso especificamente, sugiro a leitura dos dois artigos da Wikipedia a seguir:
https://en.wikipedia.org/wiki/Cache_(computação)
https://en.wikipedia.org/wiki/CPU_cache
Agora, quanto à questão do espaço de troca, esse é um conceito completamente diferente, vinculado à memória virtual e à paginação. Tentar explicar isso aqui resultaria em eu escrever a maioria de alguns artigos da Wkipedia, então vou apontar você diretamente para os artigos em questão: