quarta-feira, dezembro 20, 2017

Memórias DDR, DDR2, DDR3 e DDR4

Curioso para saber as diferenças técnicas entre as memórias DDR4, DDR3, DDR2 e DDR? 

Antes de começarmos a falar especificamente sobre cada um dos tipos de memória, você precisa saber que DDR, DDR2, DDR3 e DDR4 são memórias do tipo SDRAM (Synchronous Dynamic Random Access Memory), isto é, síncronas, o que significa que elas utilizam um sinal de clock para sincronizar suas transferências. 

DDR significa Double Data Rate ou Taxa de Transferência Dobrada, e memórias desta categoria transferem dois dados por pulso de clock externo. Traduzindo: elas conseguem obter o dobro do desempenho de memórias sem este recurso trabalhando com o mesmo clock (memórias SDRAM, que não estão mais disponíveis para PCs).

Por causa desta característica, essas memórias são rotuladas com o dobro de seu clock externo. 
Por exemplo, memórias DDR2-800 trabalham externamente a 400 MHz, memórias DDR2-1066 e DDR3-1066 trabalham externamente a 533 MHz, memórias DDR3-1333 trabalham externamente a 666,6 MHz, memórias DDR4-2133 trabalham externamente a 1.067 MHz, e assim por diante. Para evitar confusões, sobre qual clock estamos falando, esses clocks “nominais”, também chamados clocks “efetivos”, são frequentemente grafados em transferências por segundo (T/s). Por exemplo, memórias DDR4-2133 podem ser rotuladas como 2.133 MT/s (milhões de transferências por segundo) em vez de MHz, para deixar claro que estamos falando de seu clock efetivo, e não de seu clock externo (que é de 1.067 MHz, como explicamos).




Internamente, memórias DDR e DDR2 trabalham com o mesmo clock em que operam externamente, enquanto que memórias DDR3 e DDR4 trabalham internamente com metade do clock externo. Para evitar ainda mais confusões, normalmente o clock interno das memórias DDR3 e DDR4 não é mencionado, e trabalhamos apenas com os clocks nominais e externos da memória.

É muito importante notar que esses clocks são valores máximos que a memória pode oficialmente usar; isto não significa que a memória trabalhará com essas “velocidades” automaticamente. Por exemplo, se você instalar memórias DDR3-2133 em um computador que pode acessar apenas memórias a até 667 MHz (1.333 MHz DDR) – ou se seu micro estiver configurado erroneamente –, as memórias serão acessadas a 667 MHz (1.333 MHz DDR) e não a 1.067 MHz (2.133 MHz DDR). Isto acontece porque o sinal de clock é gerado pelo o controlador de memória, um circuito que está localizado fora da memória (atualmente embutido no processador).


Nomenclatura

O esquema de nomenclatura DDRx-yyyy (onde x é a geração da tecnologia e yyyy é o clock da memória DDR) em teoria é usado apenas para os chips de memória. Os módulos de memória – a pequena placa de circuito impresso onde os chips de memória estão soldados – utilizam um esquema de nomenclatura diferente: PCx-zzzz, onde x é a geração da tecnologia e zzzz é a taxa de transferência máxima teórica (também chamada largura de banda máxima). Este número indica a quantidade de bytes que podem ser transferidos por segundo entre o controlador de memória e o módulo de memória, assumindo que uma transferência de dados será realizada a cada pulso de clock.

Essa conta é facilmente feita multiplicando o clock nominal/efetivo em MHz por oito (na realidade a conta é feita multiplicando-se por 64 e dividindo-se por oito; como 64 / 8 = 8, podemos simplesmente multiplicar por oito para obtermos o mesmo resultado). Isto nos dará a taxa de transferência máxima teórica em MB/s (megabytes por segundo), mas em alguns casos o número é arredondado. Por exemplo, as memórias DDR3-1333 têm uma taxa de transferência máxima teórica de 10.666 MB/s, mas os módulos de memória que utilizam este tipo de memória são chamados PC3-10666 ou PC3-10600, dependendo do fabricante. Outro exemplo: memórias DDR4-2133 têm uma taxa de transferência máxima teórica de 17.064 MB/s, e os módulos de memória usando este tipo de chip são vendidos como PC4-17000.

A tabela presente na próxima página resume os clocks, taxas de transferência e nomenclaturas existentes.

É realmente importante entender que esses valores são máximos teóricos e eles nunca são obtidos. Isto acontece porque na conta estamos assumindo que a memória enviará dados para o controlador de memória a cada pulso de clock, o que simplesmente não acontece. O controlador de memória e a memória precisam trocar comandos (por exemplo, um comando instruindo a memória para fornecer um dado armazenado em determinada posição) e durante este tempo a memória não estará transferindo dados.


Velocidades

Uma das principais diferenças entre as memórias DDR, DDR2, DDR3 e DDR4 é a maior taxa de transferência que cada geração consegue alcançar. No entanto, normalmente há sobreposição de velocidades disponíveis. Por exemplo, existem memórias de 2.133 MHz tanto na tecnologia DDR3 quanto na DDR4.

Abaixo nós listamos as velocidades mais comuns para cada geração, de acordo com a entidade responsável pela padronização de memórias, chamada JEDEC.

Alguns fabricantes podem oferecer chips de memória capazes de trabalhar com outras velocidades não listadas aqui (isto é, com velocidades não padronizadas pelo JEDEC) – por exemplo, memórias especiais voltadas para os entusiastas em overclock. Os clocks terminados em 33 e 66 MHz são na verdade dizimas periódicas (33,3333 e 66,6666, respectivamente; por conta disso, algumas vezes clock terminados em 66 MHz são arredondados para 67 MHz).




Latência

A latência é o tempo que o controlador de memória precisa esperar entre a requisição de um dado e sua efetiva entrega. Ela também é conhecida como latência do CAS (Column Address Strobe) ou simplesmente CL. Este número é expresso em pulsos de clock. Por exemplo, uma memória CL3 significa que o controlador de memória precisa esperar três pulsos de clock até que o dado seja fornecido após a sua solicitação.

As memórias DDR4 têm latências maiores que as memórias DDR3, que têm latências maiores do que as memórias DDR2, que por sua vez têm latências maiores do que as memórias DDR. As memórias DDR2 e DDR3 têm um parâmetro adicional chamado AL (Additional Latency ou Latência Adicional) ou simplesmente A. Com as memórias DDR2 e DDR3 a latência total será CL+AL. Felizmente praticamente todas as memórias DDR2 e DDR3 são AL 0, o que significa que não há necessidade de latência adicional. Abaixo nós resumimos os valores mais comuns de latências.




Isto significa que as memórias DDR4 demoram mais pulsos de clock para começarem a transferir dados do que as memórias DDR3 (assim como as memórias DDR3 demoram mais pulsos de clock para começarem a transferir dados se comparado com as memórias DDR2).

Uma memória DDR3-2133 CL7 demorará menos tempo (ou seja, será mais rápida) para começar a fornecer dados do que uma memória DDR4-2133 CL15. Como as memórias são de “2.133 MHz”, ambas oferecem a mesma taxa de transferência máxima teórica (17.064 MB/s). Neste caso, a memória DDR4 é “pior” (mais lenta) que a memória DDR3 (mas nem sempre será o caso; continue lendo), embora a memória DDR4 tenha como vantagem consumir menos energia do que memória DDR3.

É por este motivo que, no momento (março de 2015), as memórias DDR4 estão restritas à plataforma X99 da Intel, onde as memórias são acessadas em quatro canais, que dobra a taxa de transferência em relação à configuração padrão de dois canais normalmente usada com memórias DDR3. Em outras palavras, a queda no desempenho causada pela maior latência é compensada pelo aumento na taxa de transferência.


Ao comparar módulos com clocks diferentes você precisa fazer algumas contas para poder comparar as latências. Preste atenção que estamos falando em “pulsos de clock”. Quando o clock é maior, cada pulso de clock é menor (ou seja, o período é menor). Por exemplo, em uma memória DDR3-2133 ou DDR4-2133, cada pulso de clock leva 0,9735 ns (973,5 ps). A conta é simples, período = 1 / frequência (note que você precisa usar o clock externo e não o clock nominal/efetivo/DDR nesta fórmula; para facilitar as coisas nós compilamos uma tabela de referência abaixo).

Nota: um nanossegundo (1 ns) equivale a 10-9 segundo, enquanto que um picossegundo (1 ps) equivale a 10-12segundo.

Comparando memórias de tecnologias diferentes com clocks diferentes nos traz algumas situações interessantes. Supondo agora uma memória DDR3-1333 com CL7, a espera inicial será de 10,5 ns (1,5 ns x 7). Agora suponha uma memória DDR4-2133 com CL 15. Com esta memória, a espera inicial será de 14,6025 ns (0,9735 ns x 15). A memória DDR3-1333 CL7 é, portanto, mais rápida para iniciar a entrega de dados do que uma memória DDR4-2133 CL15, porém a memória DDR4-2133 atingirá uma maior taxa de transferência do que a memória DDR3-1333 CL7, o que é obviamente mais desejável.

No geral, o aumento da latência a cada nova geração é compensado com o aumento na taxa de transferência, e uma discussão de latência faz mais sentido quando comparamos memórias de mesma tecnologia e mesma taxa de transferência.

Postagem em destaque

O que faz um Analista de Sistemas?

  Os analistas de sistemas fazem análise de requisitos de software, hardware para especificar um novo sistema ou como um sistema atual pode ...