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?
fuente
Respuestas:
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)
fuente
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.
fuente
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!
fuente
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.
fuente