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