Um exemplo simples: depois do cache

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.