Geeksoup
Geeksoup blog

Tus colegitas de silicio: Latencias de memoria RAM.

Bueno… El título del post es mitad parida mitad tributo a «un colegita» nuestro, pero aun así suena mejor que el título original que era «Conoce tu ordenador» que la verdad, sonaba a anuncio de compresas cutre…

ordenadorlol

No... Definitivamente el nombre no le pegaba...

El post es una síntesis de otro que escribí hace algún tiempo para un foro de unos amigos, donde un compañero se quejaba de que siempre que hablabamos sobre RAM’s hacíamos referencia a las latencias, y que no sabía que representaban estas y he pensado que como primer post, estaría bien, para además empezar una pequeña sección donde ir explicando de manera sencilla, pero profunda como funciona cada cosa.  Aclarar también que ni soy informático profesional, ni busco explicar las cosas con total precisión, prefiero explicarlas para que se entiendan, pero que si ves algún error grave o alguna imprecisión, escribe un comentario o mandamela por correo y lo corregiré.

Sin más dilación empezamos, la memoria RAM es un elemento bastante necesario en nuestra sociedad informática (xD) ya que todos sabeis que hay se cargan los datos de los programas, y esta la pila y montones de cosas divertidas

Cuando vas a la tienda a preguntar por unas RAM casi siempre te fijas en una sola característica, la capacidad que tienen, podemos almacenar muchísimas cosas en 2 gigas de RAM, sin embargo, si a la hora de acceder a la información, la memoria es terríblemente lenta, posiblemente no obtengamos un rendimiento muy bueno… Las memorias RAM tienen 4 valores básicos, que nos explican los tiempos que tardan en acceder a la información, las laténcias. Normalmente suelen venir agrupadas en forma 8-8-8-249-9-9-24.

Bien, conozcamos un poco más sobre la memoria RAM y como se organiza…

La memoria RAM son una zona basta y extensa de memoria, que se ordenan en pequeños bloques de una palabra. El tamaño de la palabra varia segun cada ordenador, si nuestro procesador es de 32 bits el tamaño de esta palabra es de 32 bits, si es de 64, el tamaño de la palabra es de 64 bits, al fin y al cabo, si que es importante esto de los 64 bits… Bien, una vez dicho esto, la memoria se divide en bloques o palabras, pero estas a su vez, se ordenan como si fuera una tabla, con filas y columnas.

ram1

Pero claro, la memoria es muuuucho más grande que eso, asique, estas tablas deben ser enormes, y cuanto más grande es una tabla, más dificil es buscar datos en ella, asique estas tablas se dividen en otras más pequeñas conocidas como bloques o bancos (en ingles: Banks).

ram2

Pues bien, supongamos que ahora mi programa quiere leer los datos que hay en la dirección de memoria 0x16… El procesador leer la orden, la manda al chipset pasa por el NorthBridge y tal hasta que llega a donde nosotros queremos, la memoria RAM.

Una vez que esta en la memoria, a esta le llega la petición de lectura y entra e juego el circuito de la memoria RAM, lo primero que hace esta es buscar en que banco se encuentra la direccion 0x16, una vez localizado, manda una señal conocida como «Active» para indicar que ese bloque esta sufriendo una operación de lectura y que no se puede usar por ninguna otra aplicación. Despues, sigue con su busqueda una vez dentro del bloque, primero busca la fila en la que se encuentra, en nuestro caso busca la columna 0x1 ya que hay se encuentran todas las memorias con rango de 10 a 19. Una vez que tiene localizado la columna, busca la fila necesaria, la 6 en nuestro caso, y una vez echo esto, ya ha encontrado la posición que buscabamos (la 0x16).
Una vez echo esto, el banco se libera para que se puedan ejecutar otras acciones sobre el, mandando una señal «precharge»…

Lo que más o menos nos da una idea de los pasos necesarios para buscar una dirección especifica:
~!> Identificar el banco y bloquearlo.
~!> Buscar la fila.
~!> Buscar la columna.
~!> Cerrar el banco.

Que casualidad! Las latencias de una memoria son 4 valores… y como posiblemente tu mente haya deducido, los valores de las latencias se corresponden al tiempo que se tardan en ejecutar estas cosas… Dicho tiempo viene medido en ciclos de reloj.

Por eso, unas memorias con baja latencia nos daran un mayor rendimiento en nuestro sistema, ya que se tarda menos tiempo en localizar el/los bloques de memoria que buscamos. Por supuesto, un archivo puede ocupar más de uno de estos bloques, teniendo en cuenta que cualquier fichero de texto te ocupa unos 15 Kb (unos 15000 bytes * 8 = 120000 bits) la cantidad de 64 bits (o de 32 depende del procesador que usemos…) se queda bastante ridícula… xD

Un dato a añadir, los ciclos de reloj a los que hacen referencia estas latencias no son los de nuestro procesador, sino los de nuestras memorias… Es decir, que aunque veamos que DDR3 tiene unos tiempos en ciclos mucho mayores (por ejemplo la operación de cerrar el banco se chupa 24) tienen una mayor frecuencia, es decir, en un segundo hacen muchas más operaciones.

Mientras unas DDR2 a 800Mhz hacen 800 Millones de ciclos por segundo, las DDR3 hacen 1300 millones de operaciones por segundo (a 1,3Ghz exactamente) por lo que aunque use más ciclos, el tiempo REAL (es decir, en segundos) es bastante menor…

Conclusión: Como ya he dicho en unas ocasiones, todo depende de todo, y el hecho de tener un procesador con muchichichisimos Gigas y muchos nucleos no sirve de nada practicamente si tienes que esperar mucho rato para acceder a la memoria y dado que todas las cosas se guardan en tiempo de ejecución en la memoria, es bastante importante tener una memoria rápida…

Bueno, espero que os haya gustado, lo dicho, si veis algun error grave y tal, pues comentadlo, y si os ha gustado, comentadlo también que carajo! Que como dice charly, comentad que es de bien nacidos.

Nos vemos! ^^

4 respuestas to “Tus colegitas de silicio: Latencias de memoria RAM.”

  1. Gran articulo, me ha sido bastante ilustrativo, espero con ansias tu siguiente escrito ^^.
    La verdad que mucha gente se «ansia» con ordenadores don 41231 nucleos, 2341234 gigas de ram, y gráficas de 3141324235 megas pero no se dan cuenta que la memoria ram es lo que mas limita la velocidad de nuestro ordenador entre otros factores, me equivoco Arqeek?

    Un saludo! Soperos!

  2. Hay muchos más elementos que provocan cuellos de botella en nuestros ordenadores, por ejemplo, la lectura en dispositivos físicos (HD y CD/DVD) pero las memorias ram suelen ser uno de los que más influyen en el rendimiento del sistema. Además corre por hay la leyenda de que cuanta más capacidad tengan las memorias, más rapido ira tu PC, y esto depende más de las latencias y las frecuencias de trabajo.
    También es verdad lo que dices que la gente se ansia, y en parte escribí el articulo un poco para intentar derribar el «culto a los grandes números». Por ejemplo, las latencias, cuanto más bajas, mejor 😉

    Nos vemos! ^^

  3. Un placer aprender algo de informática contigo arqeek xD la verdad que me das un poco de miedo cuando empiezas a hablar de cosas raras como estas pero por lo menos me cosco de algo y pierdo 10 minutos de mi vida leyendo xDD Enga frikazos no dejeis tirao esto como otros tantos blogs, a ver si os haceis famosos xD


Deja un comentario