Unidade C - Sistema de Memória

Introdução

Conforme visto na semana anterior, o computador é composto por um sistema de memória, formado por diferentes tipos de memória, exercendo papéis específicos no funcionamento do computador. Uma delas é a memória RAM, também conhecida como principal que, como o nome diz, executa uma importante função de armazenar dados a serem executados pelo processador.

 

C.5 Memória RAM

É uma memória de acesso aleatório (Random Access Memory) que permite o acesso direto a qualquer um de seus endereços, sem a necessidade de percorrer outros endereços para chegar até ele, possibilitando maior agilidade. Seu chip é formado por um grande número de células idênticas, organizadas na forma de linhas e colunas.

Quando um dado precisa ser carregado, primeiramente ele é lido do disco rígido, ou de alguma outra mídia de armazenamento permanente, e transferido para a memória RAM, para então poder ser executado futuramente pelo processador.

A memória RAM oferece tempos de acesso mais baixos que o disco rígido, assim como taxas de transferência mais altas. Porém, ela é uma memória de armazenamento volátil, possuindo a desvantagem de perder os dados armazenados quando a alimentação elétrica é suspensa, existindo a necessidade de salvar os arquivos periodicamente em uma mídia de armazenamento permanente.

 

O chip de memória serve para armazenar dados, não realizando nenhum tipo de processamento. Serve apenas como armazenamento de dados, para tanto, existe o controlador de memória.

 

Componentes do acesso à memória

No acesso a informações armazenadas na memória RAM, alguns elementos desempenham papéis específicos:

Módulo de memória RAM

O chip de memória RAM mais utilizado é o DRAM (Dynamic RAM), onde cada bit é formado pelo conjunto de um transistor e um capacitor.

 

O transistor controla a passagem da corrente elétrica, enquanto o capacitor a armazena por um curto período;

 

Quando o capacitor (dois blocos de metal ligados ao transistor) contém um pulso elétrico, temos um bit 1 e quando ele está descarregado temos um bit 0.

Os capacitores conservam o pulso elétrico por apenas uma fração de segundo. Isso acaba gerando um problema que é a perda de dados armazenados nele, imagine que um programa é carregado na memória e logo em seguida é descarregado dela. Para evitar que ocorra essa situação, a placa-mãe possui um circuito de refresh, que é responsável por regravar o conteúdo da memória várias vezes por segundo (cerca de 64 milissegundos).

 

O processo de refresh faz com que aumente o consumo de energia, que também é transformada em calor, e também torna o acesso à memória mais lento, pois o refresh acaba por ocupar ciclos de clock em seu processo.

 

A solução encontrada para contornar o problema da DRAM foi a de substituir pelo chip de memória SRAM (Static RAM). Ela é formada por cerca de 4 ou 6 transistores, sendo que dois deles controlam a leitura e gravação de dados e os demais formam a célula que armazena o impulso elétrico (cada par forma um inversor, sendo que existem geralmente dois deles). Por esse motivo, ela se torna mais rápida, pois não precisam de refresh, resultando em menor consumo de energia, que acabam sendo mais caras de ser produzidas. Podemos encontrá-la na memória cache.

Podemos destacar, também, alguns outros elementos que compõem o módulo de memória RAM:

Atualmente, os módulos de DRAM também são conhecidos como SDRAM (Synchronous DRAM). Ele permite que as memórias sejam sincronizadas com o processador, permitindo ao controlador de memória saber exatamente em que ciclo de clock a informação estará disponível para o processador.

Funcionamento da memória RAM

O controlador de memória é o elemento através do qual o processador acessa a memória principal. Sua função é a de coordenar o processo de leitura e gravação de dados na memória, controlando todo o trânsito de dados entre a memória e os demais componentes.

Os módulos de memória estão divididos em linhas e colunas e para acessar um determinado endereço (seja para gravar ou ler dados) o controlador de memória gera a seguinte sequência:

A memória está organizada da seguinte maneira exposta:

A memória RAM é organizada em diversas unidades de armazenamento chamadas de célula, cada uma ocupando um endereço de memória. A célula é a menor unidade da memória, composta por um número fixo de bits (geralmente 8 bits) e identificada por um endereço único e fixo. Existe um barramento comum, que é compartilhado por todos os endereços do módulo para o envio e o recebimento de informações.

 

Conforme abordado anteriormente, a palavra é a unidade utilizada para representar a transferência de dados entre o processador e memória, representando a quantidade de informação que pode ser processada, armazenada ou transferida em uma única operação.

 

O procedimento de leitura de informações na memória passa, portanto, pelo controlador de memória que envia pares de endereços RAS e CAS em sequências e recebe de volta uma quantidade de informações conforme a largura do barramento de dados (ex: 64 bits). Mesmo que sejam necessários apenas alguns bytes a serem lidos, todo o bloco de bits adjacente é enviando. Por exemplo, se a quantidade de dados solicitada for de 42 bits e a largura do barramento for de 64 bits, serão entregues 64 bits, sendo os 42 bits pedidos mais  a quantidade de bits que complete a largura do barramento.

A memória RAM é conectada ao controlador de memória através de três barramentos distintos:

Nessa relação, o processador é muito mais rápido do que a memória RAM. Dessa forma, são necessárias técnicas de compensação, justamente para tentar minimizar a diferença de desempenho existente entre ambas, de onde podemos destacar:

Aumento de canais: possível em chipsets e processadores com controladores de memória dual-channel. Ele consiste em "agrupar" dois módulos de memória distintos como se fossem um só, de onde o controlador de memória é capaz de acessar dois endereços diferentes (cada um em um dos módulos de memória) a cada ciclo de clock. Isso possibilita a transferência do dobro de dados por ciclo, já que cada módulo possui seu próprio conjunto de barramentos (dados, endereço, controle) e faz com que o processador precise esperar menos tempo, conforme figura abaixo

Técnicas de Memória RAM

Assim como as técnicas descritas anteriormente, existem outras formas utilizadas visando reduzir a diferença de desempenho entre CPU e RAM como é o caso do DDR.

As memórias DDR são memórias do tipo SDRAM que implementam o duplo fluxo de dados (Double Data Rate), transmitindo duas vezes por ciclo de clock. Ela permite que sejam realizadas duas operações por vez, com cada um dos comandos enviados para um endereço diferente, porém na mesma linha. Ao contrário de como funcionava anteriormente nas memórias SDR (Single Data Rate), onde era realizada uma transferência por ciclo, conforme figura C11.

As duas operações realizadas nas memórias DDR são enviadas através do barramento de dados na forma de duas transferências separadas, uma realizada no início e a outra no final do ciclo de clock, conforme figura C12.

Dessa forma, como ela é capaz de realizar duas operações por ciclo, essa memória funciona como se operasse com o dobro de seu clock real. Por exemplo, um módulo DDR trabalha a 133 MHz de clock real, mas como são feitas duas transferências por ciclo, o desempenho equivale ao que pode ser obtido por um módulo de 266 MHz, portanto, ela é denominada de DDR266. Esse módulo também é conhecido como PC2100, que indica que a taxa de transferência máxima da memória é de 2100 MB/s.

A taxa de transferência máxima teórica da memória é dobrada com o uso desta tecnologia. Para encontrá-la utilizamos a fórmula

TTMT = Clock DDR x quantidade de bits transferidos por pulso de clock / 8

A memória acima é dita PC2100, pois multiplicando seu clock DDR (266 MHz) pela quantidade de bits que podem ser transferidos por ciclo de clock (64 bits) e dividido por 8 encontramos o valor aproximado a 2100 MB/s (2128 MB/s na realidade).

Com estas características, as memórias DDR seguem a classificação:

DDRccc / PCtttt

Onde temos a seguinte representação:

De acordo com essa classificação, encontramos os seguintes módulos de memórias DDR:

Na evolução das memórias DDR surgem as DDR2, que trabalham sob o mesmo princípio, porém duplicam a taxa de transferência, realizando quatro operações por ciclo de clock, mas mantendo as mesmas frequências de operação.

Podemos encontrar os seguintes módulos DDR2 (repare no clock real deles em relação às DDR):

As memórias DDR2 seguem o mesmo princípio das DDR, sendo rotuladas com o dobro do seu clock real. Assim, uma memória DDR2-800 opera com um clock real de 200 MHz, mas como realizam 4 operações por ciclo de clock são classificadas como fossem de 800 MHz. Ainda são classificadas como PC2-6400, devido a sua transferência máxima teórica ser de 6.400 MB/s.

 

Se forem utilizados dois canais (dual channel), esse módulo DDR2-800 terá sua taxa de transferência máxima teórica dobrada, de 6.400 MB/s passando para 12.800 MB/s (800 MHz x 128 / 8), já que é transferido o dobro da quantidade de dados, com o barramento trabalhando como se fosse de 128 bits ao invés de 64 bits, a cada pulso de clock.

 

Atualmente existem as memórias DDR3, que operam com a frequência dos módulos DDR2 duplicada, realizando 8 transferências por ciclo de clock. Esse aumento de frequência é obtido através do aumento na capacidade de acesso simultâneo a endereços que estejam adjacentes e não através do aumento da frequência real.

Nesse caso, em um módulo DDR3-1066, as células de memória operam a 133 MHz de clock real, com os buffers de dados operando a 266 MHz (o dobro do real) e realizando 4 transferências por ciclo (8 vezes o real), resultando em uma frequência efetiva de 1066 MHz.

As memórias DDR3 possuem os seguintes módulos (note o clock real delas em relação às DDR e DDR2):

Temporizações de Memória

Além da velocidade, outro fator que igualmente é importante no desempenho da memória são as suas temporizações. Devido a elas, dois módulos de memória que apresentem a mesma taxa de transferência máxima teórica podem apresentar desempenhos diferentes.

As temporizações indicam o tempo em que o módulo de memória RAM leva para realizar internamente uma operação. Como, por exemplo, existe o parâmetro CL, CAS Latency (Latência do CAS), que indica a quantidade de pulsos de clock que o módulo de memória demora em retornar um dado solicitado pelo processador. Um módulo de memória com valor de CL igual a 4 levará quatro pulsos de clock para entregar um dado, enquanto que um módulo com CL igual a 3 levará três pulsos de clock para entregar o mesmo dado.

As temporizações de um módulo de memória são demonstradas através de uma série de números, os quais indicam a quantidade de pulsos de clock que a memória demora para realizar determinadas operações, conforme:

CL – tRCD – tRP – tRAS - CMD

 

Vale lembrar que, conforme visto anteriormente, a memória é organizada internamente em forma de uma matriz, com os dados sendo armazenados na interseção de linhas e colunas, sendo necessário percorrê-las para acessá-lo.

 

Sendo assim, cada sigla representa uma temporalização de uma determinada operação a ser realizada pela memória, como segue:

Dessa forma, podemos encontrar módulos de memória apresentando temporizações como 2 – 3 – 2 – 6 – T1 ou 5 – 5 – 5 – 15 dentre outras, sendo que cada valor indicado representa a mesma ordem, da esquerda para a direita: CL - tRCD - tRP - tRAS - CMD.