Ir ao conteúdo
  • Cadastre-se

Como o Cache de Memória Funciona


     392.041 visualizações    Processadores    10 comentários
Como o Cache de Memória Funciona

RAM Dinâmica vs. RAM Estática

Existem dois tipos de memória RAM: dinâmica (DRAM) e estática (SRAM). A memória RAM usada no micro é dinâmica. Neste tipo de memória cada bit de dados é armazenado dentro do chip de memória em um pequeno capacitor. Capacitores são componentes muito pequenos, o que significa que milhões deles podem ser fabricados em uma pequena área – isto é chamado de “alta densidade”. Por outro lado, os capacitores perdem suas cargas elétricas depois de um determinado tempo e por isso as memórias dinâmicas precisam ser recarregadas, processo esse conhecido como refresh, que deve ser feito periodicamente. Durante os períodos de recarga os dados não podem ser lidos os escritos. A memória dinâmica também é muito mais barata do que a memória estática e consome muito menos. Mas, como vimos, os dados na memória RAM dinâmica não estão disponíveis imediatamente e ela não trabalha na mesma velocidade do processador.

A memória estática, por outro lado, pode trabalhar na mesma velocidade do processador, porque cada bit de dado é armazenado em um circuito chamado flip-flop, que também pode fornecer dados com latência zero ou com uma latência muito pequena, porque os flip-flops não necessitam de períodos de refresh. O problema é que os flip-flops necessitam de vários transistores para serem construídos, ou seja, eles são muito maiores do que um único capacitor. Isto significa que na mesma área onde em uma memória estática existe apenas um flip-flop, na memória dinâmica existem centenas de capacitores. Por essa razão as memórias estáticas oferecem uma menor densidade – isto é, os chips têm capacidades menores. Os outros dois problemas com a memória estática são que ela é mais cara e consome mais energia – e consequentemente esquenta mais.

Na tabela abaixo nós resumimos as principais diferenças entre a RAM dinâmica (DRAM) e a RAM estática (SRAM).

Característica

RAM Dinâmica (DRAM)

RAM Estática (SRAM)

Circuito de armazenamento

Capacitor

Flip-flop

Taxa de transferência

Menor do que a do processador

A mesma do processador

Latência

Alta

Baixa

Densidade

Alta

Baixa

Consumo de energia

Baixo

Alto

Custo

Baixo

Alto

Apesar de a RAM estática ser mais rápida do que a RAM dinâmica, suas desvantagens impedem que elas sejam usadas como memória RAM principal da máquina.

A solução encontrada para diminuir o impacto de se usar uma memória RAM mais lenta do que o processador foi usar uma pequena quantidade de memória estática entre o processador e a memória RAM. Esta técnica é chamada cache de memória, e atualmente esta pequena quantidade de memória está localizada dentro do processador.

O cache de memória copia os dados acessados recentemente da memória RAM para a memória estática e tenta adivinhar qual dado o processador poderá precisar, carregando-o para a memória estática antes que o processador precise dele. O objetivo é fazer com que o processador acesse o cache de memória em vez de acessar a memória RAM diretamente, já que ele pega dados do cache de memória imediatamente ou com uma latência muito pequena, enquanto que ele tem que esperar quando acessa dados localizados na memória RAM. Quanto mais o processador acessar o cache de memória em vez da memória RAM, mais rápido o micro será. Nós explicaremos exatamente como o cache de memória funciona mais adiante.

A propósito, aqui estamos usando os termos “dados” e “instruções” como sinônimos, já que o que está armazenado em cada endereço de memória não faz qualquer diferença para a memória.


Artigos similares


Comentários de usuários

Respostas recomendadas

Fiquei um pouco confuso: Eu aprendi que no cache mapeado diretamente a memória principal era dividida em conjuntos de blocos sendo que cada conjunto de blocos era mapeado em um único bloco da memória cache. Se eu estiver errado me corrijam.

Link para o comentário
Compartilhar em outros sites

Muito legal o artigo! Gostaria de dar uma sugestão para que ficasse ainda mais completo.

Achei que seria muito interessante acrescentar um review mostrando a diferença de desempenho de processadores similares (mesma arquitetura e mesmo clock), mas com diferentes quantidades de memória cache, em diferentes aplicativos.

Isso nos daria uma real dimensão do quanto a memória cache influencia no desempenho.

Fica a sugestão.

Link para o comentário
Compartilhar em outros sites

O artigo é excelente! Mas fiquei com uma dúvida: Há alguma diferença no circuito dos flip-flops da memória cache L1 para L2 e L3 ou todos os níveis utilizam o mesmo esquema eletrico, mudando apenas a quantidade de flip-flops(quantidade de memória) e a latência?

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Gabriel Torres, obrigado por responder! Já que estamos falando sobre memórias cache eu tenho mais uma dúvida: uma vez estava a utilizar o CPU-Z, e no canto da tela, onde é exibido os níveis de cache e a quantidade de memória estava escrito:

Cache

L1 Data    16 KBytes      8 Way

Trace        12 Kuops       8 Way

Level 2     2048 KBytes  8 Way

  O processador era um Intel Pentium 4 630. O que seria esta linha "Trace / 12 Kuops / 8 Way? Eu não vi em nem um outro processador este negócio...

Link para o comentário
Compartilhar em outros sites

Uau. Completíssimo, muito obrigado! Vim procurar uma informação básica, e acabei por receber uma aula completa. Tenho uma pergunta, mas, talvez, ela não faça sentido, porque comecei a pouco no universo da tecnologia. Aqui vai:
Sempre percebo que, quando o jogo exige muito da memória RAM, de início, o jogo trava um pouco (no quesito fluidez, não no quesito de qualidade gráfica), então, pensei: "será que tem a ver com a questão do burst da memória? Ao iniciar, a memória sofre aquela queda na taxa de transferência (de, por exemplo, 5 clocks para passar o dado, 5-1-1-1), então, trava, porém, na sequência de 1-1-1, o jogo normaliza devido à frequência de 1 dado por clock. Faz sentido?

Link para o comentário
Compartilhar em outros sites

  • Administrador

@João Beneditti Não tem nada a ver, por que na maior parte das vezes os dados estão vindo do cache de memória e não diretamente da RAM. Além disso, cada pulso de clock em uma memória de, digamos, 3.200 MHz, é de 1/3.200.000.000 ou seja 0,3125 ns. Cinco pulsos seriam 1,5625 ns. A diferença de tempo entre um e outro é imperceptível para um ser humano.

 

Abraços.

Link para o comentário
Compartilhar em outros sites



Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...