Memoria de acceso aleatorio

La memoria de acceso aleatorio (random-access memory, RAM) es una memoria de almacenaje a corto plazo. El sistema operativo de ordenadores u otros dispositivos utiliza la memoria RAM para guardar de forma temporal todos los programas y sus procesos de ejecución. En la RAM se cargan todas las instrucciones que ejecuta la unidad central de procesamiento (CPU) y otras unidades del ordenador, además de contener los datos que manipulan los distintos programas.

Se llama «de acceso aleatorio» porque se puede leer o escribir en una posición de memoria con igual tiempo de espera para cualquier posición, no requiriendo un orden para acceder (acceso secuencial) a la información de la manera más rápida posible.

Durante el encendido de la computadora, la rutina POST verifica que los módulos de RAM estén bien conectados. En el caso de que no existan o no se los detecte, la mayoría de las placas base emiten sonidos que indican la ausencia de la memoria principal. Terminado ese proceso, la memoria BIOS puede realizar un test básico de la RAM indicando fallos mayores en ella.

Historia 

Uno de los primeros tipos de memoria RAM fue la memoria de núcleo magnético, desarrollada entre 1949 y 1952 y usada en muchos computadores hasta el desarrollo de circuitos integrados a finales de los años 60 y principios de los 70. Esa memoria requería que cada bit estuviera almacenado en un toroide de material ferromagnético de algunos milímetros de diámetro, lo que resultaba en dispositivos con una capacidad de memoria muy pequeña. Antes que eso, las computadoras usaban relés y líneas de retardo de varios tipos construidas para implementar las funciones de memoria principal con o sin acceso aleatorio.

En 1969 fueron lanzadas una de las primeras memorias RAM basadas en semiconductores de silicio por parte de Intel con el integrado 3101 de 64 bits de memoria y para el siguiente año se presentó una memoria DRAM de 1024 bits, referencia 1103 que se constituyó en un hito, ya que fue la primera en ser comercializada con éxito, lo que significó el principio del fin para las memorias de núcleo magnético. En comparación con los integrados de memoria DRAM actuales, la 1103 es primitiva en varios aspectos, pero tenía un desempeño mayor que la memoria de núcleos.

En 1973 se presentó una innovación que permitió otra miniaturización y se convirtió en estándar para las memorias DRAM: la multiplexación en tiempo de la direcciones de memoria. MOSTEK lanzó la referencia MK4096 de 4096 bytes en un empaque de 16 pines, mientras sus competidores las fabricaban en el empaque DIP de 22 pines. El esquema de direccionamiento se convirtió en un estándar de facto debido a la gran popularidad que logró esta referencia de DRAM.
Para finales de los 70 los integrados eran usados en la mayoría de computadores nuevos, se soldaban directamente a las placas base o se instalaban en zócalos, de modo que ocupaban un área extensa de circuito impreso. Luego se hizo obvio que instalar la RAM en el impreso principal impedía miniaturizar, entonces se idearon los primeros módulos de memoria como el SIPP, usando las ventajas de la construcción modular. El formato SIMM fue una mejora al anterior. Eliminó los pines metálicos y dejó áreas de cobre en uno de los bordes del impreso, muy similares a los de las tarjetas de expansión, de hecho los módulos SIPP y los primeros SIMM tienen igual distribución de pines.

A fines de los 80 el aumento de velocidad de los procesadores y el aumento en el ancho de banda requerido, dejaron atrás a las memorias DRAM con el esquema original MOSTEK, de manera que se realizaron mejoras en el direccionamiento como las siguientes:

FPM RAM 
Fast Page Mode RAM (FPM-RAM) fue inspirado en técnicas como el Burst Mode usado en procesadores como el Intel 486. Se implantó un modo direccionador en el que el controlador de memoria envía una sola dirección y recibe a cambio esa y varias consecutivas sin necesidad de generar todas. Esto ahorra tiempos, ya que ciertas operaciones son repetitivas al querer acceder a muchas posiciones seguidas. Es como si deseáramos visitar todas las casas en una calle: tras la primera vez no sería necesario decir el número de la calle, sini sólo seguir la misma. Se fabricaban con tiempos de acceso de 70 o 60 ns y fueron muy populares en sistemas basados en el 486 y primeros Pentium.

EDO RAM 
Extended Data Output RAM (EDO-RAM) fue lanzada al mercado en 1994 y con tiempos de accesos de 40 o 30 ns suponía una mejora sobre FPM, su antecesora. La EDO, también es capaz de enviar direcciones contiguas pero direcciona la columna que va a utilizar mientras se lee la información de la columna anterior, resultando en eliminar estados de espera manteniendo activo el búfer de salida hasta que comienza el próximo ciclo de lectura.

BEDO RAM 
Burst Extended Data Output RAM (BEDO-RAM) fue la evolución de la EDO-RAM y competidora de la SDRAM, fue presentada en 1997. Era un tipo de memoria que usaba generadores internos de direcciones y accedía a más de una posición de memoria en cada ciclo de reloj, de manera que lograba un 50 % de beneficios, mejor que la EDO. No se comerció, pues Intel y otros fabricantes se decidieron por esquemas de memoria síncronos que si bien tenían mucho del direccionamiento MOSTEK, sumaban funciones distintas como señales de reloj, entre otras.

Tipos de RAM 

Las dos formas principales de RAM moderna son:
 SRAM (Static Random Access Memory), RAM estática, memoria estática de acceso aleatorio.
 volátiles.
 no volátiles:
 NVRAM (non-volatile random access memory), memoria de acceso aleatorio no volátil
 MRAM (magnetoresistive random-access memory), memoria de acceso aleatorio magnetorresistiva o magnética
 DRAM (Dynamic Random Access Memory), RAM dinámica, memoria dinámica de acceso aleatorio.
 DRAM Asincrónica (Asynchronous Dynamic Random Access Memory), memoria de acceso aleatorio dinámica asincrónica.
 FPM RAM (Fast Page Mode RAM)
 EDO RAM (Extended Data Output RAM)
 SDRAM (Synchronous Dynamic Random-Access Memory), memoria de acceso aleatorio dinámica sincrónica
 Rambus:
 RDRAM (Rambus Dynamic Random Access Memory)
 XDR DRAM (eXtreme Data Rate Dynamic Random Access Memory)
 XDR2 DRAM (eXtreme Data Rate two Dynamic Random Access Memory)
 SDR SDRAM (Single Data Rate Synchronous Dynamic Random-Access Memory, SDRAM de tasa de datos simple)
 DDR SDRAM (Double Data Rate Synchronous Dynamic Random-Access Memory, SDRAM de tasa de datos doble)
 DDR2 SDRAM (Double Data Rate type two SDRAM, SDRAM de tasa de datos doble de tipo dos)
 DDR3 SDRAM (Double Data Rate type three SDRAM, SDRAM de tasa de datos doble de tipo tres)
 DDR4 SDRAM (Double Data Rate type four SDRAM, SDRAM de tasa de datos doble de tipo cuatro).
 DDR5 SDRAM (Double Data Rate type five SDRAM, SDRAM de tasa de datos doble de tipo cinco).

Nomenclatura 

La expresión memoria RAM se utiliza frecuentemente para describir a los módulos de memoria utilizados en las computadoras personales y servidores.

La RAM es solo una variedad de la memoria de acceso aleatorio: las ROM, memorias Flash, caché (SRAM), los registros en procesadores y otras unidades de procesamiento también poseen la cualidad de presentar retardos de acceso iguales para cualquier posición.

Los módulos de RAM son la presentación comercial de este tipo de memoria, que se compone de circuitos integrados soldados sobre un circuito impreso independiente, en otros dispositivos como las consolas de videojuegos, la RAM va soldada directamente sobre la placa principal.

Módulos de RAM 

Los módulos de RAM son tarjetas o placas de circuito impreso que tienen soldados chips de memoria DRAM, por una o ambas caras.

La implementación DRAM se basa en una topología de circuito eléctrico que permite alcanzar densidades altas de memoria por cantidad de transistores, logrando integrados de cientos o miles de megabits. Además de DRAM, los módulos poseen un integrado que permiten la identificación de los mismos ante la computadora por medio del protocolo de comunicación Serial Presence Detect (SPD).

La conexión con los demás componentes se realiza por medio de un área de pines en uno de los filos del circuito impreso, que permiten que el módulo al ser instalado en un zócalo o ranura apropiada de la placa base, tenga buen contacto eléctrico con los controladores de memoria y las fuentes de alimentación.

La necesidad de hacer intercambiable los módulos, y de utilizar integrados de distintos fabricantes, condujo al establecimiento de estándares de la industria como los Joint Electron Device Engineering Council (JEDEC).

 Paquete DIP (Dual In-line Package, paquete de pines en-línea doble).
 Paquete SIPP (Single In-line Pin Package, paquete de pines en-línea simple): fueron los primeros módulos comerciales de memoria, de formato propietario, es decir, no había un estándar entre distintas marcas.
 Módulos RIMM (Rambus In-line Memory Module, módulo de memoria en-línea rambus): Fueron otros módulos propietarios bastante conocidos, ideados por la empresa RAMBUS.
 Módulos SIMM (Single In-line Memory Module, módulo de memoria en-línea simple): formato usado en computadoras antiguas. Tenían un bus de datos de 16 o 32 bits.
 Módulos DIMM (Dual In-line Memory Module, módulo de memoria en-línea dual): usado en computadoras de escritorio. Se caracterizan por tener un bus de datos de 64 bits.
 Módulos SO-DIMM (Small Outline DIMM): usado en computadoras portátiles. Formato miniaturizado de DIMM.
 Módulos FB-DIMM (Fully-Buffered Dual Inline Memory Module): usado en servidores.

Tecnologías de memoria 

La tecnología de memoria actual usa una señal de sincronización para realizar las funciones de lectura/escritura de manera que siempre está sincronizada con un reloj del bus de memoria, a diferencia de las antiguas memorias FPM y EDO que eran asíncronas.

Toda la industria se decantó por las tecnologías síncronasjhguosuydfhgus, porque permiten construir integrados que funcionen a una frecuencia superior a 66 MHz.

Tipos de DIMM según su cantidad de contactos o pines:

SDR SDRAM 

Memoria síncrona, con tiempos de acceso de entre 25 y 10 ns y que se presentan en módulos DIMM de 168 contactos. Fue utilizada en los Pentium II y en los Pentium III, así como en los AMD K6, AMD Athlon K7 y Duron.
Está muy extendida la creencia de que se llama SDRAM a secas, y que la denominación SDR SDRAM es para diferenciarla de la memoria DDR, pero no es así, simplemente se extendió muy rápido la denominación incorrecta. El nombre correcto es SDR SDRAM ya que ambas (tanto la SDR como la DDR) son memorias síncronas dinámicas. Los tipos disponibles son:
 PC66: SDR SDRAM, funciona a un máx de 66,6 MHz.
 PC100: SDR SDRAM, funciona a un máx de 100 MHz.
 PC133: SDR SDRAM, funciona a un máx de 133,3 MHz.

RDRAM 

Se presentan en módulos RIMM de 184 contactos. Fue utilizada en los Pentium 4.
Era la memoria más rápida en su tiempo, pero por su elevado costo fue rápidamente cambiada por la económica DDR.
Los tipos disponibles son:
 PC600: RIMM RDRAM, funciona a un máximo de 300 MHz.
 PC700: RIMM RDRAM, funciona a un máximo de 350 MHz.
 PC800: RIMM RDRAM, funciona a un máximo de 400 MHz.
 PC1066: RIMM RDRAM, funciona a un máximo de 533 MHz.
 PC1200: RIMM RDRAM, funciona a un máximo de 600 MHz.

DDR SDRAM 

Memoria síncrona, envía los datos dos veces por cada ciclo de reloj. De este modo trabaja al doble de velocidad del bus del sistema, sin necesidad de aumentar la frecuencia de reloj. Se presenta en módulos DIMM de 184 contactos en el caso de ordenador de escritorio y en módulos de 144 contactos para los ordenadores portátiles.

La nomenclatura utilizada para definir a los módulos de memoria de tipo DDR (esto incluye a los formatos DDR2, DDR3 y DDR4) es la siguiente: DDRx-yyyy PCx-zzzz; donde x representa a la generación DDR en cuestión; yyyy la frecuencia aparente o efectiva, en Megaciclos por segundo (MHz); y zzzz la máxima tasa de transferencia de datos por segundo, en Megabytes, que se puede lograr entre el módulo de memoria y el controlador de memoria. La tasa de transferencia depende de dos factores, el ancho de bus de datos (por lo general 64 bits) y la frecuencia aparente o efectiva de trabajo. La fórmula que se utiliza para calcular la máxima tasa de transferencia por segundo entre el módulo de memoria y su controlador, es la siguiente:

Tasa de transferencia en MB/s = (Frecuencia DDR efectiva) × (64 bits / 8 bits por cada byte)

Por ejemplo:

1 GB DDR-400 PC-3200: Representa un módulo de 1 GB (Gigabyte) de tipo DDR; con frecuencia aparente o efectiva de trabajo de 400 MHz; y una tasa de transferencia de datos máxima de 3200 MB/s.

4 GB DDR3-2133 PC3-17000: Representa un módulo de 4 GB de tipo DDR3; frecuencia aparente o efectiva de trabajo de 2133 MHz; y una tasa de transferencia de datos máxima de 17000 MB/s.

Los tipos disponibles son:
 PC1600 o DDR 200: funciona a un máx de 200 MHz.
 PC2100 o DDR 266: funciona a un máx de 266,6 MHz.
 PC2700 o DDR 333: funciona a un máx de 333,3 MHz.
 PC3200 o DDR 400: funciona a un máx de 400 MHz.
 PC3500 o DDR 433 funciona a un máx de 433 MHz.
 PC4500 o DDR 500: funciona a una máx de 500 MHz.

DDR2 SDRAM 

Las memorias DDR 2 son una mejora de las memorias DDR (Double Data Rate), que permiten que los búferes de entrada/salida trabajen al doble de la frecuencia del núcleo, permitiendo que durante cada ciclo de reloj se realicen cuatro transferencias. Se presentan en módulos DIMM de 240 contactos. Los tipos disponibles son:
 PC2-3200 o DDR2-400: funciona a un máx de 400 MHz.
 PC2-4200 o DDR2-533: funciona a un máx de 533,3 MHz.
 PC2-5300 o DDR2-667: funciona a un máx de 666,6 MHz.
 PC2-6400 o DDR2-800: funciona a un máx de 800 MHz.
 PC2-8600 o DDR2-1066: funciona a un máx de 1066,6 MHz.
 PC2-9000 o DDR2-1200: funciona a un máx de 1200 MHz.

DDR3 SDRAM 

Las memorias DDR 3 son una mejora de las memorias DDR 2, proporcionan significantes mejoras en el rendimiento en niveles de bajo voltaje, lo que lleva consigo una disminución del gasto global de consumo. Los módulos DIMM DDR 3 tienen 240 pines, el mismo número que DDR 2; sin embargo, los DIMMs son físicamente incompatibles, debido a una ubicación diferente de la muesca. Los tipos disponibles son:
 PC3-6400 o DDR3-800: funciona a un máx de 800 MHz.
 PC3-8500 o DDR3-1066: funciona a un máx de 1066,6 MHz.
 PC3-10600 o DDR3-1333: funciona a un máx de 1333,3 MHz.
 PC3-12800 o DDR3-1600: funciona a un máx de 1600 MHz.
 PC3-14900 o DDR3-1866: funciona a un máx de 1866,6 MHz.
 PC3-17000 o DDR3-2133: funciona a un máx de 2133,3 MHz.
 PC3-19200 o DDR3-2400: funciona a un máx de 2400 MHz.
 PC3-21300 o DDR3-2666: funciona a un máx de 2666,6 MHz.

DDR4 SDRAM 

 PC4-1600 o DDR4-1600: funciona a un máx de 1600 MHz.
 PC4-1866 o DDR4-1866: funciona a un máx de 1866,6 MHz.
 PC4-17000 o DDR4-2133: funciona a un máx de 2133,3 MHz.
 PC4-19200 o DDR4-2400: funciona a un máx de 2400 MHz.
 PC4-25600 o DDR4-2666: funciona a un máx de 2666,6 MHz.

Relación con el resto del sistema 

Dentro de la jerarquía de memoria, la RAM se encuentra en un nivel después de los registros del procesador y de las cachés en cuanto a velocidad.

Los módulos de RAM se conectan eléctricamente a un controlador de memoria que gestiona las señales entrantes y salientes de los integrados DRAM. Las señales son de tres tipos: direccionamiento, datos y señales de control. En el módulo de memoria esas señales están divididas en dos buses y un conjunto misceláneo de líneas de control y alimentación. Entre todas forman el bus de memoria que conecta la RAM con su controlador:
 Bus de datos: son las líneas que llevan información entre los integrados y el controlador. Por lo general, están agrupados en octetos siendo de 8, 16, 32 y 64 bits, cantidad que debe igualar el ancho del bus de datos del procesador. En el pasado, algunos formatos de módulo, no tenían un ancho de bus igual al del procesador. En ese caso había que montar módulos en pares o en situaciones extremas, de a 4 módulos, para completar lo que se denominaba banco de memoria, de otro modo el sistema no funciona. Esa fue la principal razón para aumentar el número de pines en los módulos, igualando al ancho de bus de procesadores como el Pentium a 64 bits, a principios de los años 1990.
 Bus de direcciones: es un bus en el cual se colocan las direcciones de memoria a las que se requiere acceder. No es igual al bus de direcciones del resto del sistema, ya que está multiplexado de manera que la dirección se envía en dos etapas. Para ello, el controlador realiza temporizaciones y usa las líneas de control. En cada estándar de módulo se establece un tamaño máximo en bits de este bus, estableciendo un límite teórico de la capacidad máxima por módulo.
 Señales misceláneas: entre las que están las de la alimentación (Vdd, Vss) que se encargan de entregar potencia a los integrados. Están las líneas de comunicación para el integrado de presencia (Serial Presence Detect) que sirve para identificar cada módulo. Están las líneas de control entre las que se encuentran las llamadas RAS (Row Address Strobe) y CAS (Column Address Strobe) que controlan el bus de direcciones, por último están las señales de reloj en las memorias sincrónicas SDRAM.
Algunos controladores de memoria en sistemas como PC y servidores se encuentran embebidos en el llamado puente norte (North Bridge) de la placa base. Otros sistemas incluyen el controlador dentro del mismo procesador (en el caso de los procesadores desde AMD Athlon 64 e Intel Core i7 y posteriores). En la mayoría de los casos el tipo de memoria que puede manejar el sistema está limitado por los sockets para RAM instalados en la placa base, a pesar de que los controladores de memoria en muchos casos son capaces de conectarse con tecnologías de memoria distintas.

Una característica especial de algunos controladores de memoria, es el manejo de la tecnología canal doble o doble canal (Dual Channel), donde el controlador maneja bancos de memoria de 128 bits, siendo capaz de entregar los datos de manera intercalada, optando por uno u otro canal, reduciendo las latencias vistas por el procesador. La mejora en el desempeño es variable y depende de la configuración y uso del equipo. Esta característica ha promovido la modificación de los controladores de memoria, resultando en la aparición de nuevos chipsets (la serie 865 y 875 de Intel) o de nuevos zócalos de procesador en los AMD (el 939 con canal doble, reemplazo el 754 de canal sencillo). Los equipos de gamas media y alta por lo general se fabrican basados en chipsets o zócalos que soportan doble canal o superior, como en el caso del zócalo (socket) 1366 de Intel, que usaba un triple canal de memoria, o su nuevo LGA 2011 que usa cuádruple canal.

Detección y corrección de errores 

Existen dos clases de errores en los sistemas de memoria, los fallos (Hard fails) que son daños en el hardware y los errores (soft errors) provocados por causas fortuitas. Los primeros son relativamente fáciles de detectar (en algunas condiciones el diagnóstico es equivocado), los segundos al ser resultado de eventos aleatorios, son más difíciles de hallar.
En la actualidad la confiabilidad de las memorias RAM frente a los errores, es suficientemente alta como para no realizar verificación sobre los datos almacenados, por lo menos para aplicaciones de oficina y caseras. En los usos más críticos, se aplican técnicas de corrección y detección de errores basadas en diferentes estrategias:
 La técnica del bit de paridad consiste en guardar un bit adicional por cada byte de datos y en la lectura se comprueba si el número de unos es par (“paridad par”) o impar (“paridad impar”), detectándose así el error.
 Una técnica mejor es la que usa “código de autochequeo y autocorrector” (error-correcting code, ECC), que permite detectar errores de 1 a 4 bits y corregir errores que afecten a un solo bit. Esta técnica se usa solo en sistemas que requieren alta fiabilidad.

Por lo general, los sistemas con cualquier tipo de protección contra errores tiene un coste más alto, y sufren de pequeñas penalizaciones en desempeño, con respecto a los sistemas sin protección. Para tener un sistema con ECC o paridad, el chipset y las memorias deben tener soporte para esas tecnologías. La mayoría de placas base no poseen dicho soporte.

Para los fallos de memoria se pueden utilizar herramientas de software especializadas que realizan pruebas sobre los módulos de memoria RAM. Entre estos programas uno de los más conocidos es la aplicación Memtest86+ que detecta fallos de memoria.

RAM registrada 

Es un tipo de módulo usado frecuentemente en servidores, posee circuitos integrados que se encargan de repetir las señales de control y direcciones: las señales de reloj son reconstruidas con ayuda del PLL que está ubicado en el módulo mismo. Las señales de datos se conectan de la misma forma que en los módulos no registrados: de manera directa entre los integrados de memoria y el controlador.
Los sistemas con memoria registrada permiten conectar más módulos de memoria y de una capacidad más alta, sin que haya perturbaciones en las señales del controlador de memoria, permitiendo el manejo de grandes cantidades de memoria RAM. Entre las desventajas de los sistemas de memoria registrada están el hecho de que se agrega un ciclo de retardo para cada solicitud de acceso a una posición no consecutiva y un precio más alto que los módulos no registrados.
La memoria registrada es incompatible con los controladores de memoria que no soportan el modo registrado, a pesar de que se pueden instalar físicamente en el zócalo. Se pueden reconocer visualmente porque tienen un integrado mediano, cerca del centro geométrico del circuito impreso, además de que estos módulos suelen ser algo más altos.

Durante el año 2006 varias marcas lanzaron al mercado sistemas con memoria FB-DIMM que en su momento se pensaron como los sucesores de la memoria registrada, pero se abandonó esa tecnología en 2007 dado que ofrecía pocas ventajas sobre el diseño tradicional de memoria registrada y los nuevos modelos con memoria DDR3.

Véase también

Referencias 

Memorias volátiles