x
1

E/S mapeada en memoria



E/S mapeada en memoria y E/S independiente son dos métodos de implementar entradas/salidas entre los periféricos y la CPU en un computador. Otro método, no discutido en este artículo, es usar DMA.

La E/S mapeada en memoria usa el mismo bus de direcciones para memoria y dispositivos de E/S, y las instrucciones de la CPU usadas para acceder a la memoria son también usadas para acceder a los dispositivos.

Para tener espacio para los dispositivos de E/S, las áreas del espacio direccionable por la CPU deben ser reservadas para E/S más que para memoria. Esta reserva puede ser tempora(Commodorere 64 podía usar bank switingch entre dispositivos de E/S y memor) o permanente. Cada dispositivo de E/S monitoriza el bus de direcciones de la CPU y responde a cualquier acceso de esta al espacio de direcciones del dispositivo, conectando el bus de datos con la localización en memoria física del dispositivo deseado.

La E/S independiente usa un tipo especial de instrucciones de la CPU para implementar E/S. Principalmente en microprocesadores Intel encontramos las instrucciones IN y OUT que pueden leer y escribir un único byte en un dispositivo de E/S. Estos tienen un espacio de direcciones separadas de la memoria, llevado a cabo o bien por un "pin E/S” extra en la CPU o bien por un bus entero dedicado a E/S.

Un dispositivo de acceso directo a memoria (DMA) no se ve afectado por estos métodos de comunicación CPU-dispositivo, especialmente por la E/S mapeada en memoria. Esto es porque, por definición, DMA es un método de comunicación memoria-dispositivo que evita la CPU.

Una interrupción hardware es otro método de comunicación entre CPU y periféricos. No obstante, se trata siempre separadamente por múltiples razones. Es un iniciador de dispositivo, en oposición a los métodos iniciadores de CPU. Es también unidireccional, pues la información fluye solo del dispositivo a la CPU. Para terminar cada interrupción lleva consigo misma solo un bit de información con la única intención de notificar la interrupción.

La principal ventaja de usar E/S independiente se aprecia en CPUs con limitada capacidad de direccionamiento. Debido a que la E/S independiente separa el acceso a E/S del acceso a memoria, el espacio de direcciones puede ser usado por completo para esta última.

Si los buses de datos y direcciones son compartidos, las operaciones de E/S pueden ralentizar los accesos a memoria. Esto se debe a que los accesos a E/S suelen ser mucho más lentos que los accesos a la memoria principal. En algunas arquitecturas, la E/S independiente opera con un bus dedicado, solventando así este inconveniente.

La ventaja de usar E/S mapeada en memoria es que, dejando a un lado la complejidad extra que conlleva la E/S independiente, la CPU requiere menos lógica interna y por ende más barata, rápida y fácil de construir; esto sigue los principios básicos de RISC, y es también ventajoso en sistemas embebidos. El hecho de que instrucciones regulares de memoria sean usadas para direccionar a E/S también significa que todos los modos de direccionamiento de la CPU que están disponibles para memoria lo estén también para E/S. Ya que los periféricos de 16 bits han quedado anticuados y han sido sustituidos por los de 32 y 64 bits, reservar rangos del espacio de direcciones para E/S no supone un gran problema.

Considerar un sistema construido alrededor de un microprocesador de 8 bits. Dicha CPU tendrá un bus de direcciones de 16 bits, permitiendo direccionar 64 kilobytes (KB) de memoria. En este sistema, los primeros 32 KB del espacio de direcciones serían asignados a la memoria, otros 16 KB a la ROM y el espacio restante a dispositivos como temporizadores, contadores, chips de visualizadores de video, dispositivos generadores de sonido, etc. El hardware de este sistema está organizado de forma que los dispositivos únicamente responderán a direcciones particulares del bus de direcciones, las cuales serán previstas para ellos. Todas las demás direcciones serán ignoradas. Este es el trabajo del decodificador de direcciones, y será lo que establezca el mapa de memoria del sistema.

De esta forma tendríamos un mapa de memoria como el siguiente:


Nótese que este mapa de memoria contiene lagunas, lo cual es bastante común.

Asumiendo que el cuarto registro del controlador de video establece el color de fondo de la pantalla, la CPU podrá establecer este color escribiendo un valor en la posición A003 usando su instrucción de escritura estándar. Usando el mismo método gráficos pueden ser visualizados en pantalla escribiendo valores de caracteres en una área especial de la RAM dentro del controlador de video. Debido a su bajo coste la RAM permitirá visualizadores de bits mapeados.

Las direcciones pueden ser decodificadas completa o incompletamente por un dispositivo.




Escribe un comentario o lo que quieras sobre E/S mapeada en memoria (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!