Interfaz de memoria con 8086

El microprocesador 8086 puede direccionar hasta 1 MB de memoria (bus de direcciones de 20 bits). La mayoría de los libros muestran un diagrama de esta memoria de 1 MB que, a su vez, muestra tablas de vectores de interrupción, funciones de DOS, rutinas de BIOS que ocupan espacio en la memoria, etc.

MI PREGUNTA:

Cuando se hace referencia a 1 MB de memoria, los libros se refieren a la ROM y RAM de la computadora. ¿Está interconectada la ROM + RAM = 1 MB de memoria? En caso afirmativo, cuando la E/S asignada a la memoria se muestra como un segmento de memoria en este espacio de memoria de 1 MB... ¿significan que los puertos de E/S están ocupando parte de la memoria RAM?

Aquí hay una fuente en PDF que es una pequeña extracción del libro de Edward Solari, "Teoría y operación de ISA y EISA:" ee.nmt.edu/~rison/ee352_spr12/PC104timing.pdf Puede ser útil leer los diagramas de tiempo.

Respuestas (2)

Cuando se hace referencia a 1 MB de memoria, los libros se refieren a la ROM y RAM de la computadora. ¿Está interconectada la ROM + RAM = 1 MB de memoria?

Correcto. La CPU no distingue entre RAM y ROM; el espacio de direcciones de 1 MB se comparte entre ambos.

En caso afirmativo, cuando la E/S asignada a la memoria se muestra como un segmento de memoria en este espacio de memoria de 1 MB... ¿significan que los puertos de E/S están ocupando parte de la memoria RAM?

Algo así como. Los puertos de E/S (como los usan las instrucciones INy OUT) son técnicamente un espacio de direcciones separado en x86 y no ocupan espacio de direcciones de memoria.

Sin embargo, se accede a los periféricos mapeados en memoria como si fueran memoria y ocupan espacio de direcciones de memoria (que comparten con la RAM y la ROM).

1. "Los puertos de E/S son técnicamente una cosa separada en x86, y no ocupan espacio de direcciones" - ¿Podría dar más detalles? 2. "que comparten con la RAM y la ROM": si un puerto I/0 ocupa espacio de direcciones... entonces ocupa espacio DENTRO de la RAM, ¿no?
Usas la línea CE para hablar con uno u otro, por lo que recuerdo cuando envolví un cable 8088
@eliza Solía ​​​​envolver con cables las placas ISA; todavía desearía poder hacerlo, ya que el bus PCI requiere un equipo MUY CARO y tiempo de diseño, mientras que el bus ISA es BARATO y FÁCIL para cualquiera. El 8086 tiene 6 tipos de ciclos de bus básicos: (1) lectura de instrucción, (2) lectura de memoria, (3) escritura de memoria, (4) lectura de E/S, (5) escritura de E/S y (6) reconocimiento de interrupción. [También hay una línea para que los ciclos de E/S puedan ser de 8 bits (6 ciclos) o de 16 bits (3 ciclos).] Dado que los dispositivos en el bus pueden notar la diferencia, la E/S está en un espacio de direcciones diferente al de la RAM/ROM. (También hay un (7) ciclo de parada.) Busque el libro de Edward Solari.
@Eliza Los "puertos de E/S" son una cosa separada con un espacio de direcciones separado (16 bits), pero si un dispositivo hace MMIO (la mayoría de los dispositivos más nuevos lo hacen, e incluso en los viejos tiempos, algo como una tarjeta de video se va a mapear VRAM en el ritmo de la memoria), entonces eso sucede en el espacio de direcciones de la memoria. La mayor parte de los 384k superiores se dedica a tales fines.
Las operaciones de E/S usan la misma dirección y líneas de datos que las operaciones de memoria, pero otras señales en el bus distinguen el acceso de E/S del acceso a la memoria. Ningún dispositivo de memoria implementado correctamente responderá a un acceso de E/S en la dirección F00, y ningún dispositivo de E/S responderá a un acceso de memoria en la misma dirección.

Primero, descargue la hoja de datos 8086 como referencia.

Cuando se hace referencia a 1 MB de memoria, los libros se refieren a la ROM y RAM de la computadora.

Se refieren al espacio direccionable del microprocesador. Mire la hoja de datos, muestra las líneas A19: A16 y AD15: AD0 que se utilizan para abordar el espacio exterior durante el ciclo T1. A la CPU no le importa lo que hay en el espacio exterior, solo le dice que quiere contenidos de la dirección específica.

¿Está interconectada la ROM + RAM = 1 MB de memoria?

Puede tener ROM, RAM y cualquier cosa que responda en el bus de datos a la CPU cuando solicita una dirección específica. La ROM y la RAM son solo los tipos más comunes de dispositivos que responderán.

cuando la E/S asignada a la memoria se muestra como un segmento de memoria en este espacio de memoria de 1 MB

Mira aquí . La CPU usa un pin para identificar en su mundo exterior el tipo de comando que usa para acceder (leer [RD] o escribir [WR]), su nombre es M/IO. Si este pin es alto, el comando que se ejecuta en la CPU es una instrucción MOV y se esperan contenidos del espacio de la memoria . Cuando este pin es bajo, la CPU está ejecutando la instrucción IN/OUT y se esperan contenidos del dispositivo de entrada/salida .

Sin embargo , nada prohíbe que el posible dispositivo de E/S responda cuando este pin M/IO esté alto y sea como una memoria .

En general, estos tipos ( espacio de memoria y espacio de E/S) se diseñaron en los viejos tiempos cuando la memoria RAM era escasa y la lógica costosa; tener un circuito de E/S separado liberará espacio direccionable de memoria y era más pequeño que el espacio direccionable de memoria (por ejemplo, 16 bits, o incluso 8 bits en lugar de 20/16 bits). Era conveniente y comprensible.

Sin embargo, algunos diseñadores de los dispositivos decidieron que querrían que sus posibles dispositivos de E/S respondieran a lecturas y escrituras de celdas de RAM, en lugar de lecturas/escrituras de puertos; las razones podrían ser que la E/S de RAM es más rápida, ocupa menos bytes de instrucción, etc.

¿Significan que los puertos de E/S están tomando parte de la memoria RAM?

Sí: el dispositivo de E/S asignado a la memoria , que responde a la solicitud de lectura/escritura en el espacio direccionable de la memoria , quita ese espacio del espacio útil de la RAM. Por ejemplo, en las computadoras más antiguas de 8 bits con RAM ranurada, los diseñadores a menudo implementaban registros de E/S del controlador de disquete (que es entrada/salida en lugar de dispositivo de memoria) para que fueran direccionables a través de ubicaciones especiales de RAM.

Una buena respuesta, excepto la última parte: no, en 8086, los puertos de E/S NO ocupan espacio en la memoria RAM.
De acuerdo, esta parte era confusa, editada agregando "memoria asignada". La pregunta anterior contenía "E / S asignadas a la memoria" y supuse que también se relaciona con esta última pregunta. Ahora debería estar 100% claro.