¿Es el tamaño del bus de direcciones o el tamaño del bus de datos lo que determina los sistemas de "8 bits, 16 bits, 32 bits, 64 bits"?

15

Mi simple comprensión es la siguiente.

La memoria (RAM) está compuesta de bits, grupos de 8 que forman bytes, cada uno de los cuales puede ser direccionado y, por lo tanto, memoria direccionable en bytes.

Address Bus almacena la ubicación de un byte de memoria.

Si un bus de direcciones tiene un tamaño de 32 bits, eso significa que puede contener hasta 2 32 números y, por lo tanto, puede referir hasta 2 32 bytes de memoria = 4 GB de memoria y cualquier memoria mayor que eso es inútil.

El bus de datos se utiliza para enviar el valor a escribir / leer en la memoria. Si tengo un bus de datos de 32 bits, significa que se puede escribir / leer un máximo de 4 bytes a la vez. No encuentro ninguna relación entre este tamaño y el tamaño máximo de memoria posible.

Pero leí aquí que:

Aunque la mayoría de los sistemas son direccionables por bytes, tiene sentido que el procesador mueva la mayor cantidad de datos posible. Esto lo hace el bus de datos, y el tamaño del bus de datos es de donde provienen los nombres de sistema de 8 bits, sistema de 16 bits, sistema de 32 bits, sistema de 64 bits, etc. Cuando el bus de datos tiene 8 bits de ancho, puede transferir 8 bits en una sola operación de memoria. Cuando el bus de datos tiene 32 bits de ancho (como es más común en el momento de la escritura), como máximo, 32 bits se pueden mover en una sola operación de memoria.

Esto dice que el tamaño del bus de datos es lo que le da a un sistema operativo el nombre, 8 bits, 16 bits, etc. ¿Qué hay de malo en mi comprensión?

aprendiz
fuente
" ¿Qué hay de malo en mi comprensión? " - Estás tratando de hacer que una definición se ajuste a diferentes cosas. El descriptor de tamaño de bit se ha utilizado en diferentes momentos para diferentes cosas.
aserrín
1
Significa lo que el fabricante dice que significa. En general, será algo parecido al tamaño del registro, pero hay muchas formas de falsificarlo.
Daniel R Hicks

Respuestas:

12

En general, el tamaño del bus de datos está determinado por el tamaño de los registros del procesador. A menudo, es el tamaño de los registros del procesador lo que determina el tipo de sistema operativo (64 frente a 32). El tamaño físico del bus puede diferir técnicamente de esto (8088 como ejemplo), pero es tan raro que el autor de su cita probablemente asocie los dos.

En general, el tamaño del puntero también sigue el tamaño del registro, pero el ancho del bus de direcciones físicas puede ser mayor (como con el 8086 de 16 bits a 20) o menor (como con el AMD 64 a 48)

Dougvj
fuente
2
" el ancho del bus de direcciones físicas puede ser mayor " - ¡Especialmente con procesadores de 4 y 8 bits!
aserrín
Bueno. Pero estoy tratando de entenderlo trivialmente. No pude encontrar ninguna relación entre el tamaño del bus de datos y la memoria máxima posible, como podría explicar con el tamaño del bus de direcciones. Entonces, la respuesta parece ser "NO DIRECCIONAR TAMAÑO DEL BUS, sino DATOS DEL BUS DE DATOS" (porque generalmente es tan grande como el procesador registra). ¿Me estoy perdiendo de algo?
alumno
@learner Eso es correcto, la confusión también radica en el hecho de que el tamaño máximo del puntero de un sistema es el tamaño de los registros del procesador. En un espacio de direcciones plano, como con la mayoría de los sistemas modernos, eso equivale a estar limitado por el tamaño de los registros del procesador, de ahí las limitaciones de direccionamiento como usted señaló. Algunos procesadores, especialmente los más antiguos, utilizaron trucos como el direccionamiento segmentado especial para solucionar esto.
Dougvj
@Dougvj, Ok, se está volviendo más claro. Pero, ¿por qué hicieron que los tamaños de bus de direcciones sean diferentes de los tamaños de registro del procesador? ¿No tendría más sentido mantenerlos igual? ¿Y estoy confundido acerca de dónde se guardan las direcciones? (¿el bus de direcciones o el registro del procesador?) Gracias
alumno
1
@learner Eso es correcto. Para resumir: la designación del sistema operativo se corresponde exactamente con el tamaño de los registros del procesador. El bus de direcciones puede o no tener el mismo tamaño que los registros del procesador, por lo tanto, la RAM direccionable máxima posible es independiente de eso. Sin embargo, el procesador interno tiene casi invariablemente algún tipo de esquema de direccionamiento que involucra punteros que son del mismo tamaño que los registros del procesador.
Dougvj
1

Es el tamaño del registro y el manejo de la memoria dentro del procesador.

Usando trucos, un procesador de 16 bits tenía un bus de direcciones de 20 bits, por lo que no es memoria externa del procesador.

Laboratorios Fiasco
fuente
1

No hay un sistema "puro" de 32 o 64 bits y, por lo tanto, los términos son solo aproximaciones de todos modos.

Por ejemplo, tome su declaración "La memoria (RAM) está compuesta de bits, grupos de 8 que forman bytes, cada uno de los cuales puede ser direccionado" . Eso no es muy común. Las PC tienen su RAM en módulos DIMM, y tienen 64 bits de ancho. En los años 90, tenías SIMM, y esos tenían 32 bits de ancho.

En algunos sistemas, los DIMM deben o pueden emparejarse ("agrupados" / "canal dual"), que sería un bus de datos de 128 bits. Este concepto es anterior a los llamados procesadores de "64 bits" de AMD e Intel.

Esos grupos de 64 bits de un solo DIMM pueden subdividirse en 8 bytes. Eso lo hace muy transparentemente tu CPU. También puede dividir los 64 bits en 4 * 16 bits, 2 * 32 bits, o simplemente usar los 64 bits como una sola variable.

Sin embargo, la pregunta más importante es el ancho de una dirección. Cada byte en la memoria tiene su propia dirección, pero no todos. Eso significa que los 64 bits que obtiene de un solo DIMM tienen 8 direcciones. El más bajo de estos siempre es un múltiplo de 8: Ahora, ¿cuántas direcciones distintas admite la CPU? Hay dos respuestas comunes, al menos en teoría. Algunas CPU admiten 2 32 direcciones diferentes, algunas admiten 2 64 . Esta distinción es la distinción más común entre sistemas de 32 y 64 bits.

En la práctica, los sistemas de 64 bits actuales admiten menos de 2 64 bytes de RAM. Eso sería inasequible, y de todos modos no cabría en una PC normal. ¡Esa cantidad de memoria pesaría varios millones de toneladas!

MSalters
fuente
¿Es el registro del procesador donde se guarda una dirección, o es el bus de direcciones? Dices "algunas CPU admiten 2 ^ 32 direcciones diferentes ...". ¿Por qué están limitados exactamente?
alumno
Por lo general, tanto los tamaños de registro como la MMU (Unidad de administración de memoria, la parte de la CPU que es directamente responsable de la memoria).
MSalters
0

Ambos en realidad.

Los bits en una CPU normalmente son una referencia al tamaño de sus registros internos. Una CPU de 32 Bits tiene registros de 32 Bits que pueden dividirse o no en trozos.

Tiene sentido tener una CPU de 32 bits con un bus de datos de 32 bits porque puede transferir todos los datos de la memoria directamente a los registros, pero puede tener cualquier tamaño de bus de datos. Por lo tanto, la CPU de 32 bits normalmente tiene un bus de datos de 32 bits para facilitar la transferencia de datos desde y hacia él.

Y también tiene sentido tener un bus de dirección de 32 bits por dos razones. Un bus de direcciones más grande haría más difícil el direccionamiento indirecto porque no tendría un registro lo suficientemente grande como para almacenar una dirección de memoria o la CPU necesitaría un registro especializado para el direccionamiento de la memoria, tenga en cuenta que las CPU antiguas como Intel 8080 tenían 8 bits y tenían un Bus de direcciones de 16 bits. Lo contrario, un bus de direcciones más pequeño que el registro es solo un desperdicio de recursos. Hay microcontroladores que usan un bus de direcciones más pequeño.

h0m3
fuente