Wednesday, February 15, 2006

Você sabe o que é um cache?[REPOST]

Cache é uma memória extremamente rápida que armazena dados e instruções que o processador utiliza, permitindo um acesso mais rápido as mesmas. O cache passou a ser utilizado quando os processadores efetivamente se tornaram mais rápidos do que a memória RAM(o que aconteceu a partir do 386). Geralmente, quanto maior a quantidade, ou quanto maior a velocidade, maior será a eficiência do cache. O cache é dividido em níveis(L1,L2,L3), operando na mesma frequência do processador.(Obs.:no início de seu uso, o cache L2 fazia parte da placa mãe, ficando limitado obviamente a frequência da mesma-á época, entre 66 e 100MHz-o que o tornava muito mais lento do que o L1, que funcionava na frequência do processador). O cache L3 usado nos micros atuais também faz parte do processador(como o Pentium 4 Xeon da Intel), mas quando começou a ser implantado(no k6-3) era parte da placa-mãe, logo bem lento.

Quando o processador não encontra o dado que necessita no cache(cache hit), haverá um cache miss, pois como o dado não está disponível para ele,ele terá que acessar a memória RAM para encontrá-lo. Nos processadores atuais, a chance de sucesso(cache hit) na obtenção do dado é muito grande(quase 99% de êxito). Em alguns processadores, o cache é exclusivo, ou seja, os dados disponíveis nos caches L1 e L2 são diferentes (como o Athlon da AMD), enquanto em outros é inclusivo(como no Pentium 3)em que o cache L1 contém uma cópia do cache L2. Isso é uma vantagem da AMD pois mais dados poderão ser armazenados.

Mas como ele trabalha em si?É fácil:Imagine uma farmácia.Você,que é o cliente, fará o papel do processador solicitando dados ao cache, chegando na bela atendente parecida com a Daniela Cicarelli(que farmácia é essa?Quando???onde???huhauah...) para solicitar dados (ops!produtos!)... continuando, ao se dirigir a atendente,você solicita um remédio. A nossa opulenta atendente, que é muito esperta, tem no balcão em que está localizada, os 10 produtos que mais são solicitados (como aspirina, camisinha, pastilhas valda...),atendendo a maioria dos pedidos muito rápido,só com um levantar de mãos do balcão. Esse balcão a qual está localizada,é o nosso cache L1, mais perto do núcleo do processador, portando entregando produtos(os nossos "dados"),mais rápido. Infelizmente,o produto que você precisa(um antiácido para aliviar a azia do hamburguer "verde" comido no podrão da esquina), não está nesse balcão,sendo necessário a nossa bela atendente ir até uma segunda bancada maior, com uns 100 produtos que saem muito. Essa segunda bancada, é o nosso cache L2.Como você é muito azarado, ela vai ter que ir até uma terceira e distante estante(que é o nosso cache L3!) com 1000 remédios, para pegar esse maldito antiácido. Repare que ela vai demorando um tempo maior a medida em que vai descendo de nível(procurando) os produtos no "cache". A essa demora em buscar o "dado", chamamos de latência (geralmente medida em ciclos de processador), sendo obviamente maior no cache mais distante do nosso núcleo (a nossa estante representando o cache L3). Como você é muuuito azarado, ela teve que ir além, tendo que ir ao depósito de todos os remédios(que nesse caso,representa a nossa RAM, onde o programa inicialmente carrega os dados). Lamentavelmente ela demorou demais a trazer o remédio e você "vazou" da farmácia após ter vomitado no balcão...(que papelão hein???)

O cache se tornou indispensável nos processadores,sendo usados inclusive em um dos maiores gargalos da computação atual que é o disco rígido(por ser um dispositivo muito mais lento do que a RAM ou o processador). Ele evita que a cabeça de leitura do disco tenha que passar várias vezes na mesma trilha,pois ela lê os setores próximos(mesmo não sendo solicitados). Quando o sistema solicitar o próximo setor, este já estará carregado em cache e será acessado em tempo recorde. Já existem hds com até 16MB de cache.

Para saber mais:
http://www.guiadohardware.net/livros/dicionario/c/index.php
http://computer.howstuffworks.com/cache1.htm

>>>originalmente postado em JUL de 2004.

1 comment:

Anonymous said...

ler todo o blog, muito bom