Diferença entre memória cache e memória virtual

Memória cache versus memória virtual
 

A diferença entre a memória cache e a memória virtual existe no propósito para o qual esses dois são usados ​​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 a memória cache é muito mais caro que a RAM (Memória de Acesso Aleatório) usada para a memória principal, porque a memória cache é muito mais rápida. Por esse motivo, 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 que a capacidade real da RAM (memória principal) física. 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?

A memória cache é uma tipo de memória que fica entre a CPU (Central Processing Unit) 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 a memória cache é muito maior que o custo da memória usada para a RAM e, portanto, a capacidade da memória cache é muito pequena. O tipo de memória usada para a memória cache é chamada SRAM (Static Random Access Memory).

Sempre que a CPU deseja acessar a memória, primeiro verifica se o que precisa está na memória cache. Se sim, seria capaz de acessá-lo com a menor latência. Se ele não residir no cache, o conteúdo solicitado será copiado da RAM para o cache e somente a CPU o acessará a partir do cache. Aqui, ao copiar 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 que houver uma alta probabilidade de ocorrência de um cache, a maioria dos programas de computador acessa dados próximos ou os últimos dados acessados ​​na maioria das vezes. Portanto, devido ao cache, a latência média de 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 os Buffer de Look-side de Tradução 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, é possível obter um melhor tempo médio de acesso à memória a um custo menor.

O que é memória virtual?

A memória virtual é uma técnica de gerenciamento de memória usado em sistemas de computadores. Não há hardware chamado memória virtual, mas é um conceito que usa a RAM e o disco rígido para fornecer um espaço de endereço virtual para os programas. A primeira RAM é dividida em partes chamadas páginas e são identificadas por endereços de memória física. No disco rígido, uma parte especial é reservada onde, no Linux, é chamada de troca e, no Windows, é chamado 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 da memória virtual também é dividido em partes chamadas 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 determinadas páginas físicas são enviadas para essa parte especial do disco rígido. Quando qualquer página enviada ao disco rígido é necessária novamente, ela é trazida para a memória física, colocando outra página selecionada da memória física no disco rígido..

Qual é a diferença entre a memória cache e a memória virtual?

• A memória cache é um tipo de memória usada para melhorar o tempo de acesso à memória principal. É um tipo mais rápido de memória 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 em que é um conceito que permite que os programas obtenham seu próprio espaço de memória virtual, que é ainda maior 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 de memória virtual.

• O gerenciamento de 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 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 de cache têm tamanhos pequenos, como kilobytes e megabytes. A memória virtual, por outro lado, envolve tamanhos enormes que levam 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 esse tipo de estrutura de dados não é necessário para a memória cache.

Resumo:

Memória cache versus 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 existe um 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.

Cortesia de imagens:

  1. Processo de memória cache do Hellisp (CC BY-SA 3.0)
  2. Memória virtual por Ehamberg (CC BY-SA 3.0)