terça-feira, 7 de agosto de 2012

MEMÓRIA DDR2

08:01
Seguindo a tendência inaugurada pelas memórias DDR, as DDR2 novamente duplicam a taxa de transferência, realizando agora 4 operações por ciclo. Novamente, as células de memória continuam trabalhando na mesma freqüência anterior e o acesso inicial continua demorando aproximadamente o mesmo tempo. Entretanto, as demais operações dentro do burst passam a ser realizadas em apenas um quarto de ciclo de clock. Usando memórias DDR2, um burst de 8 leituras demoraria apenas 6.75 ciclos de clock (5-¼-¼-¼-¼-¼-¼-¼), contra 8.5 ciclos nas DDR e 12 nas SDR.
A diferença é maior em aplicativos que precisam manipular grandes blocos de dados e menor em aplicativos que lêem pequenos blocos de dados espalhados. Em nenhuma situação prática a transferência chega realmente a dobrar. Dizer que as "DDR2 são duas vezes mais rápidas" é apenas uma figura de linguagem. :)
Em 2005, quando os primeiros módulos DDR2-533 chegaram ao mercado, eles rapidamente ganharam a fama de "lentos", pois eram comparados a módulos DDR-400 ou DDR-466, que já estavam entrincheirados. Embora um módulo DDR2 ganhe de um DDR da mesma freqüência em todos os quesitos (um DDR2-800 contra um DDR-400, por exemplo), o mesmo não acontece se comparamos módulos de freqüências diferentes. Um DDR2-533 opera a apenas 133 MHz, por isso acaba realmente perdendo para um DDR-400 (200 MHz) na maioria das aplicações, pois a ganho de realizar 4 operações por ciclo acaba não sendo suficiente para compensar a diferença na freqüência de operação das células de memória. Vale lembrar que um módulo DDR2-533 trabalha com tempos de latência similares a um módulo DDR-266.
Realizar bursts de leituras rápidas pode não ser a forma mais perfeita de criar memórias mais rápidas (por causa do lento ciclo inicial), mas é sem dúvida a mais simples e barata. A freqüência de operação das memórias aumenta de forma gradual, conforme são melhoradas as técnicas de produção. Realizar mais leituras por ciclo de clock é a única forma simples de melhorar a taxa de transferência dos módulos.
Assim como no caso dos processadores, não é possível criar um processador capaz de operar ao dobro do clock de uma hora para a outra, mas é possível criar um processador dual-core, por exemplo. No caso das memórias é mais simples, pois você pode ler vários endereços simultaneamente (ou quase), fazendo apenas mudanças nos circuitos controladores.
Dependendo da fonte, você pode ler tanto que as memórias DDR2 operam ao dobro da freqüência que as DDR quanto que elas realizam quatro transferências por ciclo em vez de duas. Nenhuma das duas explicações estão erradas, mas ambas são incompletas.
Como disse, as células de memória continuam trabalhando na mesma freqüência das memórias SDR e DDR, mas os buffers de entrada e saída, responsáveis por ler os dados, passaram a operar ao dobro da freqüência. É justamente esta freqüência que é "vista" pelo restante do sistema, de forma que a maioria dos programas de diagnóstico mostra a freqüência dobrada usada pelos circuitos de entrada e não a freqüência real das células de memória.
Devido a esta ambigüidade, não é errado dizer que os módulos DDR2 operam ao dobro da freqüência dos DDR (os buffers e outros circuitos de apoio realmente operam), nem que são realizadas 4 leituras por ciclo (já que as células de memória continuam operando à mesma freqüência).
Ao realizar uma leitura, o controlador de memória gera quatro sinais distintos, que ativam a leitura de quatro endereços adjacentes (4-bit prefetch). As quatro leituras são feitas simultaneamente e os dados são entregues ao buffer, que se encarrega de despachá-los através do barramento principal.
Presumindo que o módulo DDR2 do exemplo operasse a 100 MHz, teríamos as células de memória ainda operando na mesma freqüência, mas agora entregando 4 leituras de setores seqüenciais por ciclo. Os buffers e o barramento de dados operam agora a 200 MHz, de forma que as 4 leituras podem ser enviadas em 2 ciclos, com duas transferências por ciclo. Os dois ciclos do barramento são realizados no mesmo espaço de tempo que apenas um ciclo das células de memória.
As células de memória podem ser grosseiramente comparadas a uma planilha eletrônica, com inúmeras linhas e colunas. Não existe uma grande dificuldade em ler vários endereços diferentes simultaneamente, desde que o fabricante consiga desenvolver os circuitos de controle necessários. Graças a isso, o desenvolvimento das memórias tem sido focado em realizar mais leituras pro ciclo, combinada com aumentos graduais nas freqüências de operação.
Quando as memórias DIMM surgiram, ainda na época do Pentium II, os módulos mais rápidos operavam a 100 MHz (os famosos módulos PC-100). Atualmente temos chips de memória de até 300 MHz que, combinados com as 4 leituras por ciclo, resultam em módulos com transferência teórica de até 9.6 GB/s:
DDR2-533 (133 MHz) = PC2-4200
DDR2-667 (166 MHz) = PC2-5300
DDR2-800 (200 MHz) = PC2-6400
DDR2-933 (233 MHz) = PC2-7500
DDR2-1066 (266 MHz) = PC2-8500
DDR2-1200 (300 MHz) = PC2-9600
O CAS latency dos módulos DDR2 é medido em termos de ciclos do circuito controlador, por isso são normalmente o dobro do que nos módulos DDR. É como em "duas unidades" ou "quatro metades", no final dá no mesmo ;). Um módulo DDR2-800 com CAS latency 4 possui o mesmo tempo de acesso que um DDR-400 com CAS latency 2.
Normalmente, as especificações das memórias DDR2 incluem não apenas o CAS latency (tCL), mas também o RAS to CAS delay (tRCD), Row Precharge Time (tRP) e RAS Activate to Charge (tRAS). Estes mesmos valores podem ser encontrados nas especificações de módulos DDR e SDR, mas com as memórias DDR2 os fabricantes passaram a divulgá-los de forma mais aberta, usando qualquer redução nos valores para diferenciar seus módulos dos concorrentes. Temos então módulos DDR2-800 "4-4-4-12" ou "5-5-5-15", por exemplo.
O primeiro número é o CAS latency, que já conhecemos. O seguinte é o RAS to CAS delay, que é o tempo que o controlador precisa esperar entre o envio do endereço RAS e o CAS. Para realizar uma leitura, o controlador envia o sinal RAS, espera o tempo referente ao RAS to CAS delay, envia o sinal CAS, aguarda o número de ciclos referente a ele e então finalmente tem a leitura. Em um módulo DDR2 4-4-4-12, tanto o tCL quanto o tRCD demoram 4 ciclos, de forma que o acesso inicial demoraria um total de 8 ciclos. Em um módulo 5-5-5-15, o tempo subiria para 10 ciclos.
É importante lembrar (mais uma vez ;) que aqui estamos falando de ciclos dos circuitos de acesso, que trabalham ao dobro da freqüência. Os 8 ciclos de um módulo DDR2 equivalem ao mesmo espaço de tempo consumido por 4 ciclos de um módulo DDR ou SDR.
Junto com o ciclo inicial, o controlador pode realizar um burst de mais 7 leituras (totalizando 8). Cada uma destas leituras adicionais consome o equivalente a meio ciclo do controlador (ou a um quarto de ciclo das células de memória). Caso ele precise de mais dados dentro da mesma linha, ele repete o envio do sinal CAS e realiza um novo burst de leituras.
Note que o controlador só precisa enviar o sinal RAS ao mudar a linha ativa, de forma que o tRCD só entra na conta no primeiro acesso. Para os seguintes, temos apenas o tempo referente ao tCL. Caso o controlador precise realizar 24 leituras (dentro da mesma linha), num módulo DDR2 4-4-4-12, teríamos 11.5 ciclos (8+3.5) para as 8 primeiras leituras e mais 15 ciclos (4+3.5+4+3.5) para as 16 leituras subseqüentes. É por causa dessa peculiaridade que os módulos DDR e DDR2 não possuem mais o "full-page mode" suportado pelas memórias SDRAM; ele deixou de ser necessário.
O Row Precharge Time (tRP) entra em ação quando o controlador precisa alternar entre diferentes linhas. Cada linha inclui 512 endereços de memória, o equivalente a 4 KB de dados. As linhas são divididas em 4 ou 8 páginas, de forma que um módulo DDR2 de 1 GB teria 8 páginas de 32.768 linhas, ou 4 páginas de 65.536 linhas. Com tantas linhas e páginas diferentes, não é difícil imaginar que o chaveamento entre elas é muito freqüente. Quando falo em linhas e páginas, tenha em mente que essa é apenas a forma como o controlador de memória "enxerga" o módulo. Fisicamente, mesmo os bits de uma mesma linha estão espalhados pelos vários chips do módulo.
Antes de poder acessar uma determinada linha, o controlador de memória precisa carregá-la (precharge). Isso consiste em recarregar os capacitores dentro das células de memória, facilitando a leitura dos dados. O Row Precharge Time (tRP) é justamente o tempo necessário para fazer o carregamento, necessário antes de chavear para outra linha, seja no mesmo banco, seja num banco diferente.
Sendo assim, mesmo que seja necessário ler um único setor, a leitura demorará (em um módulo 4-4-4-12) 4 ciclos para o tRP, 4 ciclos para o tRCD, 4 ciclos para o tCL, totalizando 12 ciclos. Estes 12 ciclos são justamente o tempo referente ao RAS Activate to Charge (tRAS), que é o tempo mínimo para realizar uma leitura completa. O tRAS é sempre proporcional aos três primeiros valores, pois é justamente a soma dos três. É por isso que ele sempre é mais alto em módulos com CAS latency mais alto.
É possível reduzir o tRAS utilizando um recurso chamado Additive Latency, onde o comando para iniciar o precharge do banco seguinte pode ser enviado antes que a leitura atual termine. Isso faz com que o tempo total da leitura seguinte seja reduzido em 1 ou até mesmo 2 ciclos. Esse é o caso dos módulos 5-4-4-11 ou 4-4-4-11, por exemplo. Em outros casos é necessário um ciclo adicional para fechar o banco, que aumenta o tRAS em vez de diminuir. De qualquer forma, o tRAS é dos quatro o parâmetro que menos influi no desempenho, pois só faz alguma diferença real quando o sistema precisa realizar séries de acessos rápidos, a linhas diferentes.
Bem, esta última parte exigiu uma explicação mais complexa que o habitual. Como você pode ver, os tempos de acesso dos módulos DDR2 é um pouco mais complexo do que pode parecer à primeira vista.
Entretanto, o mais importante dos 4 valores continua sendo o primeiro (o bom e velho CAS latency, ou tCL), já que o tRCD e o tRP são quase sempre iguais a ele e o tRAS é a soma dos três. Ou seja, se o CAS latency é mais baixo, automaticamente os demais valores também são.
Conteúdo vinculado

0 comentários:

Postar um comentário

 
Abrir Rodape