Ir ao conteúdo
  • Cadastre-se

Como o Cache de Memória Funciona


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

História do Cache de Memória nos PCs

Esta seção é apenas para aqueles interessados nos aspectos históricos do cache de memória. Se você não se interessa por esse assunto sinta-se à vontade para pular para a próxima página.

O cache de memória foi usado pela primeira vez em PCs na época do 386 DX. Apesar deste processador não ter um cache de memória embutido, seu circuito de apoio – ou seja, o chipset – tinha um controlador de memória cache. Portanto, o cache de memória nessa época era externo ao processador e era opcional, ou seja, o fabricante da placa-mãe poderia ou não incluir o cache de memória em suas placas. Se você tivesse uma placa-mãe sem cache de memória seu micro seria muito mais lento do que um que tivesse esse circuito. A quantidade de memória cache disponível também variava dependendo do modelo da placa-mãe e os valores típicos para essa época eram de 64 KB e 128 KB. Nessa época o controlador de memória cache usava uma arquitetura chamada “write-through” (escrita direta), onde para as operações de escrita – ou seja, quando o processador precisa armazenar dados na memória – o controlador de cache de memória atualizava a memória RAM imediatamente.

Com o processador 486 DX a Intel incluiu uma pequena quantidade (8 KB) de memória cache dentro do processador. Este cache de memória interno foi chamado L1 (nível 1) ou “interno”, enquanto que o cache de memória externo era chamado L2 (nível 2) ou “externo”. A quantidade e a existência do cache de memória externo dependia do modelo da placa-mãe. As quantidades típicas para a época eram de 128 KB e 256 KB. Os últimos modelos do 486 passaram a usar a arquitetura do cache chamada “write back” (contra-escrita), que é usada até os dias atuais, onde para as operações de escrita a memória RAM não é atualizada imediatamente, o processador armazena os dados no cache de memória e o controlador de memória atualiza a memória RAM apenas quando ocorrer um erro do cache (quando o processador precisa de um determinado dado e ele não está no cache de memória e o processador precisa buscá-lo na lenta memória RAM dizemos que houve um erro do cache).

Com o primeiro processador Pentium a Intel criou dois circuitos de memória cache  separados dentro do processador: um para instruções e outro para dados (na época cada um tinha 8 KB). Esta arquitetura ainda é usada até hoje, e por isso que vemos o cache de memória L1 ser referenciado como 64 KB + 64 KB, por exemplo – isto porque existe um cache L1 de 64 KB para instruções e outro cache L1 de 64 KB para dados. Claro que explicaremos mais adiante qual é a diferença entre os dois. Na época o cache de memória L2 continuava localizado na placa-mãe e sua quantidade dependia do modelo da placa-mãe. Claro que ter um micro sem cache de memória era algo insano. Valores típicos para a época eram 256 KB e 512 KB.

No lado da AMD, os processadores K5, K6 e K6-2 usavam esta mesma arquitetura, com o K6-III tendo um terceiro cache de memória (L3, nível 3).

O problema com o cache de memória L2 sendo acessado externamente é que ele era acessado a um clock menor do que o processador, pois a partir do processador 486DX2 os processadores passaram a usar um clock interno diferente do seu clock externo. Por exemplo, enquanto um Pentium-200 funcionava internamente a 200 MHz, ele acessava seu cache de memória L2 a 66 MHz.

Com a introdução da arquitetura P6 da Intel o cache de memória foi movido da placa-mãe para dentro do processador – o que permitiu ao processador acessá-lo com seu clock interno –, exceto no Pentium II, onde o cache de memória não estava localizado dentro do processador, mas na mesma placa de circuito impresso onde o processador estava soldado (esta placa de circuito impresso estava localizada dentro de um cartucho), trabalhando com a metade do clock interno do processador, e no Celeron-266 e Celeron-300, que não tinham cache de memória (e por isso estes são os processadores com o pior desempenho na história dos PCs).

Esta mesma arquitetura é usada até hoje: tanto o cache de memória L1 quanto o cache de memória L2 estão localizados dentro do processador sendo acessados com o clock interno do processador. Dessa forma, quantidade de memória cache que você pode ter em seu micro dependerá do modelo do seu processador; não existe uma maneira de aumentar a quantidade de memória cache sem trocar o processador.


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...