Práctico 7, pregunta teórica 2.

Práctico 7, pregunta teórica 2.

de Guillermo Daniel Toyos Marfurt -
Número de respuestas: 2

Buenas, no entiendo muy bien la pregunta teorica 2 del practico 7:

Indique los valores visibles en los buses de direcciones, datos y control al realizar una operación de entrada salida, distinguiendo entre los casos de E/S aislada y E/S mapeada a memoria.


E/S aislada se refiere a la cual para acceder a ella se usan registros o controladores particulares y E/S mapeada es la cual se accede a traves de una direccion en la memoria?

En cuanto a los valores de los buses... Se refiere a que en el bus de direccion va a estar la direccion de memoria, en el caso de E/S mapeada, y en el bus de control encendido los cables wr o rd dependiendo la situación? En el caso de E/S aislada, no utilizo también el bus de direcciones para ver que dispositivo quiero leer? 

En respuesta a Guillermo Daniel Toyos Marfurt

Re: Práctico 7, pregunta teórica 2.

de Federico Rivero -

Estimado,

Creo que la manera más simple de ver esto es pensando en el obligatorio. En esa CPU, la dirección 0xAAAC está mapeada al registro del timer, y si te fijás, la conexión inhibe la escritura en la RAM. En este sentido, el espacio de direccionamiento de entrada salida se solapa con el espacio de direccionamiento de la memoria, y el registro timer 'le roba' la dirección 0xAAAC a la memoria (esa dirección de memoria no se puede escribir, porque al hacer SAVE 0xAAAC, Reg1, se guarda el contenido de Reg1 en el registro del timer y no en la memoria). Esto es tener la entrada salida mapeada a memoria

La alternativa consiste en disponer de señales adicionales en el bus de control, que permitan indicar si se quiere realizar una escritura en un dispositivo de entrada salida o en la memoria. Típicamente existen las señales MEM_RD, MEM_WR, IO_RD e IO_WR (IO viene de input/output - entrada/salida). En estas CPUs existen además instrucciones especiales que permiten escribir en el espacio de entrada/salida, típicamente llamadas IN y OUT. Al ejecutar un IN o un OUT, se van a levantar las señales IO_RD o IO_WR respectivamente, mientras que al ejecutar un LOAD o un SAVE, se levantan las señales MEM_RW o MEM_WR respectivamente. Esto permite reutilizar las direcciones, es decir, puede existir un registro de E/S mapeado a la dirección 0xAAAC y también puede ser utilizada la dirección de memoria 0xAAAC. Esto se llama espacio de direccionamiento de entrada/salida aislado.

Lo que mencionás de la última parte es correcto, en ambos casos, en el bus de direcciones aparece la dirección del puerto a leer/escribir, en el bus de datos aparece el dato a leer/escribir en el registro de E/S, y en el bus de control se levantan las señales IO_RW/IO_WR o MEM_RD/MEM_WR según si se utiliza entrada salida aislada o mapeada a memoria respectivamente.

Saludos,

          Federico