Memórias DDR
Apesar das otimizações, os módulos de memória SDR-SDRAM continuam realizando apenas uma transferência por ciclo, da forma mais simples possível. Depois de decorrido o longo ciclo inicial, as células de memória entregam uma leitura de dados por ciclo, que passa pelos buffers de saída e é despachada através do barramento de dados. Todos os componentes trabalham na mesma frequência:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
As memórias DDR implementam um novo truque, que as torna capazes de realizarem duas transferências por ciclo e serem quase duas vezes mais rápidas que as memórias SDRAM regulares, mesmo mantendo a mesma frequência de operação e a mesma tecnologia básica. Vem daí o termo "DDR", que significa "Double Data Rate", ou frequência dupla de transferência de dados.
Com o lançamento das memórias DDR, as SDRAM passaram a ser chamadas de "SDR" (Single Data Rate) ou SDR-SDRAM, reforçando a diferença entre as duas tecnologias. Embora tanto as memórias DDR quanto as DDR2 e DDR3 continuem sendo memórias SDRAM, o termo saiu de moda, já que é muito mais fácil dizer "DDR" do que "DDR-SDRAM".
De volta à tecnologia, os chips de memória DDR incluem circuitos adicionais, que permitem gerar comandos de acesso e receber os dados referentes às leituras duas vezes por ciclo de clock, executando uma operação no início do ciclo e outra no final. Como são utilizadas as mesmas trilhas para realizar ambas as transferências, não foi necessário fazer grandes modificações nem nos módulos de memória, nem nas placas-mãe.
Apesar disso, as células de memória propriamente ditas continuam operando na mesma frequência. Em um módulo DDR-266, por exemplo, elas operam a apenas 133 MHz, da mesma forma que num módulo SDR PC-133. O pulo do gato é fazer com que cada um dos dois comandos de leitura (ou gravação) sejam enviados para um endereço diferente, na mesma linha. As duas leituras 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:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
O maior problema é que o ciclo inicial continua demorando o mesmo tempo que nas memórias SDRAM, de forma que o ganho aparece apenas em leituras de vários setores consecutivos e a taxa de transferência nunca chega realmente a dobrar, variando bastante de acordo com o tipo de aplicativo usado.
A temporização para um burst de 8 leituras, usando memórias DDR, seria 5-½-½-½-½-½-½-½ (8.5 ciclos) ao invés de 5-1-1-1-1-1-1-1 (12 ciclos) como num módulo SDR. A diferença é menor em bursts menores, de apenas duas ou quatro leituras.
Apesar disso, as memórias DDR acabaram sendo um excelente negócio, pois tornaram possível obter ganhos perceptíveis de performance sem um aumento considerável no custo. Justamente por isso elas se popularizaram rapidamente, substituindo as memórias SDR em um espaço de menos de um ano.
Os módulos DDR podem ser vendidos tanto segundo sua frequência de operação quanto segundo sua taxa de transferência.
Assim como no caso dos módulos SDR, existem módulos de memória DDR CL2 e CL3, sendo que nos CL2 o tempo do acesso inicial é reduzido em um ciclo, resultando em um pequeno ganho de desempenho. Como as DDR realizam duas operações por ciclo, surgiram também os módulos CL2.5, que ficam no meio do caminho.
As especificações dos módulos indicam a frequência máxima para a qual seu funcionamento foi comprovado. Nada impede que você use o módulo a uma frequência mais baixa que o especificado; você pode usar um módulo DDR-400 em uma placa-mãe configurada para trabalhar a 133 MHz, por exemplo, mas nesse caso não existe ganho de desempenho com relação a um módulo DDR-266, com exceção de pequenas diferenças relacionadas ao valor CAS ou à temporização dos dois módulos.
Quase sempre, é possível também usar o módulo a frequências um pouco mais altas que o especificado, fazendo overclock. O módulo DDR-400 poderia funcionar então a 215 MHz, por exemplo. Fazer overclock sem aumentar a tensão da memória não traz perigo para os módulos (mesmo a longo prazo), porém você também não tem garantia de estabilidade. Normalmente os módulos CL2 ou CL2.5 suportam melhor os overclocks, já que o controlador tem mais margem para aumentar a temporização dos módulos para compensar o aumento na frequência.
Ao misturar dois módulos de especificações diferentes, é necessário nivelar por baixo, usando a frequência suportada pelo módulo mais lento. Justamente por isso, nem sempre é conveniente aproveitar os módulos antigos ao fazer upgrade de memória, pois você acaba sub-utilizando os novos módulos, obrigando-os a acompanharem as temporizações dos módulos antigos.
Continuando, quase todos os módulos de memória SDRAM ou DDR possuem um chip de identificação chamado de "SPD" (Serial Presence Detect), que armazena os códigos de identificação do módulo, detalhes sobre a frequência, tempos de acesso, CAS latency e outras especificações. Estas informações são exibidas por programas de identificação, como o CPU-Z e o Sandra. No Linux, você pode ler as informações gravadas no chip usando o script "decode-dimms.pl" (você pode encontrá-lo usando o comando "locate"), que faz parte do pacote "lm-sensors". Ele retorna uma longa lista de informações sobre cada um dos módulos instalados na máquina, como neste exemplo:
Pelas informações, podemos ver que se trata de um módulo DDR-400 (PC3200) de 512 MB da Kingston. Veja que o módulo suporta o uso de CAS 3, 2.5 ou 2, mas em seguida é especificado que o tempo mínimo de acesso usando CAS 3 são 5 ns e usando CAS 2 são 7.5 ns. Ou seja, o módulo só é capaz de usar CAS 2 em frequências mais baixas. Ao operar a 200 MHz, sua frequência nominal, ele passa automaticamente a usar CAS 3. Apesar das especificações serem um pouco confusas, elas indicam que na verdade tenho em mãos um módulo CL3.
O SPD é um pequeno chip de memória EEPROM, com apenas 128 ou 256 bytes, que pode ser localizado facilmente no módulo:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Graças a ele, a placa-mãe pode utilizar automaticamente as configurações recomendadas para o módulo, facilitando a configuração. De qualquer maneira, você pode também desativar a configuração automática (By SPD) e especificar sua própria configuração através do Setup.
A maioria das placas atuais permite que a memória opere de forma assíncrona com o clock da placa-mãe, permitindo que a placa-mãe opere a 166 MHz, enquanto a memória opera a 200 ou 233 MHz, por exemplo. Ao usar um módulo antigo, também é possível fazer o contrário, mantendo a placa-mãe a 200 MHz, mas configurando a memória para operar a 133 MHz, por exemplo. Basta localizar a opção "DRAM Frequency", "Memclock Value" ou similar:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Na maioria das placas é possível ajustar manualmente o valor CAS. Isso pode ser útil ao fazer overclock, pois um módulo DDR-400, pode não conseguir trabalhar estavelmente a 233 MHz (por exemplo), mantendo o CAS em 2 tempos, mas pode funcionar perfeitamente se o tempo for aumentado para 3 tempos. O inverso também é possível. Um módulo DDR-400 CAS 3 poderia vir a trabalhar estavelmente com CAS 2 se a frequência fosse reduzida para 166 MHz, por exemplo, oferecendo uma boa flexibilidade para quando você tem tempo disponível e quer chegar ao melhor desempenho possível.
Muitas placas vão mais longe, oferecendo conjuntos completos de ajustes, como neste segundo screenshot:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
incar com a frequência e tempos de acesso da memória não oferece riscos para o equipamento. No máximo você pode precisar limpar o setup, para que o micro volte a inicializar depois de tentar usar uma configuração não suportada pelos módulos.
O maior risco está em aumentar a tensão usada pelos módulos (Memory Voltage). Está comprovado que pequenos aumentos na tensão aumentam a possibilidade dos módulos trabalharem estavelmente a frequências mais altas, sobretudo nos módulos DDR2, que dissipam mais calor. O problema é que isso também pode abreviar a vida útil dos módulos, por isso nem sempre é uma boa ideia.
Aumentos de até 5 a 8% estão dentro do limite de tolerância dos circuitos e não oferecem grandes riscos. Você pode usar 2.65V em um módulo DDR ou 1.9V em um módulo DDR2, por exemplo, mas aumentos mais agressivos resultam quase sempre em uma redução significativa da vida útil dos módulos. Muitas placas oferecem a opção de aumentar as tensões dos módulos em 30% ou mais, o que pode danificá-los em poucas horas.
Apesar das otimizações, os módulos de memória SDR-SDRAM continuam realizando apenas uma transferência por ciclo, da forma mais simples possível. Depois de decorrido o longo ciclo inicial, as células de memória entregam uma leitura de dados por ciclo, que passa pelos buffers de saída e é despachada através do barramento de dados. Todos os componentes trabalham na mesma frequência:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
As memórias DDR implementam um novo truque, que as torna capazes de realizarem duas transferências por ciclo e serem quase duas vezes mais rápidas que as memórias SDRAM regulares, mesmo mantendo a mesma frequência de operação e a mesma tecnologia básica. Vem daí o termo "DDR", que significa "Double Data Rate", ou frequência dupla de transferência de dados.
Com o lançamento das memórias DDR, as SDRAM passaram a ser chamadas de "SDR" (Single Data Rate) ou SDR-SDRAM, reforçando a diferença entre as duas tecnologias. Embora tanto as memórias DDR quanto as DDR2 e DDR3 continuem sendo memórias SDRAM, o termo saiu de moda, já que é muito mais fácil dizer "DDR" do que "DDR-SDRAM".
De volta à tecnologia, os chips de memória DDR incluem circuitos adicionais, que permitem gerar comandos de acesso e receber os dados referentes às leituras duas vezes por ciclo de clock, executando uma operação no início do ciclo e outra no final. Como são utilizadas as mesmas trilhas para realizar ambas as transferências, não foi necessário fazer grandes modificações nem nos módulos de memória, nem nas placas-mãe.
Apesar disso, as células de memória propriamente ditas continuam operando na mesma frequência. Em um módulo DDR-266, por exemplo, elas operam a apenas 133 MHz, da mesma forma que num módulo SDR PC-133. O pulo do gato é fazer com que cada um dos dois comandos de leitura (ou gravação) sejam enviados para um endereço diferente, na mesma linha. As duas leituras 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:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
O maior problema é que o ciclo inicial continua demorando o mesmo tempo que nas memórias SDRAM, de forma que o ganho aparece apenas em leituras de vários setores consecutivos e a taxa de transferência nunca chega realmente a dobrar, variando bastante de acordo com o tipo de aplicativo usado.
A temporização para um burst de 8 leituras, usando memórias DDR, seria 5-½-½-½-½-½-½-½ (8.5 ciclos) ao invés de 5-1-1-1-1-1-1-1 (12 ciclos) como num módulo SDR. A diferença é menor em bursts menores, de apenas duas ou quatro leituras.
Apesar disso, as memórias DDR acabaram sendo um excelente negócio, pois tornaram possível obter ganhos perceptíveis de performance sem um aumento considerável no custo. Justamente por isso elas se popularizaram rapidamente, substituindo as memórias SDR em um espaço de menos de um ano.
Os módulos DDR podem ser vendidos tanto segundo sua frequência de operação quanto segundo sua taxa de transferência.
Código:
DDR-200 (100 MHz) = PC1600
DDR-266 (133 MHz) = PC2100
DDR-333 (166 MHz) = PC2700
DDR-400 (200 MHz) = PC3200
DDR-466 (233 MHz) = PC3700
DDR-500 (250 MHz) = PC4000
Assim como no caso dos módulos SDR, existem módulos de memória DDR CL2 e CL3, sendo que nos CL2 o tempo do acesso inicial é reduzido em um ciclo, resultando em um pequeno ganho de desempenho. Como as DDR realizam duas operações por ciclo, surgiram também os módulos CL2.5, que ficam no meio do caminho.
As especificações dos módulos indicam a frequência máxima para a qual seu funcionamento foi comprovado. Nada impede que você use o módulo a uma frequência mais baixa que o especificado; você pode usar um módulo DDR-400 em uma placa-mãe configurada para trabalhar a 133 MHz, por exemplo, mas nesse caso não existe ganho de desempenho com relação a um módulo DDR-266, com exceção de pequenas diferenças relacionadas ao valor CAS ou à temporização dos dois módulos.
Quase sempre, é possível também usar o módulo a frequências um pouco mais altas que o especificado, fazendo overclock. O módulo DDR-400 poderia funcionar então a 215 MHz, por exemplo. Fazer overclock sem aumentar a tensão da memória não traz perigo para os módulos (mesmo a longo prazo), porém você também não tem garantia de estabilidade. Normalmente os módulos CL2 ou CL2.5 suportam melhor os overclocks, já que o controlador tem mais margem para aumentar a temporização dos módulos para compensar o aumento na frequência.
Ao misturar dois módulos de especificações diferentes, é necessário nivelar por baixo, usando a frequência suportada pelo módulo mais lento. Justamente por isso, nem sempre é conveniente aproveitar os módulos antigos ao fazer upgrade de memória, pois você acaba sub-utilizando os novos módulos, obrigando-os a acompanharem as temporizações dos módulos antigos.
Continuando, quase todos os módulos de memória SDRAM ou DDR possuem um chip de identificação chamado de "SPD" (Serial Presence Detect), que armazena os códigos de identificação do módulo, detalhes sobre a frequência, tempos de acesso, CAS latency e outras especificações. Estas informações são exibidas por programas de identificação, como o CPU-Z e o Sandra. No Linux, você pode ler as informações gravadas no chip usando o script "decode-dimms.pl" (você pode encontrá-lo usando o comando "locate"), que faz parte do pacote "lm-sensors". Ele retorna uma longa lista de informações sobre cada um dos módulos instalados na máquina, como neste exemplo:
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare and others
Version 2.10.1
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62 OK (0x8C)
# of bytes written to SDRAM EEPROM 128
Total number of bytes in EEPROM 256
Fundamental Memory type DDR SDRAM
SPD Revision 0.0
---=== Memory Characteristics ===---
Maximum module speed 400MHz (PC3200)
Size 512 MB
tCL-tRCD-tRP-tRAS 3-3-3-8
Supported CAS Latencies 3, 2.5, 2
Supported CS Latencies 0
Supported WE Latencies 1
Minimum Cycle Time (CAS 3) 5 ns
Maximum Access Time (CAS 3) 0.65 ns
Minimum Cycle Time (CAS 2.5) 6 ns
Maximum Access Time (CAS 2.5) 0.7 ns
Minimum Cycle Time (CAS 2) 7.5 ns
Maximum Access Time (CAS 2) 0.75 ns
---=== Manufacturing Information ===---
Manufacturer Kingston
Manufacturing Location Code 0x04
Part Number K
Manufacturing Date 0x001E
Assembly Serial Number 0x6B376D48
Pelas informações, podemos ver que se trata de um módulo DDR-400 (PC3200) de 512 MB da Kingston. Veja que o módulo suporta o uso de CAS 3, 2.5 ou 2, mas em seguida é especificado que o tempo mínimo de acesso usando CAS 3 são 5 ns e usando CAS 2 são 7.5 ns. Ou seja, o módulo só é capaz de usar CAS 2 em frequências mais baixas. Ao operar a 200 MHz, sua frequência nominal, ele passa automaticamente a usar CAS 3. Apesar das especificações serem um pouco confusas, elas indicam que na verdade tenho em mãos um módulo CL3.
O SPD é um pequeno chip de memória EEPROM, com apenas 128 ou 256 bytes, que pode ser localizado facilmente no módulo:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Graças a ele, a placa-mãe pode utilizar automaticamente as configurações recomendadas para o módulo, facilitando a configuração. De qualquer maneira, você pode também desativar a configuração automática (By SPD) e especificar sua própria configuração através do Setup.
A maioria das placas atuais permite que a memória opere de forma assíncrona com o clock da placa-mãe, permitindo que a placa-mãe opere a 166 MHz, enquanto a memória opera a 200 ou 233 MHz, por exemplo. Ao usar um módulo antigo, também é possível fazer o contrário, mantendo a placa-mãe a 200 MHz, mas configurando a memória para operar a 133 MHz, por exemplo. Basta localizar a opção "DRAM Frequency", "Memclock Value" ou similar:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Na maioria das placas é possível ajustar manualmente o valor CAS. Isso pode ser útil ao fazer overclock, pois um módulo DDR-400, pode não conseguir trabalhar estavelmente a 233 MHz (por exemplo), mantendo o CAS em 2 tempos, mas pode funcionar perfeitamente se o tempo for aumentado para 3 tempos. O inverso também é possível. Um módulo DDR-400 CAS 3 poderia vir a trabalhar estavelmente com CAS 2 se a frequência fosse reduzida para 166 MHz, por exemplo, oferecendo uma boa flexibilidade para quando você tem tempo disponível e quer chegar ao melhor desempenho possível.
Muitas placas vão mais longe, oferecendo conjuntos completos de ajustes, como neste segundo screenshot:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
incar com a frequência e tempos de acesso da memória não oferece riscos para o equipamento. No máximo você pode precisar limpar o setup, para que o micro volte a inicializar depois de tentar usar uma configuração não suportada pelos módulos.
O maior risco está em aumentar a tensão usada pelos módulos (Memory Voltage). Está comprovado que pequenos aumentos na tensão aumentam a possibilidade dos módulos trabalharem estavelmente a frequências mais altas, sobretudo nos módulos DDR2, que dissipam mais calor. O problema é que isso também pode abreviar a vida útil dos módulos, por isso nem sempre é uma boa ideia.
Aumentos de até 5 a 8% estão dentro do limite de tolerância dos circuitos e não oferecem grandes riscos. Você pode usar 2.65V em um módulo DDR ou 1.9V em um módulo DDR2, por exemplo, mas aumentos mais agressivos resultam quase sempre em uma redução significativa da vida útil dos módulos. Muitas placas oferecem a opção de aumentar as tensões dos módulos em 30% ou mais, o que pode danificá-los em poucas horas.