campo de dirección y palabras de memoria

"Considere como ejemplo una computadora típica de esa época que podría haber tenido un campo de dirección de 16 bits en sus instrucciones y 4096 palabras de memoria. Un programa en esta computadora podría direccionar 65536 palabras de memoria".

No entiendo algunos de los términos. Qué se entiende por "campo de dirección de 16 bits" , "palabras de memoria" . ¿Y qué denota "4096"?

No entiendo lo que dice el autor. Explique la oración completa.

Respuestas (3)

Comencemos con la palabra "palabra" (juego de palabras)

En este caso representa el tamaño predeterminado del medio de almacenamiento del sistema. Esto podría ser cualquier cantidad de bits, pero comúnmente era de 8 bits (en, por ejemplo, el Z80 del ZX Spectrum, etc.), o 16 bits en los primeros sistemas de PC (8086, 80286, etc.).

Entonces, una computadora de 8 bits tiene un tamaño de palabra de 8 bits.

Luego hay 16 bits de dirección. Este es literalmente el número de líneas de dirección en el chip. Nuevamente, tomando el Z80 como ejemplo, hubo 16 de ellos (A0 a A15). Esto da una posible 2 dieciséis direcciones - 65536.

Cada una de esas direcciones representa la ubicación de memoria de una palabra de datos.

Son 65535 palabras disponibles: en un sistema de 8 bits, son 64 KBytes. En un sistema de 16 bits, sería el doble a 128 KBytes.

Ahora, la memoria RAM, la memoria ROM y (dependiendo de la arquitectura) los periféricos IO tomarán un número de esas 65536 direcciones.

Digamos, por ejemplo, que tiene 2K de ROM y 4K de RAM. Eso es 2048 direcciones de ROM y 4096 direcciones de RAM. No todas las direcciones se utilizan, por lo que hay espacio para la expansión de la memoria, por ejemplo.

El ZX Spectrum 48K tenía 16K de ROM y 48K de RAM, por ejemplo. Son 16384 direcciones que apuntan a la ROM y 49152 direcciones que apuntan a la RAM.

La cantidad de direcciones 65536 disponibles que se utilizan realmente depende únicamente del diseñador de la computadora.

La primera PC estaba basada en 8088, que tenía una ruta de datos de 8 bits. Creo que IBM se decidió por el 8088, en lugar del 8086 de 16 bits, para usar dispositivos periféricos de 8 bits más baratos y mantener el precio bajo.
Que lo hicieron, es por eso que mencioné específicamente 8086, no el 8088, que es casi similar al Z80.
¿Puede explicar esto? "Digamos, por ejemplo, que tiene 2K de ROM y 4K de RAM. Son 2048 direcciones de ROM y 4096 direcciones de RAM", ¿cómo?
1 KByte son 1024 bytes, eso es 2 10 bytes Si una palabra tiene 8 bits, entonces una palabra es un byte. Eso significa que hay 1024 palabras en 1 KByte de RAM. El 2 10 le dice instantáneamente que se necesitan 10 líneas de dirección para representar 1024 combinaciones posibles. Para 2 KBytes sería 2048 y para 4 KBytes sería 4096 ( 4 × ( 2 10 ) ).

Aquí hay un comienzo. Recomiendo leer un libro de texto, quizás aquel del que has copiado el texto.

Mientras tanto, aquí hay algunos enlaces que busqué en Google para usted:

4096 denota un número. 4096 también es 2^12. Para obtener más información sobre 4096, consulte http://www.wolframalpha.com/input/?i=4096

¿Qué intentaste decir usando el enlace wolframalpha.com/input/?i=4096

Se puede pensar que las palabras de instrucciones dentro de una computadora están compuestas por un conjunto de "campos" de bits en oposición a simplemente una colección de bits. Mire la codificación binaria de cualquier conjunto de instrucciones y verá cómo funciona. Por ejemplo, supongamos que una computadora usa palabras de instrucción de 16 bits. Los 4 bits altos de estos 16 podrían indicar el código de operación general. Estos 4 bits juntos se llamarían el "campo" de código de operación. Dado que contiene 4 bits, hay 16 posibles códigos de operación de alto nivel en esta computadora.

El campo de código de operación = 0 podría indicar una adición, 1 a AND, 2 OR, 3 XOR, 4 jump, etc. La computadora aún necesita más información sobre cada una de estas operaciones para realizarlas. Por ejemplo, el código de operación 0 significa que la ALU se establecerá en la operación AGREGAR, pero es probable que aún exista la opción de qué dos cosas agregar y dónde colocar el resultado. Para esto se utilizan los 12 bits restantes (en este ejemplo). Digamos que esta computadora usa una arquitectura de registro con 16 registros estrechamente acoplados a la ALU. En ese caso, los 12 bits restantes podrían ser tres campos de 4 bits cada uno. Dos campos especifican los dos registros de origen para agregar, y el tercero en qué registro rellenar el resultado.

Otros códigos de operación requieren otros parámetros además de los valores de registro. Por ejemplo, un salto necesita especificar de alguna manera una dirección de memoria de programa. Una forma sería que los 12 bits inferiores de la instrucción de salto proporcionen explícitamente la dirección fija. Eso está bien si la computadora tiene solo 2^12 = 4096 ubicaciones de memoria de programa. Si tiene más, hay una variedad de trucos que se pueden usar. La instrucción de salto podría hacer referencia a uno de los registros que contiene la dirección, o el campo de dirección de 12 bits podría ser un desplazamiento con signo de la dirección actual. Son posibles una serie de otros esquemas, y se ha utilizado una gran variedad.

La sección que citó dice que la computadora en particular en cuestión tenía un campo de dirección de 16 bits de ancho en la instrucción. Eso significa que la instrucción podría especificar 2^16 = 65536 direcciones posibles diferentes. Si se toman como direcciones absolutas, esta instrucción admite un tamaño de memoria de 65536 palabras.

La sección que citó también dice que esta computadora tenía 4096 palabras de memoria, lo cual es algo contradictorio. Quizás esto tenga sentido considerando el contexto antes o después de esta sola oración. Algunas computadoras tienen memorias de programa y memorias de datos separadas, que por lo tanto pueden tener diferentes tamaños. Tal vez en esta computadora lo que sea que esté siendo direccionado por el campo de 16 bits sea una memoria que puede contener hasta 65536 palabras, pero otra memoria es más pequeña. Tenga en cuenta que 4096 = 2 ^ 12, por lo que una dirección completa de la memoria más pequeña solo necesita tener 12 bits de ancho.