¿Cómo puede una CPU de 32 bits manejar 4 gigabytes de RAM (en realidad no puedo entender el hecho de que la CPU se cuenta con ‘bit’, pero cómo el cálculo de RAM está en bytes)?

La dirección utilizada en la CPU solo muestra una posición. Lo que contiene cada posición es arbitrario, podría ser un bit, o podría ser un megabyte, o algo intermedio, o más allá.

Por defecto, casi todas las computadoras ven cada posición como un solo byte (es decir, 8 bits) ya que esa es la porción más pequeña que es útil. Por ejemplo, la porción más pequeña que se puede usar como representación de un carácter de texto. Si el tipo de datos en el que se trabaja es más pequeño que un byte (por ejemplo, un valor booleano sí / no), entonces algunos bits en ese byte son irrelevantes, generalmente ignorados o establecidos en 0s. Si el tipo de datos necesita más de 8 bits (por ejemplo, un carácter especial en texto UTF8 o un número entero grande o números fraccionales), se utilizan bytes consecutivos y consumen más de una posición de dirección, por ejemplo, un punto flotante de precisión doble usa 8 bytes o 64 bits , pero su dirección es el primero de esos bytes que usa.

Entonces, si la dirección utilizada apunta a la posición 12345, significa el número de byte 12345. Véalo de la misma manera que funciona una dirección de calle. El número de edificio se refiere al edificio en sí, no a cada apartamento dentro de ese edificio. Y aún más similar, un edificio muy grande en realidad puede usar más de un número de calle.

Las computadoras modernas usan una unidad mínima de almacenamiento direccionable de un byte. Estas máquinas también se describen en bytes direccionables. Es decir, la entidad más pequeña que tiene una dirección de hardware única es el byte. No puede direccionar bits individuales dentro del byte. Entonces, con 32 líneas de dirección, puede direccionar [matemática] 2 ^ {32} = 4,294,967,296 [/ matemática] bytes .

No todas las máquinas son direccionables por bytes.

Las máquinas más antiguas a menudo eran direccionables por palabras . Para un tamaño de dirección [math] a [/ math], puede direccionar [math] 2 ^ a [/ math] palabras. Por ejemplo, la CPU CP-1600 tiene 16 líneas de dirección y un tamaño de palabra de 16 bits. Podría abordar [matemáticas] 2 ^ {16} = 65,536 [/ matemáticas] palabras de 16 bits , que es un total de [matemáticas] 131,072 [/ matemáticas] bytes .

El TMS34010 era poco direccionable. Esa máquina podría acceder a la memoria en cualquier límite de bits. Por lo tanto, podría abordar [math] 2 ^ {32} [/ math] bits, lo que limitó su tamaño de memoria total a 512 megabytes.

Una CPU de 32 bits tiene 32 líneas de dirección. 2 ^ 32 = 4294967296 posibles bytes de datos direccionables.

Hay 1024 bytes en un kilobyte, por lo que son 4194304 kilobytes.

Hay 1024 kilobytes en un megabyte, lo que equivale a 4096 megabytes.

Hay 1024 megabytes en un gigabyte, es decir, 4 gigabytes.

Sin embargo, una CPU de 32 bits no puede direccionar toda esa RAM ya que ciertas áreas de memoria están reservadas para IO, otros espacios de memoria como gráficos y memoria utilizados por dispositivos en los diversos buses dentro de la computadora.

Si tiene 4 Gb de RAM (digamos 2 módulos de 2 GB de RAM), sería afortunado si más de 3.5 Gb están realmente disponibles para el sistema.