sexta-feira, 13 de abril de 2007

Uma breve noção sobre Memórias

As perguntas deixadas no post de ontem (sobre cache de memória) poderiam ser respondidas como um simples comentário, mas eu acho que vale a pena explorar um pouco mais o assunto, até para dirimir eventuais dúvidas de outros visitantes.
No jargão da informática, o termo "memória" remete a qualquer meio destinado ao armazenamento de dados, embora, por convenção, sempre que usamos genericamente esse termo estamos nos referindo à memória RAM (memória física ou principal do computador).
Os PCs utilizam vários tipos de memória (ROM, cache, HD, pen-drives etc.), mas é na RAM que os programas são carregados e as informações, processadas (desde o próprio sistema operacional até um simples documento de texto). Nenhum computador atual, de um grande mainframe a uma simples calculadora de bolso, é capaz de funcionar sem uma quantidade mínima de memória RAM.
Como uma das características (ou desvantagens, no caso) da memória RAM é a volatilidade, todos os dados nela armazenados se perdem sempre que o aparelho é desligado, razão pela qual é preciso dispor de outros sistemas de memória, como é o caso do HD, onde os dados são gravados de maneira persistente ; é no HD que ficam residentes o SO e os demais programas e arquivos que você utiliza e manipula quando usa seu computador (ou seria preciso reprogramar tudo a partir do zero cada vez que o PC fosse ligado).
Já a memória cache é um expediente adotado pelos projetistas de hardware para agilizar o desempenho do processador (ela também também tem outras funções e é utilizada por outros dispositivos, mas aí já é uma outra história). As memórias não conseguiram acompanhar a brutal evolução experimentada pelas CPUs (desde os tempos dos velhos 386 que a RAM já não é capaz de acompanhar a velocidade da CPU), de modo que os fabricantes passaram a embutir uma pequena quantidade de RAM ultraveloz (primeiro nas placas-mãe, depois nos núcleos dos próprios processadores) para armazenar os usados mais frequentemente pelo processador, evitando que ele tivesse de recorrer à (bem mais lenta) memória do sistema.
É por isso - ou, melhor dizendo, esse é um dos motivos - que dois processadores com quantidades diferentes de cache podem apresentar desempenhos distintos, ainda que operem na mesma velocidade (um exemplo clássico eram os chips Pentium e Celeron de idêntica frequência de operação, onde a performance do primeiro ganhava longe a do segundo).
Para completar, vale mencionar que o conceito da "memória virtual" remete a um recurso desenvolvido incialmente pela Intel (e utilizado até hoje) para evitar as aborrecidas mensagens de "memória insuficiente" que surgiam quando a RAM se esgotava - situação na qual o usuário era forçado a encerrar alguns programas para liberar espaço e continuar trabalhando com os demais).
A memória virtual nada mais é que um arquivo de troca (swap file) criado no disco rígido, para onde o processador remete "pedaços" de programas carregados na RAM que não estejam sendo usados em determinados momentos, liberando espaço necessário para que um novo aplicativo requisitado pelo usuário seja carregado e processado (quando o programa despachado para o disco torna a ser necessário, dá-se a operação inversa). Como nada é perfeito, o desempenho cai barbaramente quando a memória virtual é utilizada, porque o acesso aos dados no HD é milhares de vezes mais lento que na memória RAM.
Abraços a todos e um bom final de semana.