Actualizado a: 22 de enero de 2024
La memoria RAM es un componente esencial para el funcionamiento de los actuales ordenadores. Gracias a ella se pueden cargar procesos o programas en ella para que la CPU pueda procesarlos más rápidamente. Sin embargo, aún sigue siendo una desconocida para muchos usuarios, por eso aquí te explicamos todo lo que deberías saber.
También te puede interesar conocer:
- Los mejores módulos de memoria RAM
- Cuánta memoria RAM necesito
- RAM Timming: todo lo que debes saber
- Mezclar diferentes módulos de RAM: ¿es posible?
¿Qué es la memoria RAM o memoria principal?
La memoria RAM (Random Access Memory), o memoria de acceso aleatorio, es una forma ampliamente conocida de almacenamiento primario y rápido de un ordenador, frente a la memoria de almacenamiento masivo o secundaria, como son los HDDs, SSDs, etc. Es lo que permite a un ordenador realizar tareas como navegar por Internet y cambiar rápidamente entre aplicaciones o documentos. La RAM se llama «acceso aleatorio» porque puede acceder a cualquier ubicación de memoria directamente si se especifica la fila y la columna correspondientes a esa ubicación.
La RAM funciona como la memoria de corto plazo del sistema, y es de tipo volátil, por lo que cuando se deja de suministrar energía la memoria dejará de retener los datos. Al igual que un microprocesador, un chip de memoria está compuesto por millones de transistores y condensadores integrados en un circuito integrado (CI) o chip. En la forma más común de RAM, llamada memoria dinámica de acceso aleatorio (DRAM), un transistor y un condensador se combinan para formar una celda de memoria que representa un solo bit de datos. El capacitor almacena la información, que puede ser un 0 o un 1, mientras que el transistor actúa como un interruptor que permite que el circuito de control del chip de memoria lea el capacitor o modifique su estado.
Un condensador es similar a un pequeño depósito que puede almacenar electrones. Para representar un valor de 1 en una celda de memoria, el cubo se carga con electrones, mientras que para un valor de 0, se descarga. Sin embargo, el condensador presenta un problema: tiene una fuga. En cuestión de milisegundos, el cubo se descarga por completo. Por lo tanto, para que la memoria dinámica funcione correctamente, es necesario que la CPU o el controlador de memoria recarguen constantemente todos los condensadores que almacenan un 1 antes de que se descarguen. Para lograr esto, el controlador de memoria lee el contenido de la memoria y luego lo vuelve a escribir. Este proceso de actualización se realiza automáticamente miles de veces por segundo.
El condensador en una celda de memoria RAM dinámica se comporta como un depósito con fugas. Requiere actualizaciones periódicas o se descargará a un valor de 0. A este ciclo se le conoce como refresh. Es por esta necesidad de actualización constante que se le otorga el nombre de RAM dinámica. La RAM dinámica debe ser actualizada de manera dinámica y constante, de lo contrario, perderá la información que almacena. No obstante, una desventaja de esta constante actualización es que requiere tiempo y ralentiza el rendimiento de la memoria.
Celdas de memoria DRAM
La memoria está compuesta por bits organizados en una cuadrícula bidimensional. En esta representación, las celdas de color rojo indican un valor de 1, mientras que las celdas blancas representan un valor de 0. En la animación, se elige una columna y luego se cargan las filas correspondientes para escribir datos en esa columna específica.
Las celdas de memoria se graban en una placa de silicio en una matriz de columnas (líneas de bits) y filas (líneas de palabras). La intersección entre una línea de bits y una línea de palabras determina la dirección de una celda de memoria.
La DRAM (Dynamic RAM) funciona enviando una carga a través de la columna correspondiente (CAS) para activar el transistor en cada bit de la columna. Durante la escritura, las líneas de fila contienen el estado que se debe almacenar en el condensador. Durante la lectura, el amplificador de sentido determina el nivel de carga en el condensador. Si supera el 50 por ciento, se lee como un 1; de lo contrario, se interpreta como un 0. Un contador realiza un seguimiento de la secuencia de actualización basándose en las filas a las que se ha accedido y en qué orden. Todo este proceso se lleva a cabo en un tiempo tan corto que se mide en nanosegundos (mil millonésimas de segundo). Un chip de memoria clasificado como 70 ns significa que se requieren 70 nanosegundos para leer y recargar completamente cada celda.
Las celdas de memoria por sí solas serían inútiles sin algún medio para ingresar y extraer información de ellas. Por lo tanto, las celdas de memoria cuentan con toda una infraestructura de circuitos especializados de soporte. Estos circuitos desempeñan funciones tales como:
- Identificación de cada fila y columna (selección de dirección de fila y selección de dirección de columna)
- Seguimiento de la secuencia de actualización (contador)
- Lectura y restauración de la señal de una celda (amplificador de sentido)
- Decirle a una celda si debe tomar un cargo o no (habilitar escritura)
Otras funciones del controlador de memoria incluyen una serie de tareas que incluyen la identificación del tipo, la velocidad y la cantidad de memoria y la verificación de errores.
Celdas de memoria SRAM
La RAM estática (Static RAM) utiliza una tecnología completamente distinta. En lugar de condensadores que requieren actualización constante, cada bit de memoria en la RAM estática se almacena en un flip-flop (un tipo de circuito de almacenamiento). A diferencia de la RAM dinámica, los flip-flops en la RAM estática no necesitan actualizarse periódicamente. Esto hace que la RAM estática sea considerablemente más rápida que la RAM dinámica. Sin embargo, debido a que los flip-flops requieren más transistores y cableado adicional, una celda de memoria estática ocupa más espacio en un chip en comparación con una celda de memoria dinámica. Como resultado, se obtiene menos capacidad de memoria por chip, lo que aumenta su costo.
La RAM estática se utiliza en la creación de memorias muy rápidas y de pequeña capacidad, y es que resulta más cara de producir que la DRAM, pero el rendimiento es muy superior.
En los ordenadores de escritorio, los chips de memoria solían venir en una configuración de pines conocida como paquete dual en línea (DIP). Estos chips se soldaban a la placa base o se insertaban en un zócalo. Sin embargo, a medida que se necesitaba más memoria, se requería más espacio en la placa base para acomodar los chips.
En cambio, conforme fueron avanzando pasaron a usarse módulos de memoria SRAM separados de la CPU y luego se integraron en el mismo empaquetado, como el caso del Pentium Pro, para terminar al final incluyéndola en el mismo encapsulado o en el mismo chip. No obstante, en la actualidad, dada la complejidad de los procesadores, se están volviendo a sacar del chip monolítico para poner parte fuera de él en un empaquetado MCM o chiplets, o también usando técnicas de empaquetado 3D como es el caso de AMD 3D V-Cache…
Aplicaciones
Al tener diferentes características, también tienen diferentes características y usos que voy a comentar aquí:
- La SRAM se utiliza principalmente para la memoria caché de alto rendimiento y como registros internos en los procesadores. Es más rápida y más cara que la DRAM. La SRAM es una memoria estática que almacena datos utilizando circuitos de transistores y flip-flops. No requiere actualizaciones constantes como la DRAM, lo que la hace más rápida y eficiente en términos de acceso a los datos. Sin embargo, debido a su mayor costo y menor densidad de almacenamiento, la cantidad de SRAM en un sistema suele ser limitada.
- Por otro lado, la DRAM se utiliza como memoria principal en los ordenadores. Es más lenta que la SRAM, pero ofrece una mayor capacidad de almacenamiento a un costo más bajo. La DRAM almacena datos utilizando condensadores y transistores y requiere actualizaciones periódicas para mantener la carga en los condensadores. Estas actualizaciones se realizan automáticamente y son transparentes para el usuario. Aunque la DRAM es más lenta en comparación con la SRAM, su mayor densidad de almacenamiento permite almacenar grandes cantidades de datos, lo que la hace adecuada para la memoria principal de un ordenador.
Tipos de RAM
Los siguientes son algunos tipos comunes de RAM:
- SRAM: utiliza múltiples transistores, generalmente de cuatro a seis, por cada celda de memoria, pero no tiene un condensador en cada celda. Es principalmente utilizada para la caché.
- DRAM: la memoria de acceso aleatorio dinámica tiene celdas de memoria con un transistor y un condensador emparejados que requieren actualización constante.
- FPM DRAM: es una RAM en modo de página rápida era la forma original de DRAM. Espera durante todo el proceso de ubicación de un bit de datos por columna y fila y luego lee el bit antes de pasar al siguiente. La velocidad máxima de transferencia a la caché L2 es de aproximadamente 176 Mbps.
- EDO DRAM: RAM de salida de datos extendida no espera todo el procesamiento del primer bit antes de avanzar al siguiente. Tan pronto como se encuentra la dirección del primer bit, la EDO DRAM comienza a buscar el siguiente. Es entre un 5 y un 20 por ciento más rápida que la FPM DRAM. La velocidad máxima de transferencia a la caché L2 es de aproximadamente 264 Mbps.
- SDRAM: la memoria de acceso aleatorio dinámica sincrónica aprovecha el concepto de modo de ráfaga para mejorar significativamente el rendimiento. Permanece en la fila que contiene el bit solicitado y se desplaza rápidamente a través de las columnas, leyendo cada bit a medida que avanza. La idea es que la mayoría de las veces los datos que necesita la CPU estarán en secuencia. SDRAM es aproximadamente un 5 por ciento más rápida que EDO RAM y tiene una tasa de transferencia de 0,8 a 1,3 gigatransferencias por segundo (GT/s). Fue desarrollada en 1988.
- DDR SDRAM: esta es la siguiente generación de SDRAM, la actual. La memoria dinámica sincrónica de doble velocidad de datos es similar a la SDRAM, pero con un mayor ancho de banda, lo que significa una mayor velocidad. Su tasa de transferencia es de 2,1-3,2 GT/s. DDR se lanzó en 2000 y ha avanzado a tres generaciones posteriores. DDR2 (2003) tiene una velocidad de transferencia de 4,2 a 6,4 GT/s y DDR3 (2007) transfiere datos a 8,5 a 14,9 GT/s. La generación más reciente de uso común es DDR4, lanzada en 2014, junto con la nueva DDR5. Su tasa de transferencia es de 17-21,3 GT/s. Estos estándares son establecidos por el Consejo Conjunto de Ingeniería de Dispositivos Electrónicos (JEDEC), una organización compuesta por empresas de electrónica. JEDEC lanzó su especificación para DDR5 en julio de 2020 y, aunque actualmente es bastante más cara y las ventajas no son tan evidentes, sí que tiene mucho más potencial de desarrollo.
- RDRAM: la Rambus es una innovación radical en comparación con la arquitectura DRAM anterior. Desarrollada por Rambus, RDRAM utiliza un módulo de memoria en línea Rambus (RIMM), que tiene un tamaño y una configuración de pines similares a un DIMM estándar. Lo que distingue a RDRAM es su uso de un bus de datos especial de alta velocidad llamado canal Rambus. Los chips de memoria RDRAM funcionan en paralelo para lograr una velocidad de datos de 800 MHz o superior, generando más calor debido a sus altas velocidades. Para ayudar a disipar el exceso de calor, los chips Rambus están equipados con un disipador de calor, similar a una oblea larga y delgada. Además de los DIMM, también existen versiones más pequeñas de RDRAM llamadas SO-RIMM, diseñadas específicamente para computadoras portátiles.
- Tarjeta de memoria PCMCIA: otro tipo de módulo DRAM independiente para computadoras portátiles, estas tarjetas no son propietarias y deberían funcionar con cualquier computadora portátil que tenga una configuración de bus de sistema compatible con la tarjeta de memoria. Sin embargo, en la actualidad está en desuso.
- VRAM: para más información, puedes ver el artículo que dediqué a este tipo de memoria.
Estas son los tipos más populares, aunque puede haber más. Sin embargo, conociendo estos es suficiente para que comprendas más o menos el funcionamiento.
Módulos de memoria
A lo largo de los últimos años, han habido avances en los tipos de placas y conectores utilizados para la memoria RAM en los ordenadores de escritorio. En el pasado, los primeros tipos de placas eran propietarios, lo que significa que cada fabricante de ordenadores desarrollaba placas de memoria específicas que solo eran compatibles con sus sistemas.
Posteriormente, se introdujo el SIMM (Single In-line Memory Module). Esta placa de memoria utilizaba un conector de 30 pines y tenía un tamaño aproximado de 3,5×0,75 pulgadas (alrededor de 9×2 cm). En la mayoría de los ordenadores, se requería la instalación de SIMM en pares de igual capacidad y velocidad debido al ancho del bus, que era mayor que el de un solo SIMM. Por ejemplo, para obtener un total de 16 megabytes de RAM, se debían instalar dos SIMM de 8 megabytes (MB). Cada SIMM podía transmitir 8 bits de datos a la vez, mientras que el bus del sistema podía manejar 16 bits simultáneamente. Las placas SIMM posteriores, un poco más grandes con un tamaño de 4,25 x 1 pulgada (aproximadamente 11 x 2,5 cm), utilizaban un conector de 72 pines para aumentar el ancho de banda y permitir una capacidad de hasta 256 MB de RAM. El uso de SIMM se extendió desde principios de la década de 1980 hasta principios de la década de 2000.
Conforme los procesadores aumentaron en velocidad y capacidad de ancho de banda, la industria adoptó un nuevo estándar conocido como módulo de memoria dual en línea (DIMM o Dual In-Line Memory Module). Los DIMM tienen diferentes capacidades y se pueden instalar de forma individual, en lugar de requerir instalación en pares. Algunas marcas de ordenadores portátiles utilizan un tipo de RAM basado en el estándar de módulo de memoria dual en línea de contorno pequeño (SO-DIMM). Estas tarjetas SODIMM son más pequeñas, con un tamaño aproximado de 2 x 1 pulgada (5 x 2,5 cm), y cuentan con 144 o 200 pines. Su capacidad varía de 2 a 32 GB por módulo. Además, algunos ordenadores sub-portátiles utilizan módulos DIMM aún más pequeños conocidos como MicroDIMM.
En la industria, se ha tendido hacia la adopción de LPDDR4 y LPDDR5 de bajo consumo en ordenadores portátiles más delgadas y livianas, ya que estos utilizan menos energía y tienen un tamaño más compacto. Sin embargo, lamentablemente, estos módulos deben ser soldados en su lugar, lo que significa que el usuario promedio no puede reemplazar la RAM original.
Actualmente, la gran mayoría de la memoria disponible es altamente fiable. En la mayoría de los sistemas, el controlador de memoria realiza una verificación de errores al inicio y se confía en ese proceso. Los chips de memoria con verificación de errores incorporada suelen utilizar un método llamado paridad para verificar posibles errores. Estos chips de paridad tienen un bit adicional por cada 8 bits de datos.
El funcionamiento de la paridad es bastante sencillo. Primero, veamos el caso de la paridad uniforme. Cuando los 8 bits de un byte reciben datos, el chip realiza una suma de todos los bits con valor 1. Si el número total de bits con valor 1 es impar, se establece el bit de paridad en 1. En caso de que el número total sea par, el bit de paridad se establece en 0. Posteriormente, cuando los datos son extraídos de los bits, se vuelve a sumar el total y se compara con el bit de paridad. Si el total es impar y el bit de paridad es 1, se asume que los datos son válidos y se envían a la CPU. Sin embargo, si el total es impar y el bit de paridad es 0, el chip identifica que hay un error en alguno de los 8 bits y descarta los datos. La paridad impar funciona de manera similar, pero en este caso, el bit de paridad se establece en 1 cuando el número total de bits con valor 1 en el byte es par.
El problema con la paridad es que, si bien detecta errores, no tiene la capacidad de corregirlos. Si un byte de datos no coincide con su bit de paridad, los datos se descartan y el sistema intenta nuevamente. En entornos críticos, las computadoras necesitan un nivel mayor de tolerancia a fallos. Los servidores de alta gama a menudo utilizan un tipo de verificación de errores llamado código de corrección de errores (ECC o Error Code Correction). Al igual que la paridad, el ECC utiliza bits adicionales para monitorear los datos de cada byte. La diferencia radica en que el ECC utiliza múltiples bits (la cantidad depende del ancho del bus) para verificar errores, en lugar de solo uno. La memoria ECC emplea un algoritmo especial que no solo detecta errores de un solo bit, sino que también es capaz de corregirlos. Además, la memoria ECC también es capaz de detectar casos en los que múltiples bits de datos en un byte fallan. Estos fallos son muy poco comunes y no son corregibles incluso con el ECC.
También existen los buffered o unbuffered, etc., aunque estos son otros temas…
La mayoría de las ordenadores vendidas actualmente utilizan chips de memoria sin paridad. Estos chips no proporcionan ningún tipo de verificación de errores integrada, y en su lugar dependen del controlador de memoria para llevar a cabo la detección de errores.
Desde el lado del sistema operativo
Hasta aquí hemos conocido cómo es la memoria RAM a nivel físico, a nivel de hardware. Pero ahora es momento de ponerse del otro lado, desde el lado del software para ver cómo el sistema operativo la gestiona para poder cargar y procesar los procesos o programas en ejecución:
¿Qué es la gestión de memoria?
La gestión de la memoria implica supervisar y coordinar el uso de la memoria principal en un ordenador. Su objetivo es garantizar que los bloques de memoria se administren y asignen de manera adecuada para satisfacer las necesidades del sistema operativo, las aplicaciones y otros procesos en ejecución, brindándoles el espacio de memoria necesario para llevar a cabo sus operaciones.
Dentro de esta actividad, la gestión de la memoria considera las limitaciones de capacidad del dispositivo de memoria en sí, liberando espacio de memoria cuando ya no es necesario o ampliándolo a través del uso de memoria virtual. La administración de la memoria se esfuerza por optimizar el uso de la memoria, de manera que la CPU pueda acceder de forma eficiente a las instrucciones y datos necesarios para ejecutar los distintos procesos.
¿Cuáles son las 3 áreas de gestión de memoria?
La gestión de la memoria opera en tres niveles: hardware, sistema operativo y programa/aplicación, y las capacidades de administración en cada nivel trabajan juntas para optimizar la disponibilidad y eficiencia de la memoria.
- A nivel de hardware, la gestión de la memoria se ocupa de los componentes físicos que almacenan datos, como los chips de memoria RAM y las cachés de memoria de la CPU (L1, L2 y L3). La unidad de administración de memoria (MMU) desempeña un papel fundamental en la administración física, controlando las operaciones de memoria del procesador y el almacenamiento en caché. Una de las tareas principales de la MMU es traducir las direcciones lógicas utilizadas por los procesos en ejecución a direcciones físicas en los dispositivos de memoria. La MMU generalmente está integrada en el procesador, aunque también puede ser implementada como un circuito integrado separado.
- A nivel del sistema operativo, la gestión de la memoria implica la asignación y reasignación constante de bloques de memoria específicos a procesos individuales, en respuesta a las cambiantes demandas de recursos de la CPU. Para facilitar el proceso de asignación, el sistema operativo realiza continuamente transferencias de procesos entre la memoria principal y los dispositivos de almacenamiento, como el disco duro o SSD, mientras mantiene un registro de la ubicación de cada bloque de memoria y su estado de asignación. El sistema operativo también determina qué procesos obtendrán recursos de memoria y cuándo se asignarán esos recursos. Como parte de esta operación, un sistema operativo podría usar el intercambio para acomodar más procesos. El intercambio es un enfoque de la gestión de la memoria en el que el sistema operativo intercambia temporalmente un proceso de la memoria principal al almacenamiento secundario para que la memoria esté disponible para otros procesos. El sistema operativo luego cambiará el proceso original a la memoria en el momento adecuado. El sistema operativo también es responsable de manejar los procesos cuando la computadora se queda sin espacio de memoria física. Cuando eso sucede, el sistema operativo recurre a la memoria virtual, un tipo de pseudomemoria asignada desde una unidad de almacenamiento que se ha configurado para emular la memoria principal de la computadora. Si la demanda de memoria supera la capacidad de la memoria física, el sistema operativo puede asignar automáticamente memoria virtual a un proceso como lo haría con la memoria física. Sin embargo, el uso de la memoria virtual puede afectar el rendimiento de la aplicación porque el almacenamiento secundario es mucho más lento que la memoria principal de una computadora.
- Administración de memoria a nivel de programa/aplicación. La gestión de memoria en este nivel se lleva a cabo durante el desarrollo de la aplicación y está bajo el control directo de la propia aplicación, en lugar de ser gestionada de manera centralizada por el sistema operativo o la MMU. Esta forma de administración de memoria garantiza que la aplicación tenga suficiente memoria disponible para sus objetos y estructuras de datos. Para lograrlo, se realizan dos tareas relacionadas:
- Asignación de memoria: Durante la ejecución del programa, se asigna memoria dinámicamente para crear y almacenar objetos y estructuras de datos necesarios. La aplicación solicita la cantidad de memoria requerida y la utiliza para alojar los datos de manera eficiente. Esto implica reservar la memoria necesaria y asignarla a los objetos o estructuras correspondientes.
- Liberación de memoria: Una vez que los objetos o estructuras de datos ya no son necesarios, se libera la memoria correspondiente para que pueda ser reutilizada por otros fines. La aplicación debe tener un mecanismo para identificar cuándo la memoria ya no es utilizada y realizar la liberación adecuada. Esto ayuda a evitar la acumulación de memoria no utilizada y garantiza un uso eficiente de los recursos disponibles.
La gestión de memoria a nivel de programa/aplicación permite a los desarrolladores optimizar el uso de memoria en función de las necesidades específicas de la aplicación, lo que contribuye a mejorar su rendimiento y eficiencia.
Espero que ahora comprendas un poco mejor cómo funciona la RAM. No olvides dejar tus comentarios…