O que é memória CACHE?
Autor: Rubens Rodrigues | Publicado: 2011-09-21T10:46:00-07:00

Se você estiver pensando em comprar um computador, então já ouviu a palavra "cache". Computadores modernos têm caches L1 e L2, e muitos também têm cache L3.    Acontece  que o armazenamento em cache é um processo importante da ciênc­ia da  computação que está presente em todo computador de várias formas. Há  caches de memória, caches de disco por hardware e por software, cache de  páginas e outros.       A memória virtual é uma forma de armazenamento em cache (do inglês caching). Neste  artigo, investigaremos o armazenamento em cache para que você possa  entender por que ele é tão importante.O armazenamento em cache (caching) é uma tecnologia baseada em um subsistema de memória do computador.  O principal objetivo de um cache é acelerar o computador ao mesmo tempo  em que mantém seu preço baixo. O armazenamento em cache permite que  realizemos tarefas no computador com maior rapidez.   Para entender a  idéia básica por trás de um sistema de cache, vejamos um exemplo super  simples que usa um bibliotecário para demonstrar os conceitos de  armazenamento em cache. Vamos imaginar o bibliotecário atrás do balcão.  Sua função é nos entregar os livros que solicitamos. Para simplificar,  digamos que não podemos pegar os livros sozinhos - temos que pedir ao  bibliotecário qualquer livro que desejamos ler; ele então o busca nas  estantes. Vamos começar com um bibliotecário sem cache.   Chega o primeiro cliente. Ele pede o livro Moby Dick.  O bibliotecário vai até as estantes, pega o livro, volta ao balcão e o  entrega ao cliente. Depois, o cliente volta e devolve o livro. O  bibliotecário pega o livro e o devolve à estante. Depois, ele volta ao  balcão e espera o próximo cliente. Digamos que o próximo cliente  também pede o Moby Dick. Então, o bibliotecário volta à estante  para pegar o livro recentemente manipulado e o entrega ao cliente. Com  esse modelo, o bibliotecário tem que realizar um ciclo completo de ida e  volta às estantes para buscar cada livro - até mesmo os mais  conhecidos, solicitados freqüentemente. Existe um modo de melhorar o  desempenho do bibliotecário?   Sim - podemos colocar um cache nele.Vamos dar ao bibliotecário uma mochila em que ele possa guardar 10  livros (comparado ao computador, é como se ele tivesse agora um cache de  10 livros). Nessa mochila, ele colocará os livros que os clientes  devolvem, até o número máximo de 10. Usemos o exemplo anterior, mas  agora nosso novo e aprimorado bibliotecário conta com armazenamento em  cache.   Começa o dia. A mochila do bibliotecário está vazia. O primeiro cliente chega e pede o Moby Dick. Então  o bibliotecário tem que ir às estantes buscar o livro para entregar ao  cliente. Posteriormente, o cliente retorna e devolve o livro. Em vez de  voltar às estantes e colocar o livro no lugar certo, o  bibliotecário coloca o livro na mochila e aguarda (primeiro, ele  verifica se a mochila está cheia - falaremos mais sobre isso depois).  Outro cliente chega e pede o Moby Dick. Antes de ir às estantes, o  bibliotecário verifica se o livro está na mochila. E está! Tudo que ele  tem a fazer é tirá-lo da mochila e entregá-lo ao cliente. Não é preciso  ir às estantes, por isso o cliente é atendido com mais eficiência.   E  se o cliente pedisse um livro que não estivesse no cache (na mochila)?  Nesse caso, o bibliotecário é menos eficiente com do que sem um cache,  porque primeiro ele perde tempo procurando o livro na mochila. Um dos  desafios do projeto do cache é minimizar o impacto de buscas nele  próprio, e os hardwares modernos reduziram esse intervalo de tempo a  praticamente zero. Mesmo em nosso simples exemplo do bibliotecário, o  tempo de latência (tempo de espera) para procurar no cache é tão pequeno  se comparado ao tempo de ir às estantes que ele se torna irrelevante. O  cache é pequeno (10 livros), e o tempo que ele demora para perceber um  dado inexistente é apenas uma minúscula fração do tempo que a caminhada  às estantes levaria.   A partir desse exemplo, podemos ver alguns fatos importantes sobre o armazenamento em cache:   a tecnologia de cache é o uso de uma memória mais rápida, porém menor, para acelerar uma mais lenta, porém maior;   ao usarmos um cache, precisamos verificá-lo para ver se um determinado item está lá. Em caso afirmativo, essa ação é denominada acerto de cache (cache hit). Em caso negativo, denomina-se erro de cache (cache miss)e o computador precisa esperar o tempo de ida e volta à memória maior e mais lenta;   um cache tem um tamanho máximo que é muito menor do que a área maior de armazenamento;   é  possível ter múltiplas camadas de cache. Em nosso exemplo do  bibliotecário, a memória menor, porém mais rápida é a mochila, e as  estantes representam a memória maior, porém mais lenta. Esse é um cache  de apenas um nível. Pode haver outra camada de cache composta de uma  prateleira capaz de acomodar 100 livros atrás do balcão. O bibliotecário  pode verificar a mochila, depois a prateleira e, por fim, as estantes.  Isso seria um cache de dois níveis.      Caches de computador       O computador é uma máquina em que medimos o tempo em intervalos muito pequenos. Quando o microprocessador tem acesso à memória principal (RAM),  ele o faz em cerca de 60 nanosegundos (60 bilionésimos de um segundo).  Isso é muito rápido, mas muito lento para um microprocessador comum. Os  microprocessadores podem ter tempos de ciclo de acesso à memória tão  pequenos quanto 2 nanosegundos. Assim, para um microprocessador, 60  nanosegundos parece uma eternidade.   E se construirmos um banco de  memória especial na placa-mãe, pequeno mas muito veloz (em torno de 30  nanosegundos)? Isso já seria duas vezes mais rápido do que o acesso à  memória principal. Vamos chamar esse banco de cache de nível 2 ou cache L2.  E se construirmos um sistema de memória ainda menor, porém mais rápido,  diretamente no chip do microprocessador? Assim, o acesso a essa memória  será feito à velocidade do microprocessador e não à velocidade do  barramento de memória. Isso seria um cache L1, que em  um Pentium Dual Core é 8 vezes mais rápido do que o cache L2, que por  sua vez é quatro vezes mais rápido do que o acesso à memória principal.   Alguns  microprocessadores têm dois níveis de cache embutidos no chip. Nesse  caso, o cache da placa-mãe - o cache que existe entre o microprocessador  e o sistema de memória passa a ser de nível 3, ou cache L3.   Há  muitos subsistemas em um computador; podemos colocar cache entre muitos  deles para melhorar o desempenho. Eis um exemplo: temos o microprocessador  (o componente mais rápido do computador). Depois, há o cache L1, que  armazena em cache, o cache L2, que por sua vez armazena em cache, a  memória principal, que pode ser usada (e o é com freqüência) como um  cache para periféricos ainda mais lentos, por exemplo, como discos rígidos e CD-roms. Além disso, os discos rígidos são usados para o armazenamento em cache de um meio ainda mais lento - a conexão à Internet.