Si una CPU tiene un bus de direcciones de 16 bits y palabras de 8 bits, ¿cuánta memoria puede direccionar?

23

Estoy estudiando para un examen de fin de semestre y estoy confundido con la siguiente pregunta. Si una CPU tiene un bus de direcciones de 16 bits y palabras de 8 bits, ¿cuánta memoria en KB puede direccionar? Mi entendimiento me diría que puede abordar 64 KB, sin embargo, para hacer esto, solo usé 2 ^ 16 = 65,536. Ese cálculo nunca tuvo en cuenta palabras de 8 bits, por lo que no estoy seguro de si es correcto. Además, ¿qué significan las palabras de 8 bits?

Aclamaciones

eZ_Harry
fuente
16
Lo usó indirectamente: la cantidad total de memoria direccionable es 2 ^ 16 * 8 bits. Como un byte = 8 bits, eso es 2 ^ 16 bytes, es decir, 65536 bytes, o 64 KiB. Tenga en cuenta que K es el prefijo SI para 1000. Si quiere decir 1024, use Ki.
jcaron
2
Tenga en cuenta la diferencia entre el prefijo SI kilobytes (1,000 bytes) y el prefijo binario kibibytes (1,024 bytes). 2 ^ 16 = 65,536 = 64 kibi ~ 65.5 kilo. La respuesta buscada es probablemente una en la que kilo se entiende como kibi, pero hay momentos en que la diferencia realmente importa. Si desea estar completamente seguro, tome la ruta segura y especifique el número de bytes , y ofrezca la traducción a unidades más útiles, como kilobytes o kibibytes, para comodidad de su maestro. Comparar Wikipedia: prefijo binario . Los chips de memoria suelen especificar, por ejemplo, 65.536x8 bits.
un CVn
3
Supongo que asume que no hay cambio de banco. La mayoría de las CPU de 16 bits utilizan algún tipo de cambio de banco que hace que esto sea realmente difícil de responder.
Joshua
1
@ MichaelKjörling La pregunta dice KB, que siempre ha significado 1024 bytes.
Kasperd

Respuestas:

38

Una palabra, en la mayoría de las arquitecturas, es el mayor dato que se puede transferir hacia y desde la memoria de trabajo en una sola operación.

El tamaño de dirección más grande posible, utilizado para designar una ubicación en la memoria, generalmente se denomina palabra de hardware.

Por lo tanto, su CPU podrá direccionar 64 KB (2 ^ 16) pero solo podrá transferir en una sola operación 8 bits.

Overmind
fuente
3
Estoy seguro de que esta respuesta es la que busca el profesor, pero ¿es realmente correcta? ¿No podría usar algo como PAE para permitir una jerarquía de 3 niveles (o incluso más) para permitir que las CPU accedan a más de 64 KB? No soy un experto en hardware, pero ¿el Commodore 128 ni siquiera logró hacer algo así en un bus de 8 bits y 16 bits al permitir el cambio de bancos de RAM?
davidgo
55
¿No está seguro de entender que su oración "solo podrá transferir en una sola operación es 256B (2 ^ 8)"? Solo puede transferir 1 palabra = 1 byte = 8 bits en una sola operación.
jcaron
8
@davidgo aún PAE requiere que el bus de direcciones tenga el tamaño adecuado. Las CPU Intel que admiten PAE tienen un bus de direcciones de 36 bits.
Dmitry Grigoryev
66
PAE es más o menos un nombre de marca / función específico para las modernas CPU x86. Sí, se han implementado esquemas para abordar indirectamente grandes cantidades de memoria durante siglos (por ejemplo, XMS), estos al final tratan el subsistema de memoria como un periférico que se puede reconfigurar constantemente para exponer diferentes memorias en un espacio de direcciones más pequeño. Además, vea el modelo de memoria segmentada de la vieja escuela x86 ...
rackandboneman
66
@ Overmind deberías aclarar un poco tu respuesta. Nadie realmente usa una sola B como unidad y la razón es exactamente lo que sucedió aquí: estás confundiendo bits y bytes. El OP indica "palabras de 8 bits *: por lo tanto, cada palabra tiene 8 bits (1 byte) y solo puede transferir eso en una operación. 256 es simplemente el número de valores posibles que tiene cada palabra, no cuánto se transfiere.
adelphus
21

Una palabra de máquina, o comúnmente solo palabra, es la unidad de datos más grande que la CPU puede manipular en su conjunto utilizando instrucciones comunes. Esto no tiene nada que ver con el direccionamiento de memoria.

Lo que importa es la resolución de la unidad de dirección , que comúnmente es un byte de 8 bits incluso en arquitecturas de 16/32/64 bits. No tiene que ser igual al tamaño de palabra de la máquina, pero probablemente lo sea en su caso.

Una unidad direccionable de 8 bits combinada con un bus de direcciones de 16 bits asciende a 64 KB de RAM que la CPU puede abordar.

Dmitry Grigoryev
fuente
3
Pero he usado máquinas donde la resolución de la unidad de dirección era de 16 bits. (Entonces, el concepto es significativo.)
Martin Bonner apoya a Monica el
44
@MartinBonner Sin embargo, no está directamente relacionado con el tamaño de palabra de la CPU.
glglgl
1
@glglgl: está muy relacionado. No creo que hay alguna arquitecturas que no tienen una unidad de dirección de cualquiera de 8 bits o su tamaño de palabra.
Jules
1
No estoy de acuerdo con la afirmación de que una palabra es la unidad más grande que la CPU puede manipular en su conjunto. El Intel i7 tiene un bus de datos de 64 bits y aún puede usar instrucciones SIMD de 256 bits. Si Wikipedia es correcta, entonces la palabra se refiere al ancho del bus de datos y no al material interno de la CPU.
Thomas Weller
1
@ThomasWeller: 8088 tiene un bus de datos de 8 bits, pero aún tiene instrucciones de 16 bits. De hecho, es un 8086 con un bus de datos más pequeño. Nota: el ancho del bus de datos y la transferencia real también es diferente (piense en datos desalineados).
Giacomo Catenazzi
1

Además, ¿qué significan las palabras de 8 bits?

En contexto, el tamaño de la palabra va con el tamaño de la dirección para describir el bus de memoria. Hay 16 bits en la memoria para que pueda elegir ubicaciones de 64ki. Entonces, cada ubicación contiene 8 bits.

El tamaño de la palabra aquí puede coincidir o no con el tamaño de la unidad de cálculo de la CPU, y esto puede coincidir o no con la granularidad lógica en el direccionamiento.

Por ejemplo, una CPU puede anunciar un bus de 16 bits (para este propósito). Utiliza direcciones de 16 bits en sus instrucciones y, como su ejemplo, tiene 64ki. Pero tiene 15 bits de bus de direcciones y 16 bits de bus de datos. Solo necesita direcciones de 32ki y siempre obtiene 2 bytes con cada ubicación. (Si una instrucción quisiera 1 byte, enviaría la dirección con el menor bit faltante, buscaría ambos bytes en ese paso, luego buscaría el menor bit de la dirección deseada para decidir qué mitad usar).

Tenga en cuenta que el cambio de banco, PAE, etc. mencionado por otros no es relevante aquí. Una unidad de administración de memoria puede usar direcciones de 16 bits y tener una dirección de hardware de 20 bits, por lo que la CPU necesita cambiar y mapear cosas para hacer uso del rango real de direcciones de 20 bits de chips RAM que se pueden abordar.

Asegúrese de especificar unidades en sus respuestas. "64ki". ¿De que? Palabras de 8 bits, lo que hace (todavía) 64ki bytes de RAM direccionable. Ese paso elimina la confusión y hace que problemas como este sean triviales.

JDługosz
fuente
0

También debe usar el tamaño de palabra en los cálculos. La respuesta es 64 KB.

Puede abordar 2 ^ 16 palabras y cada palabra es de 8 bits (= 1 byte). Por lo tanto, es de 64 KB.

Si el tamaño de la palabra era de 16 bits. La respuesta sería 128 KB.

Nuri Tasdemir
fuente
1
Su cálculo no es válido para las CPU comunes de 32 bits que aún pueden direccionar 2 ^ 32 bytes de memoria (4 GB), no (2 ^ 32) * 4 (16 GB).
Dmitry Grigoryev
Las CPU modernas se dirigen a "filas" más grandes y tienen menos líneas de dirección para que coincidan. La pregunta habla del bus de direcciones del lado físico de las cosas. Entonces multiplicar por el tamaño de palabra de ese bus (no el tamaño del registro de la CPU) es correcto.
JDługosz
0

Hay dos lados de esto, lo que su instructor probablemente quiere que le diga y cuál es la realidad.

Primero, lo que tu instructor probablemente quiere que le digas.

"16 bits pueden direccionar 2 ^ 16 ubicaciones de memoria, cada ubicación es de 8 bits. Entonces podemos direccionar una memoria de 524288 bits (65536 octetos)".

Sin embargo, esto refleja una visión del mundo bastante simplificada. La realidad es más complicada y dar una respuesta definitiva requiere más información. Algunas de las formas en que los sistemas reales pueden ser más complicados que esto incluyen.

  • Muchos procesadores no tienen un mapa de E / S dedicado, por lo que es posible que parte del espacio de direcciones de la memoria deba usarse para otras cosas que no sean la memoria.
  • El "tamaño de palabra" del procesador no es necesariamente el mismo que el ancho del bus de datos de memoria o la unidad de memoria direccionable más pequeña.
  • Algunos buses permiten el movimiento de unidades de datos de diferentes tamaños. Esto requiere un direccionamiento adicional que puede o no ser manejado por bits del bus de direcciones principal.
  • Algunos buses multiplexan diferentes señales en las mismas líneas. Por ejemplo, SDRAM usa las mismas líneas de dirección dos veces para enviar una "dirección de fila" y una "dirección de columna".
  • Muchos sistemas utilizan enfoques de cambio de banco para permitir que los programas accedan a más memoria de la que el procesador podría abordar de forma nativa.
lavado
fuente