Cache e registradores

Sistema de Memória RAM

A velocidade do sistema de memória RAM é controlada pela largura do barramento (bus) e pela velocidade de barramento. A largura de barramento se refere ao número de bits que podem ser enviados à CPU simultaneamente, e a velocidade de barramento se refere ao número de vezes que um grupo de bits pode ser enviado a cada segundo. Um ciclo de barramento ocorre toda vez que dados trafegam da memória para a CPU.

Por exemplo, um barramento de 100 Mhz e 32 bits é teoricamente capaz de enviar 4 bytes (32 bits divididos por 8 = 4 bytes) de dados para a CPU, 100 milhões de vezes por segundo, enquanto um barramento de 66Mhz e 16 bits pode enviar 2 bytes de dados, 66 milhões de vezes por segundo. Se você fizer as contas, descobrirá que simplesmente mudando a largura de barramento de 16 bits para 32 bits e a velocidade de 66 MHz para 100 MHz, por exemplo, permitirá que três vezes mais dados (400 milhões de bytes contra 132 milhões de bytes) passem através da CPU a cada segundo.

Na realidade, a memória RAM raramente opera em velocidade otimizada. A latência muda a equação radicalmente. Ela se refere ao número preciso de ciclos de clock necessários para ler um bit de informação. Como exemplo, a RAM com taxa de 100 MHz é capaz de enviar um bit em 0,00000001 segundos, mas pode levar 0,00000005 segundos para começar o processo de leitura do primeiro bit. Para compensar a latência, a CPU usa uma técnica especial chamada modo burst.

O modo burst depende da expectativa de que os dados requisitados pela CPU serão armazenados em células seqüenciais de memória. O controlador de memória antecipa que qualquer trabalho que a CPU esteja realizando continue a vir da mesma série de endereços de memória, de modo que ela leia vários bits de dados consecutivos em conjunto. Isso significa que somente o primeiro bit está sujeito ao efeito total da latência; ler bits sucessivos leva significativamente menos tempo. A taxa do modo burst da memória é normalmente expresso como quatro números separados por traços. O primeiro número informa o número de ciclos de clock necessários para começar a operação de leitura; o segundo, o terceiro e o quarto mostram quantos ciclos são necessários para ler cada bit consecutivo em uma linha, também conhecida como wordline. Por exemplo: 5-1-1-1 dizem a você que leva 5 ciclos para ler o primeiro bit e um ciclo para cada bit depois dele. Obviamente, quanto menores estes números, melhor é a performance da memória.

O modo burst é freqüentemente usado com o pipelining, outro meio de minimizar os efeitos da latência. O pipelining organiza a recuperação dos dados em um tipo de processo de linha de montagem. O controlador de memória lê, simultaneamente, uma ou mais palavras da memória, envia a palavra ou as palavras atuais para a CPU e grava uma ou mais palavras nas células de memória. Usados em conjunto, o modo burst e o pipelining podem reduzir drasticamente o atraso causado pela latência.

Então, por que você não compraria a memória maior e mais rápida possível? A velocidade e o tamanho do barramento de memória devem ser compatíveis com o barramento do sistema. Você pode usar a memória designada para trabalhar a 100 MHz em um sistema de 66-MHz, mas ela vai funcionar a uma velocidade de barramento de apenas 66-MHz, não trazendo, portanto, nenhuma vantagem. Além disso, uma memória de 32 bits não caberia em um barramento de 16 bits.

Mesmo com um barramento grande e rápido, os dados demoram mais para irem da placa de memória à CPU do que a CPU pode processar os dados. É nesse contexto que surge a idéia da memória cache.

Memória cache e registradores

As memórias cache são designadss para aliviar esse gargalo, fazendo com que os dados usados com mais freqüência pela CPU estejam instantaneamente disponíveis. Isso é conseguido através da construção de uma pequena quantidade de memória, conhecida como memória primária ou cache nível 1 (L1), localizada dentro da CPU. O cache nível 1 é muito pequeno, normalmente variando entre 2 kilobytes (KB) e 64 KB.


O cache secundário, ou de nível 2 (L2), geralmente fica em uma placa de memória perto da CPU. Esse cache tem uma conexão direta com a CPU. Um circuito integrado dedicado na placa mãe, o controlador L2, regula o uso do cache de nível 2 pela CPU. O tamanho desse cache varia de 256 KB a 2 megabytes (MB), dependendo da CPU. Na maioria dos sistemas, os dados necessários à CPU são acessados do cache em aproximadamente 95% do tempo, reduzindo em muito a espera da  CPU pelos dados da memória principal.

Alguns sistemas mais acessíveis em termos de preço, em geral dispensam o cache nível 2. Muitas CPUs de alta performance têm agora esse cache embutido dentro do próprio chip da CPU. Assim, seu tamanho e o fato de serem onboard (na CPU), são fatores determinante na performance da máquina. Para mais detalhes sobre caching, veja Como funciona o armazenamento em cache (caching).

Um tipo particular de RAM, a memória estática de acesso aleatório (SRAM), é usada principalmente para implementar a memória cache. A SRAM usa transistores múltiplos, normalmente de quatro a seis, para cada célula (bit) de memória. Ela possui uma matriz externa de portas, conhecida como multivibrador bi-estável (flip-flop) que chaveia entre dois estados. Isso significa que ela não tem que ficar sendo refrescada continuamente como a DRAM. Cada célula mantém seus dados, enquanto estiver energizada. Sem precisar ficar sendo constantemente refrescada, a SRAM pode operar com extrema rapidez. Porém, a complexidade de cada célula faz com que seja proibitivo o seu uso como um padrão de memória RAM.

A SRAM utilizada na memória cache pode ser assincrônica ou sincrônica. A SRAM sincrônica é projetada para ter velocidade igual a velocidade da CPU, enquanto a assincrônica não. Esse ínfimo lapso de tempo faz toda a diferença na performance. Igualar a velocidade do clock da CPU é interessante, então sempre procure por RAM sincrônica (para maiores informações sobre os vários tipos de memória RAM, veja Como funciona a memória RAM).

O passo final em memória são os registradores. Eles são células de memória embutidas na CPU, que contêm dados específicos para seu uso, especialmente a unidade de aritmética e lógica (ULA). Parte integrante da própria CPU, ela é controlada diretamente pelo compilador, que envia as informações a serem processados na CPU. Veja Como funcionam os microprocessadores para saber detalhes sobre os registradores.

A memória pode ser dividida em duas categorias principais: volátil e não-volátil. A memória volátil perde os dados cada vez que o sistema é desligado e precisa de energia para ser acessada. A maioria dos tipos de memória RAM incluem-se nesta categoria.


Módulos de memória RAM
De cima para baixo: SIMM, DIMM e SODIMM

A memória não-volátil não perde seus dados quando o sistema ou o dispositivo é desligado. Essa categoria abrange inúmeros tipos de memória. A mais familiar é a ROM, mas dispositivos de armazenamento do tipo memória flash, como os cartões CompactFlash e SmartMedia, são também formas de memória não-volátil. Veja os links abaixo para mais informações sobre este tipo de memória.


Módulo de memória ROM

Para ter um prático manual sobre memória de computador, você pode imprimir a Grande lista de termos de memória de computadores (em inglês).

Para mais informações sobre memória de computadores e tópicos relacionados, confira os links da próxima página.