1.3 La memoria principal (RAM)

🧠 Introducción

La memoria principal, conocida como RAM (Random Access Memory), es uno de los componentes fundamentales de una computadora. Su función es almacenar temporalmente los programas, instrucciones y datos que están siendo utilizados por el procesador.

Cuando ejecutamos un programa, la información necesaria debe encontrarse disponible para que el procesador pueda acceder a ella. Por esta razón, existe una relación constante entre el procesador y la memoria principal.

Comprender cómo se organiza y utiliza la memoria es fundamental para estudiar lenguaje ensamblador, ya que en este nivel podemos trabajar de manera más cercana con las direcciones y los datos almacenados en memoria.

💾 ¿Qué es la memoria RAM?

La RAM es una memoria de acceso aleatorio que permite almacenar información temporalmente mientras la computadora está funcionando.

Se utiliza para mantener disponibles los programas que están en ejecución y los datos que estos necesitan.

  • ⚡ Es temporal: su contenido se pierde cuando se apaga la computadora.
  • 🔀 Permite acceder a diferentes posiciones de memoria.
  • 📦 Almacena programas y datos que están siendo utilizados.
  • 🧠 El procesador puede leer información de la RAM y escribir información en ella.

🏠 Una forma sencilla de imaginar la RAM

Podemos imaginar la memoria RAM como un enorme conjunto de casillas. Cada casilla tiene una dirección que permite identificarla y almacenar información.

💾 MEMORIA RAM

┌───────────────┐
│ Dirección │ Contenido
├───────────────┤
│ 1000h │ 25
│ 1001h │ 18
│ 1002h │ 42
│ 1003h │ 7
│ … │ …
└───────────────┘

La dirección permite localizar una posición concreta. El contenido representa el dato almacenado en ella. Los valores anteriores son únicamente un ejemplo conceptual para comprender la idea de dirección y contenido.

📍 ¿Qué es una dirección de memoria?

Una dirección de memoria es un identificador que permite localizar una posición determinada dentro de la memoria.

Cuando el procesador necesita obtener un dato almacenado en RAM, debe conocer dónde se encuentra. De manera conceptual, el proceso puede representarse así:

🧠 CPU → 📍 Dirección de memoria → 💾 Dato

🔄 Lectura y escritura en memoria

El procesador puede realizar principalmente dos tipos de operaciones sobre la memoria:

  • 📖 Lectura: obtener información almacenada en una posición de memoria.
  • ✏️ Escritura: almacenar información en una posición de memoria.

De manera simplificada:

📖 CPU ←──── 💾 RAM Lectura
✏️ CPU ────→ 💾 RAM Escritura

⚙️ ¿Qué relación existe entre la CPU y la RAM?

La CPU y la memoria RAM trabajan de manera coordinada. La RAM proporciona un espacio donde se encuentran disponibles las instrucciones y los datos que el procesador necesita utilizar.

Podemos visualizar esta relación de forma sencilla:

💻 PROGRAMA

💾 RAM: instrucciones + datos

🧠 CPU: obtiene y ejecuta instrucciones

⚡ Resultado

💻 ¿Qué relación tiene la RAM con ensamblador?

En lenguaje ensamblador es posible trabajar de forma explícita con datos almacenados en memoria. Esto permite comprender una parte del funcionamiento que normalmente permanece oculta cuando utilizamos lenguajes de alto nivel.

Por ejemplo, una instrucción puede mover un dato entre un registro y una posición de memoria. La sintaxis exacta depende de la arquitectura y del ensamblador utilizado.

MOV AX, [dato]

Conceptualmente, esta instrucción indica que el procesador debe obtener el contenido asociado con la posición de memoria identificada como “dato” y colocarlo en el registro AX.

🧩 Variables, datos y memoria

Cuando un programa necesita trabajar con información, esa información debe almacenarse en algún lugar. Una variable de un programa puede terminar asociada con una ubicación de memoria, dependiendo del lenguaje, compilador y contexto de ejecución.

En ensamblador, esta relación puede observarse con mayor claridad porque el programador puede trabajar directamente con registros y posiciones de memoria.

⚡ Registros vs. memoria RAM

Los registros y la RAM cumplen funciones diferentes. Los registros se encuentran dentro del procesador y son extremadamente rápidos, pero su cantidad y capacidad son muy limitadas. La RAM ofrece mucha más capacidad, pero se encuentra fuera de la CPU.

Característica🧠 Registros💾 RAM
UbicaciónDentro del procesadorMemoria principal
CapacidadMuy pequeñaMucho mayor
UsoTrabajo inmediato del procesadorProgramas y datos en uso
AccesoMuy rápidoRápido, pero diferente a los registros

🔑 Idea clave

La memoria RAM proporciona el espacio temporal donde se encuentran los programas y datos que el procesador necesita durante la ejecución.

💾 RAM = programas + datos disponibles para trabajar

Para acceder a un dato, el procesador necesita localizarlo mediante una dirección de memoria. Esta idea será fundamental cuando estudiemos los modos de direccionamiento.

🧩 Actividad: “Mapa de memoria”

🎯 Objetivo: Comprender la relación entre direcciones de memoria, datos y procesador.

📝 Instrucciones

  • 🔎 Explica con tus propias palabras qué es la memoria RAM y por qué es necesaria para ejecutar programas.
  • 📍 Explica qué es una dirección de memoria.
  • 🖼️ Dibuja una representación de una memoria RAM con al menos 8 posiciones. Asigna una dirección y un dato a cada posición.
  • 🧠 Representa mediante flechas cómo la CPU obtiene un dato de una posición de memoria.
  • 💭 Responde: ¿qué diferencia existe entre almacenar un dato en un registro y almacenarlo en la RAM?

Apuntes

https://www.mediafire.com/file/x9fr9q8zbx6dhxd/1.3_La_memoria_principal_%2528RAM%2529.pdf/file

Videos

https://youtu.be/RCooHWPP_P0?si=UJ_bknUhBuZAJxa0

Referencias

University of Virginia — Guide to x86 Assembly — Memory and Addressing
https://www.cs.virginia.edu/~evans/cs216/guides/x86

Intel — Intel® 64 and IA-32 Architectures Software Developer’s Manuals
https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html

Intel — Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture
https://www.intel.com/content/www/us/en/content-details/851056/intel-64-and-ia-32-architectures-software-developer-s-manual-volume-1-basic-architecture.html