Ciclos de la DRAM, INTRO. a las LATENCIAS

ach3chin0

Al ser un tema q suscita tanto interes, procedo a explicaros el funcionamiento de los ciclos de precarga-lectura-escritura de la DRAM

*Antes de comenzar con la Teoria del BUS de direccionamiento de la DRAM me pareceria MUY interesante hacer una clara distincion entre SRAM y DRAM.

*La SRAM o Static RAM, recibe su nombre debido a que una vez que los bits (0-1) son introducidos en las celdillas y permanecen solidariamente hasta que son re-escritos por otros bits o se produce un corte de alimentacion.

Una celdilla de SRAM implementa de 4-6 transistores organizados de tal manera q "cazan" los bit entre estos hasta que son reescritos o hay un fallo de alimentacion electrica. SRAM es MUY rapida,eficiente y de logica mas simple (SIMPLE=EFICAZ), pero a su vez tiene unos gastos de manufactura alrededor de x5 veces el precio de manufactura de la DRAM.
(Todos sabeis que la memoria cache, los RAMDACŽs y otros muxos integrados implementan este tipo de memoria).

Uno de los principales problemas nos encontramos es la variedad de empaquetados de la DRAM, SIMMs, DIMMs, RIMMs, la razon es que a medida q disminuye el tamaño de implementacion de los transistores, y la cantidad de celdillas a integrar hay q modificar el empaquetado para poder aprovechar todas las nuevas capacidades o "features".

*Empaquetados hay varios y todos los conoceis:

http://home.cfl.rr.com/bjp/Packaging.htm

Comentaros que los mas usuales en nuestras maquinas son los DIMM, RIMM, y como no BGA. Este BGA es ciertamente interesante, lo podreis reconocer facilmente, vuestros Northbridges y Southbridges son BGA. Se estan consiguiendo frecuencias internas de trabajo muy interesantes con este empaquetado. Las ventajas son evidentes:
Eliminacion de las backlines del integrado, mayor coeficente de planeidad, 70% de ahorro de espacio en el layout del PCB, y como no, unas mejores propiedades termicas y electricas.

No vamos a entrar a observar los ciclos de lectura y escritura de la SRAM, pero como podeis imaginar es muxo mas eficiente y practicamente sin delays.

Si nuestra main memory fuera SRAM, podriamos olvidarnos practicamente de todos los parametros de memoria. La gran paradoja de la DRAM es hacer que una integrado funcione como almacenamiento cuando realmente NO deberia hacerlo.

DRAM: [Bienvenidos al mundo de los DELAYs]
Como hemos comentado antes, los mecanismos de la DRAM son mas complejos, debido en gran medida a que la carga en sus celdillas es "expulsada" constantemente.

Con el plano de ambos integrados delante del monitor (mi caso), puedo observar que hay exactamente la mitad de lineas de direccionamiento (BUS) que en la SRAM.

*La pregunta que os estareis haciendo es clara:
¿Porque si tiene menos lineas es mas compleja?
"La Respuesta la encontre al ver que el interfaz de la memoria era mas complejo. Los direccionamientos estan cortados en 2 hojas o secciones. Y estas 2 hojas estan implementadas al BUS en 2 ciclos de reloj separados. [DELAY numero 1]

Asi que el address de por ejemplo 20 bit, se divide en 2 chunks de 10 bit cada uno. Y ambos chunks seran inyectados a la DRAM en 2 ciclos separados de reloj. Este fenomeno se conoce en Electronica como MULTIPLEXADO.

Este Multiplexado o "MUXing" es la PRINCIPAL CARACTERISTICA DE LA DRAM. Comentaros que esta MUXing es del tipo TDM entrelazando pulsos o clk de ambas hojas.
Estos direccionamientos multiplexados realmente complican el diseño y añadiendo ademas una gran cantidad de delays. El xip es mas complejo y su interface lo es tb.
La razon de este MUXing es referente a que las celdillas de la DRAM implementan 1 solo transistor per cell y son mas pequeñas que las celdillas de la SRAM (4-6transistores per cell). Al tener un tamaño tan pequeño,el tamaño del empaquetado aumenta ya que hay q direccionar todos los pines, siendo inevitable el multiplexado.

Echando un vistazo mas profundo a una celda de memoria DRAM, la podemos imaginar como un cuadrado bidimensional.
Realmente NO es un cuadrado, sino un rectangulo, con mas COLUMNs y menos ROWs. Ya que cuantas menos ROWs, habra menos penalizaciones para refrescarlas

Con ROWs y COLUMNs. Imaginad la celdilla como un tablero de ajedrez, en el que tenemos unas filas horizontales (ROWs) y otras Verticales (COLUMNs)

Hay 2 pines exclusivos para unas unidades que a todos os sonaran familiares:
#RAS: Row Address Strobe
#CAS: Column Address Strobe

Estos controlan los direccionamientos de los bit que se alojan dentro de la celdilla, localizandolos preciasamente en este mapeado 2D.

CICLOS de la DRAM:

1) Comienza el ciclo con un comando de activacion que selecciona un banco y una ROW a traves de los pines de entrada

2) Los bits son seleccionados de las datalines y inyectados en los amplificadores (situados en el dataBUS)

3) Cuando los bits alcanzan los amplificadores estos son "atrapados" por una señal discreta de timming

4) Este proceso consume un periodo de tiempo denominado RAS to CAS Delay, con una latencia de 2-3CLK. Claramente the less the better; Apostad por 2 CLK

5) Despues de este delay un comando de lectura apunta apunta al direccionamiento de COLUMn para seleccionar el direccionamiento de la primera WORD (8byte=64bit) que sera lleida del amplificador.

***RAStoCAS es por tanto llegado el BIT al amplifier

6) Despues del comando de lectura incurre otra penalizacion, el CAS Delay, mientras las words son leidas desde los amplificadores e inyectadas al pin de salida. CAS Delay tiene latencias de 2-3 CLK, the less the better, a la latencia 2CLK.

7) Despues de que toda la informacion ha salido del amplificador hacia los ROW hay otro delay de 2-3 CLK, como siempre a por la latencia mas baja, 2CLK. Estp es el tRP

8) Dependiendo del "sangrado" de las celdillas, que es caracteristica dependiente de la naturaleza de cada integrado, la recarga tendra unas latencias de 7-11 CLK. Esto es el Trcd, durante este tiempo, el flujo de datos se interrumpe totalmente e incide negativamente en el rendimiento. Aqui hay una gran paradoja, todos sabemos que este Trcd tiene que tener 11 CLK para el mejor rendimiento, NO tengo una explicacion al respecto, necesito estudiar mas detenidamente este parametro la verdad [COMPLETAR].

Entended ya para finalizar que las celdillas de DRAM solo "atrapan" bits (0-1) y que desde la perspectiva de la CPU y si pudieramos otorgarle ojos a esta, veria la memoria como una larga y estrecha fila de celdillas. Algo similar a esto.

-----.-----.-----.-----.-----.------.-----

Donde los guiones confirman el Address BUS y los puntos las memory-cells, o localizaciones fisicas del los bits almacenados.

La jerarquia I/O de los ciclos de la DRAM podria organizarse de esta manera:

INPUT (Address BUS)--->CAS Decoder/RAS Decoder----->Amplificador------>OUTPUT (Data BUS

-rEdZ-

good job ;)

Massive

Genial, thx :)

B

la caché de L3 de los Pentium4 de ahora es SRAM? antes ya usaban caché de L3 pero fuera de la die, o es un 'invento' nuevo?
porque el tema está en que tendrá menor coste que la de L1 y L2 y por eso le pueden poner más (2MB creo) no? xD

3D

H siempre aprendiendo y enseñando algo nuevo.
Gracias.

ach3chin0

Ajam, es SRAM. Esos EEdition son claramente Xeon, vedlos como un intento de INTEL por llegar a igualar al rendimiento del FX-51.

Ese extra de cache L3 realmente hace bien el trabajo, hasta un 15% mas rendimiento en dtdas aplicaciones....

H

thrazz

thx H, interesantísimo.

JaCk0

muy buen trabajo H, otra guía para la colección, Thx

MaKi

El Tras es el unico timming k no es mejor entre mas pequeño ni mas grande si no buscar un valor entre 7-11 normalmente.

El valor minimo seria CAS + tRCD + 2 cycles. por ej: cas 2 trcd 3 el minimo seria 7 kedando por ejemplo 2-3-3-7.

El Tras es el tiempo de limpiar la pagina y si se pone muy pekeño como siempre suele recomendar la gente en foros es necesario reenviar con la consecuente bajada de rendimiento.

http://www.mushkin.com/mushkin/pop-up/latencies.htm

MDLSoft

Quiero felicitar a H por el gran trabajo que hace con estas explicaciones que ayudan a mucha gente a comprender mejor como funcionan estas máquinas que tanto usamos y que tanto nos gusta trastear con ellas ;)

Quería tambien añadir algunos comentarios sobre el funcionamiento de las memorias con algunas puntualizaciones y explicaciones añadidas.

Para aquellos que hayan estudiado electrónica en algún momento, seguro que ya han visto SRAM, aunque sea cuando estudiaron los biestables tipo "D". Un biestable se puede construir a partir de dos transistores en el habitual esquema cruzado, sin embarto los biestables digitales son un poco más complejos construidos a partir del principio de un J-K o con dos inversores, aquí podéis ver el esquema de un biestable tipo "D":

http://floti.bell.ac.uk/sss/section_1/d_bistable.htm

http://homepages.westminster.org.uk/electronics/4013.htm

Aquí va un link con terminología de los tipos de memorias y características:

http://learnpcnow.tripod.com/learn/glossary/04memory.htm

Como bien ha dicho H se necesitan unos cuantos transistores para construirlos con lo que el tamaño de cada celdilla (unidad basica de memoria o "BIT") ocuparía un tamaño relativamente grande si pensamos que vamos a tener memorias de 256MB ( 256 Millones de Bytes donde cada Byte son 8 BITS), estas memorias tienen la ventaja que su circuito externo de control es muy simple ya que no requiere nada más que los buses de datos, selección (multiplexado) y direcciones. En contrapartida las memorias SRAM tienen un consumo bastante más elevado y se requieren tecnologías "TTL" para conseguir mayores velocidades, siendo complicado el añadir grandes cantidades en pequeños bloques y sin producir una elevada temperatura (modulos RAM convencionales). Por eso la SRAM se usa en memorias caché donde no se usan grandes tamaños.

Las memorias DRAM tienen una construcción infinitamente más simple, cada celdilla básica (BIT) esta construido por un único transistor CMOS. Los transistores CMOS tienen la peculiaridad de crear una carga capacitiva entre Puerta y Drenador (Gate-Drain), dicha capacidad es un inconveniente en la mayoría de circuitos, sin embargo precisamente las memorias DRAM se basan en ese efecto capacitivo que en estos transistores se ha exagerado especialmente mediante el sobre-dopado de las uniones para obtener aun mayor efecto capacitivo. Así podemos decir que las memorias DRAM estan construidas a partir de condensadores.

Para ver datos sobre transistores CMOS y bases para puertas con cmos:

http://tech-www.informatik.uni-hamburg.de/applets/cmos/cmosdemo.html

*** MUY BUENA:
http://www.cerc.utexas.edu/jaa/courses/382m/lectures/2-2.pdf

Ahora que hemos visto que las DRAM son en realidad una malla de condensadores podremos comprender los "defectos" inherentes en los mismos.
Todos tendremos una noción de electrónica y el funcionamiento de capacitores (condensadores) y que estos mantienen por poco tiempo su carga, y cuanta menos capacidad, menos tiempo pueden mantener dicha carga (lógicamente), además los condensadores sufren un efecto de carga típico en forma de curva que podéis observar aquí:

http://www.sc.ehu.es/sbweb/fisica/elecmagnet/campo_electrico/rc/rc.htm

Podemos ver que cada condensador que forma la mallla de condensadores de una memoria DRAM será de una capacidad muy pequeña (pF), el dato que introducimos se perderá muy rápidamente en esta memoria. Imaginad que ponemos un "1" (5voltios, 3.3... etc), al cargar el condensador a 5V por ejemplo, al retirar esta tensión, el "dato" desaparecerá en un breve plazo de tiempo, normalmente en microsegundos o nanosegundos dependiendo del tipo de memoria.
Visto esto podemos decir que la DRAM "olvida" el dato al cabo de un instante, para evitar que el dato se pierda este se ha de reescribir tantas veces como sea necesario para estar siempre dentro del margen efectivo que mantenga la tensión del dato en sus zonas legibles que coresponan a los niveles lógicos usados (TTL y demás)
El proceso de "recordar" o recargar el dato en cada celda (condensador) se denomina "RESFRESCO". Aquí podemos encontrar una similitud en las pantallas de TV en las que para formar una imagen en nuestra retina ha de repetir un barrido de pantalla para mantener el "dato" que en este caso es una imagen. Bien pues las DRAM son más o menos así, han de estar continuamente reescribiendo el dato que tienen almacenado para que este no se pierda... y aquí comienza el auténtico problema.

Cada vez que se refresca la memoria los buses de datos y direcciones del sistema se paran para hacer este "mantenimiento" de la memoria si pensamos que este mantenimiento o refresco se hace miles de veces por segundo... podemos hacernos una idea de la gran cantidad de tiempo que se pierde en invertirlo en este proceso de refresco.
La cosa no se queda aqui sino que es bastante más compleja de lo que pueda parecer en un principio en este tipo de memorias ya que hay que tener en cuenta los tiempos de los demás componentes y sus correspondientes zonas de seguirdad.
Las memorias SRAM llevan multiplexado interno (una cosa que no especifica H en su artículo anterior) pero las DRAM llevan varios multiplexores internos de mucha mayor complejidad porque necesita acceder a todas y cada una de las celdas para el proceso de refresco.
Aquí ya podemos ver como nos ha explicado antes nuestro colega H como se realiza el refresco por filas y columnas y los tiempos de RAS a CAS. Aquí me gustaría conseguir un datagrama para que pudierais ver como se efectua eléctricamente una transacción en una memoria DRAM, pero todavía no he tenido tiempo de encontrar una interesante.
En el datagrama se pueden ver los tiempos implicados en cada una de las partes de la memoria y sus márgenes de funcionamiento, esos márgenes que minimizamos con nuestro overclock y que intentamos aumentar con los "Voltage Mod".

Por ahora no voy a continuar con este post pues he de irme y no tengo más tiempo, en otro momento intentaré editarlo y corregir en los puntos donde pueda tener algún error y seguir con el interesante funcionamiento de las memorias.

Interesante:
http://xtronics.com/memory/how_memory-works.htm

Saludos,

MDLSoft

ach3chin0

Gracias MDLSoft hermano:

Incluso en los arrays de la SRAM hay un MUXing en las COLUMNs. Mi error provenia en creer que los ciclos de lectura de la SRAM no necesitaban de un multiplexor para tal efecto.

Como siempre digo:

"La Cooperacion es la clave de la Evolucion"

Volviendo al tema de las memorias...

Otro de los problemas tipicos en las memorias es como llenar el DataBUS totalmente. Como sabreis tanto K7 como pIV tienen un data BUS de 64-bit en el data fetching (recordad el fetching en el Front-End). La solucion es dividir el output de multiples modulos en 1 banco de la RAM. 1 DIMM de 32 mbytes lo dividimos en 4 modulos de 16 bit dando un total de 64 bit que es el ancho total del datapath.

Asi q el modulo 1 almacena el byte 1, el modulo 2 almacena el 2, y asi sucesivamente hasta los 33,544.443 byte restantes...

Asi q cuando la CPU necesite un byte en particular, no solo puede "capturar" ese byte sino que podra capturar los adyacentes al mismo.

H

Z

¿que coño habeis estudiado para saber tanto del tema?
¿¿¿Os daban dos???¿¿¿O kizas os daban el pakete entero???

ach3chin0

Todo esta en los Libros adecuados :)

H

c0rs0

Yo lo que no se es cuando haceis referencia a valores 2 3 3 7 o similar, cada uno de ellos a que corresponde..
Y otra pregunta es si en las especificaciones de mis memorias indica CL2 (son unas OCZ PC3500 EL Dual Channel) como puedo saber que timings debo ponerle para sacarles probecho.

gAwL_2k3

podriais poner aki unos cuantos libros para empezar, y otros mas avanzados =). ya ke ultimamente too el mundo pretende enterarse un poco (me incluyo), y leer un libro de vez en cuando no viene mal :P. seria wena idea: FAQ: Libros de informacion.
Electronica: Basico. tal libro - Avanzado tal
etc., yo x lo menos me cogeria unos cuantos =), y logo ponerles una especie de ranking :). un saludo a toos

Z

Me ha gustado la idea.

El mejor en el ranking será.....
VACACIONES SANTILLANA

kas

Stoy deacuerdo con vosotros:

FAQ: Luibroz!

Carcass

Pues no lo leas si te aburre. A muchos nos interesa y hasta lo entendemos y todo :P

ach3chin0

Es INFORMACION MUY MUY valiosa, creedme ;)

H

Taker

hmm, toy en el 14, como comparamos rendimientos de distintas latencias?? aida32, sisoftsandra? a mayor ancho de banda mejor o no tiene que ver?

ach3chin0

Usa el SANDRA por ejemplo:

http://www.sisoftware.net/index.html?dir=dload&location=sware_dl_x86&langx=es&a=

En concreto el Memory Bandwidth

H

TaMy

Que os parecen estas memorias? yo les veo muy buena pinta... pero los timmings bufff a 533 no parecen tan atractivos como p.e. los que tengo yo 2,2,3,7, pero claro las mias van a 433 mientras estas a 533...

H, que te parecen? Almenos sobre el papel pintan bien.

ach3chin0

TaMy, a q memorias te refieres?

H

Makix

H, yo tengo mi modulo de 512drr kinsgton a 2 2 2 7 tambien lo he subido a 280mhz, crees q lo estoy forzando demasiado?
Gracias.

ach3chin0

NO, no lo creo la verdad, si funciona bien y no da problemas, entonces NO esta MUY overclocked :)

H

meGa

Donde puedo encontrar información sobre los distintos chips que lleva la RAM? Gracias y muy buen trabajo.

TrAsGu

H y entendidos en memorias

Como puedo kitar el soncrono FSB-memorias? esque el micro m va a 133 de fsb y no soy capaz de kitarle el sincronoa als memorias patra poder ponerlas a 333,es decri las tengo trabajando a 266 mientras la placa dice que SI trabaja a 333.
Probe acer un clear CMOS y nada, ni actualizando bios. Alguna idea?

14 días después
Sadik

Subiendo el VDRAM a 2.9 Voltios, estoy rulando a..
7
2
2
2

si pongo el 7 a 6, arranca windows, pero me sale un pantallazo al iniciarse ;P.

1 mes después
chris23

http://www.geekextreme.com/modules.php?name=Content&pa=showpage&pid=30
es sorprendende como no siempre los timings mas bajos son los k mas corren.

este articulo es, en concreto, sobre la placas con el nforce2.

Usuarios habituales