martes, 14 de junio de 2016

Memoria DDR: velocidad nominal, velocidad real, velocidad interna y tasa de transferencia

Siempre se generan dudas cuando se habla de velocidad de la memoria de trabajo del sistema o memoria principal que es de tipo RAM (random access memory). En este post en particular comento sobre las diferentes velocidades de las memorias DDR (double data rate):

Veamos como se definen las velocidades a partir de un ejemplo. En este caso tomando un módulo DDR3

Los chips de memoria están identificados con el formato DDRx-zzz donde x identifica la generación de la tecnología del chip y zzz hace referencia la velocidad del reloj.

 En la etiqueta vemos que se trata de una memoria DDR3-1333Mhz, es decir que se trata de un chip DDR de tercera generación con una velocidad de reloj de 1333Mhz.

Velocidad NOMINAL = Velocidad efectiva =  Velocidad de reloj = 1333Mh

Conociendo la velocidad nominal o efectiva de la memoria podemos calcular su velocidad de entrada y salida también llamada velocidad real. Hay que tener en cuenta que los chips DDR envían dos datos por cada ciclo de reloj de allí el "double data rate". Entonces la velocidad real o de entrada y salida es:

Velocidad REAL = Velocidad nominal / 2 = 1333Mhz / 2 = 666,5 Mhz
por aproximación se dice 667 Mhz

Veamos ahora la velocidad interna de la memoria. Para entender este concepto hay que recordar que de acuerdo a su generación los chips DDR pueden enviar más bits de infomación dentro de los 2 datos por ciclo de reloj. Esto es:
  • DDR envía 2 bits en cada ciclo de reloj , 1 por cada uno de los 2 datos que pueden enviar por ciclo.
  • DDR2 envía 4 bits en cada ciclo de reloj, 2 por cada uno de los 2 datos que pueden enviar por ciclo.
  • DDR3 envía 8 bits en cada ciclo de reloj , 4 por cada uno de los 2 datos que pueden enviar por ciclo.
Entonces, teniendo en cuenta que la memoria del ejemplo es de tercera generación (DDR3) podemos calcular la velocidad interna de la memoria de la siguiente manera:

Velocidad INTERNA = Velocidad nominal / 8 = 1333Mhz / 8 = 166,62 Mhz 
por aproximación se dice 166 Mhz

Si la memoria fuese de 2º generación (DDR2) la velocidad interna = Velocidad nominal / 4
Si fuese de 1º generación (DDR) la velocidad interna = Velocidad nominal / 2

Otro dato que podemos obtener a partir de la velocidad nominal es la tasa de transferencia de la memoria. Hay que recordar que el bus de la memoria es de 64bits. Entonces podemos calcular la tasa de transferencia utilizando la siguiente fórmula: 

TASA TRANSFERENCIA = Ancho  de  bus  en  Bytes  x Velocidad Nominal 
TASA TRANSFERENCIA = ( 64 bits / 8 byte ) x 1333 MHz = 10664 MB/s


¿Qué tiempo dura cada ciclo en la memoria del ejemplo?

Esto se define como el periodo, no todas las memorias tienen el mismo periodo.  Para calcular el periodo o el tiempo que dura un ciclo de reloj de la memoria podemos utilizar la siguiente fórmuala:

Periodo = 1 (segundo) / velocidad real = 1 / 667Mhz = 0,0015 segundos = 1,5 nano segundos