Artículo realizado por
Sergio Baila "Sargue"
Evolución de la memoria
Hace unos años prácticamente nadie se planteaba que tipo de memoria comprar, si la iban a cambiar en los próximos meses, si seria compatible con las siguientes placas o cuando quedaría obsoleta. Solo conocíamos la memoria DRAM y, algunos afortunados, poseían tarjetas de vídeo muy avanzadas (para la época) que venían con VRAM.
Hoy, el mercado de las memorias es tan variable como el de los microprocesadores. De hecho, estamos cambiando casi tanto de tipo de memoria como de arquitectura de procesador, intentando acompasar unos con otros. Hemos dejado atrás las velocidades de 100 ns, 80 ns e incluso los famosos 70 ns, el tipo de memoria más rápido que podíamos comprar con nuestros primeros 486.
Para entender como y porque ha evolucionado toda la tecnología referente a la memoria, entraremos un poco antes en como funciona, o funcionaba, la clásica memoria DRAM. Los siguientes tres párrafos son bastante técnicos, pero no realmente necesarios para seguir el resto del articulo, aunque si muy importantes para entender realmente los cambios producidos entre los diferentes tipos de memoria.
Puede imaginarse un modulo DRAM de memoria como una matriz o tabla. Cada una de las posiciones de la tabla estaría formada por condensadores, que son los encargados de almacenar la información, y por tanto cada una de estas posiciones podría almacenar uno o más bits, dependiendo de la configuración concreta. Cuando el microprocesador pide a la memoria el contenido de una cierta posición de memoria, unos decodificadores en el chip de memoria traducen esta dirección de memoria física a un numero de fila y un numero de columna, seleccionando de esta manera una casilla concreta de la tabla. Estos decodificadores funcionan de manera síncrona, con un reloj propio, no el del sistema. De esta manera, tenemos un reloj para el RAS (filas) y otro para el CAS (columnas).
Los condensadores tienden a perder su carga con el tiempo, y para evitar perder la información guardada en estos, el chip de memoria debe "refrescar" el contenido de los condensadores, o sea, cargar en ellos el mismo valor que tenían originalmente. El problema de esto es que se pierden algunos de los ciclos en refrescar los condensadores, momento en el cual no pueden ejecutarse operaciones de lectura o escritura en esos condensadores.
Para aclarar un poco estos dos últimos párrafos, veamos un pequeño ejemplo ilustrativo de los pasos llevados a cabo en un acceso típico a memoria. Lo primero es la generación de la petición de acceso por parte del microprocesador. La dirección de memoria correspondiente llega a los pines de dirección del chip de memoria. En este momento, a esta dirección no se le hace ningún caso, puesto que, por razones tecnológicas, todo circuito asíncrono de este tipo requiere de unos buffers a la entrada para evitar que cualquier señal que circule por el bus de direcciones se tome como un acceso o modifique un acceso en curso. Cierto tiempo después de que el micro haya hecho ya la petición, la señal de reloj del RAS (el de la fila) se activara, copiando el contenido en ese momento del bus de direcciones (la dirección que llega del microprocesador al chip de memoria) a un buffer que será el que realmente se utilice para direccionar la tabla. Una vez hecho esto, ya tenemos localizada la fila de la tabla donde tenemos la posición de memoria a la cual se quiere acceder. Toda esta fila se copia en los que se conocen como 'sense amps', un conjunto de transistores que actúan como buffers de la fila. Lo siguiente que ocurre es que se produce la señal de reloj del CAS, con lo cual se selecciona la columna pertinente de la fila que ya tenemos seleccionada, y entonces se copia ya el valor deseado desde el 'sense amp' correspondiente en un buffer de salida, que va directamente al bus de datos donde puede acceder el microprocesador.
Como hemos visto, la memoria DRAM es asíncrona, puesto que depende de unos relojes internos que nada tienen que ver con el reloj del sistema, que sincroniza el microprocesador y los buses con el resto de elementos. Todo sistema asíncrono tiene asignado unos tiempos mínimos para cada una de las operaciones internas, por lo que podemos tener en accesos diferentes, tiempos diferentes de respuesta del sistema. Esta es otra de las desventajas de estos sistemas, pues aunque acaben en medio de un ciclo su operación, hasta el siguiente ciclo no pueden empezar otra operación, dada que han de resincronizarse con el resto de componentes.
Durante largo tiempo, la gran preocupación de los fabricantes de DRAM fue incrementar su velocidad de alguna manera: sea incrementando el numero de bits que pueden tratar por acceso, paralelizando varias operaciones para minimizar el tiempo medio o eliminar algunas de las operaciones para determinados accesos. El método que parece más sencillo es el de aumentar el tamaño de la palabra (numero de bits) con el que se trabaja, pero esto requiere puertos de entrada/salida mayores, lo que se traduce en mas pines en la pastilla y aumenta por tanto el tamaño del encapsulado (cosa nada deseable). Otro problema es que a mayor numero de puertos de entrada/salida, mas corriente eléctrica circula de dentro a fuera de la pastilla, creando mas interferencias electromagnéticas con el resto de componentes, con lo que el acceso es mas lento, pues hay que esperar a que las señales se estabilicen.
Ahora que ya entendemos como funciona la DRAM, veamos que se inventaron los ingenieros para ir mejorando este diseño.
Page Mode Access
Uno de las primeras mejoras fue el Modo de Acceso por Paginas. Como su nombre indica, este modo pretende incrementar la eficiencia del acceso a paginas completas de memoria. Se consigue manteniendo fijo el valor del RAS, con lo que solo cargamos los 'sense amps' una vez, y variando posteriormente el CAS, con lo que podemos ir accediendo a todas las posiciones dentro de una misma fila mucho mas rápidamente, puesto que no hay que recargar los 'sense amps' cada vez.
Fast Page Mode (FPM)
La clave del funcionamiento de la memoria FPM es la eliminación del tiempo de preparación de la señal de la columna durante el ciclo de pagina. Esto se consigue teniendo en cuenta, como hemos visto en el Modo de Acceso por Paginas, de que mantenemos activa la señal RAS. Así, utilizamos esta señal para decodificar continuamente la señal CAS durante el acceso a la pagina. De esta manera, cuando nos viene una señal del reloj CAS, los datos pasan directos al buffer, y no hay que esperar a que se estabilice la señal, pues ya se ha estabilizado antes.
La memoria FPM se convirtió rápidamente en el estándar, y es, de hecho, la memoria que asociamos directamente con nuestras maquinas antiguas y sigue utilizándose aun. Hoy, esta memoria es la peor de todas las memorias DRAM existentes. Ningún sistema nuevo se montaría con esta memoria, a no ser que no soporte ninguna de las mas nuevas. Se sigue fabricando, pero la demanda se limita a ampliaciones de maquinas existentes, y por tanto, dada la baja demanda, el precio es muy superior a las memorias actuales mucho más rápidas.
Los tiempos típicos de esta memoria son 6-3-3-3, o sea, 3 ciclos de latencia iniciales (el RAS) y luego 3 ciclos para cada acceso.
HyperPage Mode (EDO)
La memoria EDO (Extended DataOut) represento el ultimo avance significativo en el campo de la memoria DRAM asíncrona. Su funcionamiento se basa en no desconectar los buffers de salida antes de cargar la siguiente columna. De esta forma, puede lanzarse la siguiente columna en el mismo instante que se lee el resultado de la anterior, solapando al tiempo de lectura de los datos, el de cargar de la señal CAS. El resultado es un nada despreciable aumento del 40% del tiempo de acceso. Todo esto, simplemente cambiando la lógica del circuito anterior, sin añadir nada físicamente, por lo que tenemos un chip del mismo tamaño y coste de fabricación que el anterior. La memoria EDO, aunque diseñada para trabajar a 66 MHz, puede funcionar a 83 MHz sin muchos problemas. Además, ofrece un rendimiento muy similar a la memoria SDRAM. Sin embargo, si nos vamos a los 100 MHz de bus la cosa cambia, ya que la EDO no puede mantener el ritmo.
Burst EDO (BEDO)
La memoria BEDO esconde tras de sí verdaderas intrigas políticas y económicas. Se trata de una versión mejorada de la memoria EDO, de tal forma que al recibir una posición, inmediatamente después de dar los datos de una fila y columna, internamente la memoria BEDO recoge los datos de las tres siguientes columnas, reduciendo de esta forma el tiempo necesario para acceder a datos secuencialmente (algo muy utilizado, dado que las memorias cache de segundo nivel, que son las que realmente acceden a la memoria, cuando acceden lo hacen a trozos) puesto que se evita leer cada vez el CAS nuevo. Este diseño hubiera (de haber sido construido finalmente) dado unos tiempos de 4-1-1-1 a 66 MHz.
La razón por la que esta memoria no salió de los planos de los ingenieros es que Intel no la soporto en sus chipsets, en contra de la memoria SDRAM. Parece ser que las grandes casas fabricantes de memoria llevaban muchos años investigando en la línea de la SDRAM y no querían ver como la mejora de una memoria anterior acababa con sus diseños. También es cierto que la memoria BEDO no fue diseñada para el bus a 100 MHz, pero aun así representaría una soluciona mejor y más estable a la memoria SDRAM.
Memorias síncronas
BEDO (o EDO de hecho) fueron las ultimas memorias asíncronas. A partir de ahora se trabajo solo sobre diseños de memorias síncronas. De hecho, SDRAM viene de Syncronous DRAM. La necesidad de este tipo de memorias vino de la mano de los buses de mas de 66 MHz. Con la memoria síncrona se consiguió que el procesador no tuviera que esperar a que la memoria le diera permiso para lanzarle una petición, sino que simplemente la puede lanzar en un ciclo en el que la memoria este libre, y esta, al estar sincronizada al reloj del sistema, recoge y se guarda esta información (dirección de la posición de memoria a acceder, operación a realizar, datos...), procesa el acceso y tras un numero especifico de ciclos en los que el procesador puede realizar otras tareas, los datos están disponibles.
Otra ventaja de la memoria síncrona es la eliminación de relojes internos, como los del RAS y el CAS, disminuyendo así la complejidad de la circuitería.
JEDEC SDRAM (PC66 SDRAM)
La mayoría de las memorias síncronas se las conoce como SDRAM, sin diferenciar el tipo concreto. Este tipo de memoria es bastante mas avanzado que las anteriores que hemos ido viendo. Para empezar, no funciona siempre de la misma manera, sino que tiene varios modos de funcionamiento que pueden irse cambiando durante la ejecución. Estos modos de funcionamiento determinan algunos parámetros que ahora veremos. Uno de los puntos más importantes de esta memoria es la posibilidad de trabajar a ráfagas (burst) de alta velocidad. Este resultado es algo similar a lo que se espera encontrar con la memoria BEDO, en la que la primera posición tenia la latencia del RAS, pero la siguientes posiciones se iban transmitiendo secuencialmente. Esto es mucho más importante de lo que puede parecer en un primer momento. Muchos pensareis que es difícil que el procesador necesite mas de dos o tres posiciones de memoria consecutivas en ciclos de reloj consecutivos, y es cierto en buena medida. Pero hay algo de lo que no he hablado, pero que ahora se hace necesario: las memorias cache (se pronuncia 'kach'). No voy a entrar en el funcionamiento de estas memorias, lo dejo para otro posible reportaje en el futuro, pero comentar solamente que las memorias cache son las que realmente se comunican con la memoria central, y el procesador solo se entiende con la cache. Por la manera en la que funcionan las cache, cuando se pide una posición de memoria casi siempre se pide toda la pagina, con lo que este modo acelera sobremanera los accesos. Si os fijáis, ya desde la memoria EDO se viene mejorando este punto, el del acceso secuencial. Pues esta es la razón.
Comercialmente, las memorias SDRAM se miden tanto en MHz (megahertzs) como en ns (nanosegundos). Para pasar de MHz a ns debéis dividir 1 entre los MHz. El resultado lo multiplicáis por mil. Eso os dará, por ejemplo, que un modulo SDRAM de 66 MHz corresponde a 15 ns. El mismo método funciona a la inversa, para pasar los ns a MHz. En este punto quería comentar que nos os alarméis los aun poseedores de memorias asíncronas, de 70 u 80 ns. Los ns de cada tipo de memoria no miden lo mismo. Un modulo de SDRAM de 100 MHz, que corresponde a 10 ns, puede corresponder a uno EDO de 50/60 ns.
Cuando se trata de memorias de tipo Jedec (el 99% de las actuales SDRAM) existe un limite teórico de unos 133 MHz, por lo que actualmente compiten varios estándares para lo que será la próxima generación de memorias.
DDR SDRAM
La DDR SDRAM (Double Data Rate SDRAM) es una mejora de la SDRAM tipo Jedec convencional. En vez de limitarse a utilizar solo los flancos ascendentes del reloj, utiliza ambos. Con esta medida, tan simple al parecer, consigue duplicar la velocidad de operación hasta los 200 MHz. Sin embargo las dificultades tecnológicas inherentes a este hecho no son, desde luego, triviales.
Existen actualmente placas Socket 7 con soporte para este tipo de memoria, pese a que aun no se fabrica esta memoria en masa.
Enhanced SDRAM
Este tipo de memoria es también, como su nombre indica, una mejora sobre la SDRAM convencional. La idea es integrar una pequeña cache de memoria SRAM en el propio chip. Puede parecer redundante dado que para tal tarea ya esta la cache de segundo nivel del microprocesador, pero no lo parece tanto cuando nos damos cuenta que el hecho de residir en el propio chip elimina la limitación de trabajar con un bus de tamaño reducido, como 32 o 64 bits, pudiendo elevar este numero hasta los 256 o más bits.
Memorias basadas en protocolo
Hasta ahora, todas las memorias que hemos ido viendo tenían líneas separadas para los datos, las direcciones y el control. Esto introduce una limitación técnica que solo puede eliminarse de una forma: combinando toda la información por un solo bus, con lo que aparece la necesidad de definir un protocolo para interpretar correctamente la información en ambos extremos. De esta idea nacen dos propuestas: SLDRAM (SyncLink DRAM) y DRDRAM (Direct Rambus DRAM).
Direct Rambus DRAM
Lo primero que hay que señalar es que Intel ha puesto su dinero en esta memoria, por lo que lo más probable es que, como siempre, tengamos que tragárnosla aunque no sea (ni es) la mejor solución.
A primera vista la cosa promete. La memoria DRDRAM puede llegar a 800 MHz. Sin embargo, el siguiente dato es desalentador. El tamaño del bus es de solo 16 bits, frente a los actuales 64, con lo que el aumento real queda limitado al doble de velocidad. Además, la latencia efectiva de esta memoria puede llegar a ser mayor (lo cual es peor) que las memorias SDRAM actuales más rápidas. Este dato es muy negativo, aunque para entenderlo es necesario un articulo completo, que estamos preparando.
Y por si todo esto no fuera poco, esta tecnología es propietaria, por lo que cualquiera que desee producir memoria de este tipo deberá pagar unos royalties a RamBus e Intel.
SLDRAM
Para combatir al estándar RDRAM de Intel/Rambus, los principales fabricantes de memoria se han unido y el fruto se llama SLDRAM, un estándar de industria abierto, por lo que nadie tiene que pagar royalties.
El hecho de ser una memoria basada en protocolo, empaquetando en un mismo bus las señales de control, datos y direcciones, esta memoria puede funcionar sobre buses de hasta 200 MHz. Además, y al igual que la DDR SDRAM, puede funcionar al doble de reloj utilizando los dos flancos del reloj. Algunos ingenieros son del parecer que podrán alcanzarse en poco tiempo los 800 MHz.
Comparada con la memoria DRDRAM parece una solución mejor en todos los aspectos. Menor velocidad de reloj para conseguir la misma velocidad (menos interferencias), latencia menor y coste de fabricación menor, al no haber de pagar royalties. Incluso el ancho de banda, el principal argumento de la DRDRAM cae ante la SLDRAM: 3'2 GB/s frente a 1'6 GB/s.
ÚLTIMA REVISIÓN EN FEBRERO DE 1999