Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
25/11/1996

< Memórias XIV: >
< Escondendo Dados >


Quando discutimos os estados de espera, dissemos que uma das formas de tentar evitá-los era o uso do cache de memória. Pois hoje vamos ver o que vem a ser isto.

O substantivo "cache", em inglês, significa "esconderijo, lugar onde se pode esconder algo" (atenção lingüistas de plantão: o vocábulo é de origem francesa, mas já existia no idioma inglês mesmo antes de ser transformado em termo técnico de informática; em caso de dúvida, favor consultar um dicionário decente, como o Webster). E, de uma certa forma, o cache é isto mesmo: um esconderijo de dados, uma certa quantidade de memória muito rápida interposta entre a CPU e a lenta memória RAM onde se copiam parte dos dados armazenados na memória RAM. Todo o processo é transparente, ou seja, invisível para o usuário e para os programas, que nem percebem que as cópias dos dados ficam lá escondidas. Mais adiante, quando a CPU precisar ler um destes dados, um circuito especial, chamado controlador do cache (cache controller) verifica se já não há no cache uma cópia do dado a ser lido. Se houver, fornece imediatamente o valor à CPU. Como os chips usados no cache são do tipo estático (SRAM), que permitem um acesso muito mais rápido, isto pode ser feito muito mais depressa que se o dado tivesse que ser lido na memória RAM, que usa chips de memória tipo dinâmico (DRAM), de acesso mais lento. O acesso ao cache, portanto, pode ser feito sem estados de espera. A CPU, o programa e o usuário não precisam tomar conhecimento de onde veio o dado, se da memória RAM ou do cache. Tudo o que percebem é que a leitura (ou escrita, como veremos adiante) foi feita muito mais rapidamente.

Em princípio, cache é isso aí. Mas há tamanhos e tipos de cache diferentes, assim como distintas formas de controlá-los. E como o uso do cache exerce uma enorme influência no desempenho da máquina, vamos discutir o assunto com um nível de detalhamento um pouco maior. Incidentalmente: se duvida da importância do cache, entre no setup de seu micro, desabilite os caches interno e externo e rode alguns programas para sentir a diferença. E já que não custa nada, no próximo boot entre no setup e verifique se ambos os caches estão habilitados. Se não estiverem, habilite-os. A diferença será tamanha que você vai pensar que fez um upgrade de máquina a custo zero.

Um dos fatores mais importantes que influenciam a melhoria do desempenho da máquina com o uso do cache é, evidentemente, seu tamanho. Teoricamente, o tamanho mínimo é um byte, o que seria absurdo, já que garantidamente o próximo dado a ser lido não estaria no cache. Já o tamanho máximo seria igual á capacidade da memória RAM, o que seria igualmente absurdo, pois se cache e memória RAM fossem do mesmo tamanho não haveria necessidade de memória RAM, pois todos os dados estariam no cache. Na prática o tamanho do cache usado nos micros pessoais varia desde 1K (o cache interno de alguns processadores da Cyrix) até 1Mb ou mais, dependendo do fabricante da placa-mãe. O tamanho ideal é obtido através de um compromisso entre desempenho e custo, já que as memórias SRAM usadas no cache são muito mais caras que as memórias DRAM usadas na memória principal. Mas acontece que, por razões ligadas à forma como são feitos os acessos à memória, ocorre um fenômeno curioso. Digamos que em sua placa mãe estejam instalados 32K de cache externo, o que eu considero o mínimo aceitável (calma, que mais adiante veremos a diferença entre cache interno e externo). E digamos que você tenha usado uma grana extra e dobrado o tamanho do cache para 64K. Ao comparar o desempenho nas duas situações, vai perceber uma notável melhoria. Agora, suponhamos que você tenha dobrado novamente seu cache para 128K. Curiosamente, vai perceber que a coisa melhorou, mas não tanto. E se dobrar novamente para 256K, vai perceber que a melhoria foi ainda menor. Ou seja: quanto maior for o cache, menor será o ganho ao se aumentar sua capacidade. Um fato mais que comprovado estatisticamente.

Então, qual o tamanho ideal? Bem, depende da capacidade instalada de memória RAM e da grana disponível. Mas em geral eu diria que para máquinas com até 16Mb de memória RAM, um cache de 256K é perfeitamente aceitável. Com 32Mb de RAM, 512K de cache bastam. Aumentar além disso traz alguma melhoria, é claro. Mas uma melhoria que dificilmente compensa o custo do investimento.

PS: Não sou muito de sugerir visitas à internet, mas vou abrir uma exceção: dêem uma olhada na coluna do John Dvorak de 11/11/96 intitulada "A visit to Brazil", disponível na PC Magazine On Line (http://www.pcmag.com/dvorak/jdindex.htm). Vale a pena. Vocês vão encontrar um interessantíssimo relato sobre o SUCESU'96 de Natal feito por um dos maiores colunistas de informática da atualidade, surpreendentemente bem informado sobre o Brasil. Onde, entre outras coisas, ele descobre uma interessante justificativa para o interesse dos jovens brasileiros pelo IRC e classifica o Salustiano, presidente da SUCESU RN e candidato á presidência da SUCESU nacional, como "one of the most formidable show promoters I've ever met".

 

B. Piropo