Memória Cache vs Memória Virtual
A diferença entre memória cache e memória virtual está na finalidade para a qual essas duas são usadas e na existência física. A memória cache é um tipo de memória usada para melhorar o tempo de acesso à memória principal. Ele reside entre a CPU e a memória principal, e pode haver vários níveis de caches, como L1, L2 e L3. O tipo de hardware usado para memória cache é muito mais caro do que a RAM (Random Access Memory) usada para memória principal porque a memória cache é muito mais rápida. Por esta razão, a capacidade da memória cache é muito pequena. A memória virtual é uma técnica de gerenciamento de memória usada para usar com eficiência a RAM (memória principal) enquanto fornece um espaço de memória separado para cada programa que é ainda maior do que a capacidade física real da RAM (memória principal). Aqui o disco rígido é usado para expandir a memória. Os itens na RAM física são transferidos para frente e para trás com o disco rígido.
O que é Memória Cache?
Memória cache é um tipo de memória que fica entre a CPU (Unidade Central de Processamento) e a RAM (memória de acesso aleatório). O objetivo da memória cache é reduzir o tempo de acesso à memória da CPU a partir da RAM. A memória cache é muito mais rápida que a RAM. Portanto, o tempo de acesso no cache é muito menor que o tempo de acesso na RAM. Mas o custo da memória usada para memória cache é muito maior do que o custo da memória usada para RAM e, portanto, a capacidade da memória cache é muito pequena. O tipo de memória usado para memória cache é chamado de SRAM (Static Random Access Memory).
Sempre que a CPU quiser acessar a memória, ela primeiro verifica se o que precisa reside na memória cache. Se sim, seria capaz de acessá-lo com a menor latência. Se não residir no cache, o conteúdo solicitado será copiado da RAM para o cache e somente a CPU o acessará do cache. Aqui, ao copiar o conteúdo do cache, não apenas o conteúdo no endereço de memória solicitado, mas também o conteúdo próximo é copiado para o cache. Portanto, na próxima vez, há uma alta probabilidade de ocorrer um acerto no cache, pois a maioria dos programas de computador acessa dados próximos ou dados acessados pela última vez na maioria das vezes. Portanto, devido ao cache, a latência média da memória é reduzida.
Na CPU, existem três tipos de caches: Cache de instruções para armazenar instruções do programa, Cache de dados para armazenar itens de dados e o Translation Look-aside Buffer para armazenar mapeamentos de memória. Para cache de dados, geralmente, existem caches de vários níveis. Ou seja, existem vários caches como L1, L2 e L3. O cache L1 é a memória cache mais rápida, porém menor, mais próxima da CPU. O cache L2 é mais lento que L1, mas maior que L1 e reside após o cache L1. Devido a essa hierarquia, um tempo médio de acesso à memória melhor pode ser alcançado a um custo menor.
O que é Memória Virtual?
Memória virtual é uma técnica de gerenciamento de memória usada em sistemas de computadores. Não existe um hardware chamado memória virtual, mas é um conceito que usa a RAM e o disco rígido para fornecer um espaço de endereçamento virtual para os programas. A primeira RAM é dividida em pedaços chamados páginas e são identificados por endereços de memória física. No disco rígido, uma parte especial é reservada onde, no Linux, é chamada de swap e, no Windows, é chamada de arquivo de paginação. Quando um programa é iniciado, ele recebe um espaço de endereço virtual que pode ser ainda maior que a memória física real. O espaço de memória virtual também é dividido em blocos chamados páginas e cada uma dessas páginas de memória virtual pode ser mapeada para uma página física. A tabela chamada tabela de páginas acompanha esse mapeamento. Quando a memória física fica sem espaço, o que é feito é que certas páginas físicas são enviadas para aquela parte especial do disco rígido. Quando qualquer página enviada para o disco rígido é necessária novamente, ela é trazida para a memória física colocando outra página selecionada da memória física para o disco rígido.
Qual é a diferença entre Memória Cache e Memória Virtual?
• A memória cache é um tipo de memória usada para melhorar o tempo de acesso à memória principal. É um tipo de memória mais rápido que reside entre a CPU e a RAM para reduzir a latência média de acesso à memória. A memória virtual é um método de gerenciamento de memória onde é um conceito que permite que os programas obtenham seu próprio espaço de memória virtual, que é ainda maior do que a RAM física real disponível.
• A memória cache é um tipo de memória de hardware que realmente existe fisicamente. Por outro lado, não há hardware chamado memória virtual, pois é um conceito que usa RAM, disco rígido, unidade de gerenciamento de memória e software para fornecer um tipo virtual de memória.
• O gerenciamento da memória cache é feito totalmente por hardware. A memória virtual é gerenciada pelo sistema operacional (software).
• A memória cache fica entre a RAM e o processador. As transferências de dados envolvem RAM, memória cache e o processador. A memória virtual, por outro lado, envolve a transferência de dados entre a RAM e o disco rígido.
• As memórias cache têm tamanhos pequenos, como Kilobytes e Megabytes. A memória virtual, por outro lado, envolve tamanhos enormes que ocupam gigabytes.
• A memória virtual envolve estruturas de dados como tabelas de páginas que armazenam o mapeamento entre a memória física e a memória virtual. Mas este tipo de estrutura de dados não é necessário para a memória cache.
Resumo:
Memória Cache vs Memória Virtual
A memória cache é usada para melhorar o tempo de acesso à memória principal, enquanto a memória virtual é um método de gerenciamento de memória. A memória cache é um hardware real, mas não há hardware chamado memória virtual. RAM, disco rígido e vários outros hardwares, juntamente com o sistema operacional, produzem o conceito chamado memória virtual para fornecer espaços de memória virtual grandes e isolados para cada programa. O conteúdo da memória cache é gerenciado pelo hardware enquanto o conteúdo da memória virtual é gerenciado pelo sistema operacional.