Acontece que o armazenamento em cache é um processo importante da ciência 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.
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.
Muito legal, ficou bem explicado... bj
ResponderExcluir