¿Cuántas direcciones de memoria puede contener la RAM de mi computadora?

Jun 18, 2025
Hardware

Algunos días es divertido mirar el nivel superficial de la experiencia informática, y otros días es divertido profundizar en el funcionamiento interno. Hoy vamos a echar un vistazo a la estructura de la memoria de la computadora y cuántas cosas puedes empaquetar en una memoria RAM.

La sesión de preguntas y respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web de preguntas y respuestas impulsada por la comunidad.

La pregunta

El lector de superusuario Johan Smohan está lidiando con cómo el tipo de procesador y el tamaño de la memoria trabajan juntos para producir un número total de direcciones. El escribe:

¿Cuántas direcciones de memoria podemos obtener con un procesador de 32 bits y 1 GB de RAM y cuántas con un procesador de 64 bits?

Creo que es algo como esto:

1GB de RAM dividido por 32 bits 4 bits (?) Para obtener el número de direcciones de memoria?

Leí en Wikipedia que 1 dirección de memoria tiene 32 bits de ancho o 4 octetos (1 octeto = 8 bits), en comparación con un procesador de 64 bits donde 1 dirección de memoria o 1 entero tiene 64 bits de ancho u 8 octetos. Pero tampoco sé si lo entendí bien.

Este es el tipo de preguntas que pueden mantener despierto a un geek curioso por la noche. ¿Cuántas direcciones están disponibles en cada uno de los sistemas hipotéticos de Johan?

La respuesta

El colaborador de superusuario Gronostaj ofrece una idea de cómo se divide y utiliza la RAM:

Respuesta corta: El número de direcciones disponibles es igual a la menor de ellas:

  • Tamaño de la memoria en bytes
  • Mayor número entero sin signo que se puede guardar en la palabra de máquina de la CPU

Respuesta larga y explicación de lo anterior:

La memoria consta de bytes (B). Cada byte consta de 8 bits (b).

1 B = 8 b

1 GB de RAM es en realidad 1 GiB (gibibyte, no gigabyte). La diferencia es:

1 GB = 10 ^ 9 B = 1000000000 B
1 GiB = 2 ^ 30 B = 107741824 B

Cada byte de memoria tiene su propia dirección, sin importar cuán grande sea la palabra de máquina de la CPU. P.ej. La CPU Intel 8086 era de 16 bits y se dirigía a la memoria por bytes, al igual que las CPU modernas de 32 y 64 bits. Esa es la causa del primer límite: no puede tener más direcciones que bytes de memoria.

La dirección de memoria es solo una cantidad de bytes que la CPU tiene que omitir desde el principio de la memoria para llegar a la que está buscando.

  • Para acceder al primer byte, debe omitir 0 bytes, por lo que la dirección del primer byte es 0.
  • Para acceder al segundo byte debe omitir 1 byte, por lo que su dirección es 1.
  • (Etcétera…)
  • Para acceder al último byte, la CPU omite 1073741823 bytes, por lo que su dirección es 1073741823.

Ahora tienes que saber qué significa realmente 32 bits. Como mencioné antes, es del tamaño de una palabra de máquina.

La palabra máquina es la cantidad de memoria que usa la CPU para almacenar números (en RAM, caché o registros internos). La CPU de 32 bits utiliza 32 bits (4 bytes) para contener números. Las direcciones de memoria también son números, por lo que en una CPU de 32 bits, la dirección de memoria consta de 32 bits.

Ahora piense en esto: si tiene un bit, puede guardar dos valores en él: 0 o 1. Agregue un bit más y tendrá cuatro valores: 0, 1, 2, 3. En tres bits, puede guardar ocho valores : 0, 1, 2… 6, 7. Este es en realidad un sistema binario y funciona así:

Decimal binario
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

Funciona exactamente como la suma habitual, pero el dígito máximo es 1, no 9. El decimal 0 es 0000 , luego agregas 1 y obtienes 0001 , agrega uno una vez más y tienes 0010 . Lo que pasó aquí es como tener decimal 09 y sumando uno: cambia de 9 a 0 e incrementa el siguiente dígito.

En el ejemplo anterior, puede ver que siempre hay un valor máximo que puede mantener en un número con un número constante de bits, porque cuando todos los bits son 1 e intenta aumentar el valor en 1, todos los bits se convertirán en 0, rompiendo así el número. Se llama desbordamiento de enteros y causa muchos problemas desagradables, tanto para los usuarios como para los desarrolladores.

11111111 = 255
+ 1
-----------
  100000000 = 0 (9 bits aquí, por lo que 1 se recorta)
  • Para 1 bit, el mayor valor es 1,
  • 2 bits – 3,
  • 3 bits – 7,
  • 4 bits – 15

El mayor número posible es siempre 2 ^ N-1, donde N es el número de bits. Como dije antes, una dirección de memoria es un número y también tiene un valor máximo. Es por eso que el tamaño de la palabra de la máquina también es un límite para la cantidad de direcciones de memoria disponibles; a veces, su CPU simplemente no puede procesar números lo suficientemente grandes como para ocupar más memoria.

Entonces, en 32 bits puede mantener números de 0 a 2 ^ 32-1, y eso es 4 294 967 295. Es más que la dirección más grande en 1 GB de RAM, por lo que en su caso específico, la cantidad de RAM será el factor limitante.

El límite de RAM para CPU de 32 bits es teóricamente de 4 GB (2 ^ 32) y para CPU de 64 bits es de 16 EB (exabytes, 1 EB = 2 ^ 30 GB). En otras palabras, la CPU de 64 bits podría abordar toda Internet ... 200 veces;) (estimado por Wolfram Alpha ).

Sin embargo, en los sistemas operativos de la vida real, las CPU de 32 bits pueden abordar aproximadamente 3 GiB de RAM. Eso se debe a la arquitectura interna del sistema operativo: algunas direcciones están reservadas para otros fines. Puede leer más sobre este llamado Barrera de 3 GB en Wikipedia . Puedes levantar este límite con Extensión de dirección física .

Hablando de direcciones de memoria, hay algunas cosas que debo mencionar: memoria virtual , segmentación y paginación .

Memoria virtual

Como señaló @Daniel R Hicks en otra respuesta, los sistemas operativos usan memoria virtual. Lo que significa es que las aplicaciones en realidad no operan en direcciones de memoria reales, sino en las proporcionadas por el sistema operativo.

Esta técnica permite que el sistema operativo mueva algunos datos de la RAM a un llamado Pagefile (Windows) o Swap (* NIX). El disco duro es un poco más lento que la RAM, pero no es un problema grave para los datos a los que se accede con poca frecuencia y permite que el sistema operativo proporcione a las aplicaciones más RAM de la que realmente tiene instalada.

Paginación

De lo que estábamos hablando hasta ahora se llama esquema de direccionamiento plano.

La paginación es un esquema de direccionamiento alternativo que permite direccionar más memoria de la que normalmente se podría hacer con una palabra de máquina en un modelo plano.

Imagine un libro lleno de palabras de 4 letras. Supongamos que hay 1024 números en cada página. Para abordar un número, debe saber dos cosas:

  • El número de página en la que se imprime esa palabra.
  • ¿Qué palabra de esa página es la que estás buscando?

Así es exactamente como las CPU x86 modernas manejan la memoria. Está dividido en 4 páginas KiB (1024 palabras de máquina cada una) y esas páginas tienen números. (en realidad, las páginas también pueden tener un tamaño de 4 MiB o 2 MiB con PAE ). Cuando desee direccionar la celda de memoria, necesita el número de página y la dirección en esa página. Tenga en cuenta que cada celda de memoria está referenciada por exactamente un par de números, que no será el caso de la segmentación.

Segmentación

Bueno, este es bastante similar a la paginación. Se usó en Intel 8086, solo por nombrar un ejemplo. Los grupos de direcciones ahora se denominan segmentos de memoria, no páginas. La diferencia es que los segmentos pueden superponerse y se superponen mucho. Por ejemplo, en 8086 la mayoría de las celdas de memoria estaban disponibles en 4096 segmentos diferentes.

Un ejemplo:

Digamos que tenemos 8 bytes de memoria, todos con ceros excepto el cuarto byte que es igual a 255.

Ilustración para el modelo de memoria plana:

_____
|  0  |
|  0  |
|  0  |
| 255 |
|  0  |
|  0  |
|  0  |
|  0  |
 -----

Ilustración para memoria paginada con páginas de 4 bytes:

PAGE0
 _____
| 0 |
| 0 |
| 0 | PÁGINA 1
| 255 | _____
 ----- | 0 |
        | 0 |
        | 0 |
        | 0 |
         -----

Ilustración para memoria segmentada con segmentos de 4 bytes desplazados en 1:

SEG 0
 _____ SEG 1
| 0 | _____ SEG 2
| 0 | | 0 | _____ SEG 3
| 0 | | 0 | | 0 | _____ SEG 4
| 255 | | 255 | | 255 | | 255 | _____ SEG 5
 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6
         ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7
                 ----- | 0 | | 0 | | 0 | | 0 | _____
                         ----- | 0 | | 0 | | 0 | | 0 |
                                 ----- ----- ----- -----

Como puede ver, el cuarto byte se puede direccionar de cuatro formas: (direccionamiento desde 0)

  • Segmento 0, desplazamiento 3
  • Segmento 1, desplazamiento 2
  • Segmento 2, desplazamiento 1
  • Segmento 3, desplazamiento 0

Siempre es la misma celda de memoria.

En implementaciones de la vida real, los segmentos se desplazan en más de 1 byte (para 8086 eran 16 bytes).

Lo malo de la segmentación es que es complicado (pero creo que ya lo sabes). Lo bueno es que puedes usar algunas técnicas inteligentes para crear programas modulares.

Por ejemplo, puede cargar algún módulo en un segmento, luego pretender que el segmento es más pequeño de lo que realmente es (lo suficientemente pequeño para contener el módulo), luego elegir el primer segmento que no se superponga con el pseudo-más pequeño y cargar el siguiente módulo, y así sucesivamente. Básicamente, lo que obtienes de esta manera son páginas de tamaño variable.


¿Tiene algo que agregar a la explicación? Habla en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Consulte el hilo de discusión completo aquí .

.entrada-contenido .entry-footer

How Many Memory Addresses Can We Get With A 32-bit Processor And 1gb Ram? (5 Solutions!!)

Memory Addresses, Computer Science Lecture | Sabaq.pk |

Q. 7.8: (a) How Many 32K * 8 RAM Chips Are Needed To Provide A Memory Capacity Of 256Kbytes? (b) How

How Computer Memory Works - Kanawat Senanan

Assembly Program - Obtaining Memory Addresses

What Is Virtual Memory? – Gary Explains

The Fetch-Execute Cycle: What's Your Computer Actually Doing?

256KB Memory Design Using 64KB Ram Blocks-Microprocessors Example

How Much RAM Do You ACTUALLY Need? (2020)

Registers And RAM: Crash Course Computer Science #6

Lesson 9.3 : Pointers Containing Memory Addresses Of Multi Byte Variables


Hardware - Artículos más populares

Cómo arreglar una tecla atascada o repetida en su teclado mecánico

Hardware Jan 3, 2025

CONTENIDO NO CUBIERTO Los teclados mecánicos son geniales ! Pero también son más complejos que los teclados convencionales. Si bien es menos probable que fallen por..


Cómo configurar y usar Google Daydream View con su teléfono Android

Hardware Mar 8, 2025

CONTENIDO NO CUBIERTO La realidad virtual móvil es lo nuevo que está de moda en este momento: los teléfonos que los usuarios pueden colocar en los auriculares y obtener una exp..


¿Qué sucede si mis luces Philips Hue se desconectan?

Hardware Feb 23, 2025

CONTENIDO NO CUBIERTO Instalar bombillas Philips Hue es una excelente manera de mejorar su juego de iluminación, pero dado que dependen en gran medida de una conexión a Internet..


¿Qué son los sistemas Wi-Fi en malla y cómo funcionan?

Hardware Feb 2, 2025

Si la red Wi-Fi de su hogar tiene puntos muertos o no llega a toda su casa, es posible que recientemente haya considerado adquirir un sistema Wi-Fi en malla. Se han disparado en pop..


Cómo quitar un sensor o dispositivo de SmartThings

Hardware Jun 16, 2025

CONTENIDO NO CUBIERTO Si tiene un sensor o dispositivo conectado a su configuración de SmartThings, pero ya no lo desea, en realidad es muy fácil desconectarlo de su sistema. ..


Cómo restaurar archivos desde una copia de seguridad de Windows en una Mac

Hardware Mar 5, 2025

CONTENIDO NO CUBIERTO ¿Necesita un archivo de una antigua copia de seguridad de Windows en su Mac? Las Mac pueden leer unidades de Windows, pero Máquina del tiempo ..


Cómo usar una unidad flash USB con su teléfono o tableta Android

Hardware Jul 27, 2025

¿Alguna vez ha querido ver un video en su teléfono o tableta sin perder su espacio de almacenamiento? O tal vez solo necesite ver un archivo que le dio su amigo. La mayoría de lo..


Cómo disfrutar de la configuración Dead Simple Raspberry Pi con NOOBS

Hardware Nov 21, 2024

CONTENIDO NO CUBIERTO Si está buscando la forma más sencilla de comenzar con su nueva Raspberry Pi, no busque más. El nuevo software listo para usar de la fundación Raspberry ..


Categorías