Resumen de los temas Entrada/salida e Interrupciones. ENTRADA/SALIDA, BUSES -Un Bus es una vía de comunicación heterogénea pensada para que un procesador pueda comunicarse con una variedad de dispositivos con características heterogéneas. - Para comunicarse con el procesador a través de un bus un dispositivo necesita una Interfaz que sepa interpretar el Protocolo del bus. - El Protocolo de bus viene determinado por su conjunto de señales (Datos, Dirección y Control) y la forma y tiempo de activarlas para realizar una Transacción. - Un Protocolo de bus tiene dos tipos de Transacciones básicas, de lectura y de escritura. - Cada Transacción requiere una fase de direccionamiento y una fase de datos. - Para que un procesador pueda comunicarse con un dispositivo a través del bus, este dispositivo debe tener asignada una dirección. - Algunos procesadores dividen su espacio de direcciones en dos: espacio de direcciones de entrada-salida y espacio de direcciones de memoria. - Cuando el procesador tiene dividido el espacio de direcciones las transacciones deben especificar sobre qué espacio de direcciones se van a realizar. - Un dispositivo puede tener asignadas direcciones dentro del espacio de direcciones de memoria, dentro del espacio de direcciones de entrada salida o en ambos. - Cuando hablamos de configurar un dispositivo hablamos en primer lugar de asignarle una dirección de bus a cada una de las unidades accesibles independientes de ese dispositivo. - El sistema computador se organiza en una jerarquía de buses, de manera que el bus más próximo al procesador es el más rápido y los buses más lentos se alejan del procesador. - Los dispositivos más rápidos se sitúan en los buses más próximos al procesador (memoria, interfaz de vídeo), los dispositivos más lentos se sitúan en los buses más alejados (teclado, ratón) - Entre los buses se sitúan interfaces de bus a bus que se encargan de acoplar las diferencias de velocidades. INTERRUPCIONES - Las interrupciones son un recurso que reduce los tiempos de espera del procesador por los servicios solicitados a un dispositivo. Mientras el dispositivo realiza las actividades encomendadas, el procesador puede mantenerse ocupado con otras tareas no dependientes del resultado del dispositivo. - No todos los dispositivos necesitan tener capacidad de generar una interrupción. Cuando un dispositivo tiene esta capacidad el procesador debe asignarle un vector de interrupción. - Obtener su vector de interrupción es otra de las actividades que se incluyen dentro del término “Configurar un dispositivo” - Un Vector de interrupción es un identificador que permite al procesador saber cómo obtener la dirección de la rutina de atención a la interrupción que genera ese dispositivo. - Debido a que el procesador tiene un número limitado de entradas de interrupción, cada vez que se genera una interrupción el procesador necesita identificar primero al dispositivo que la generó y obtener su vector de interrupción. - El proceso de identificar al dispositivo que generó la interrupción se denomina Reconocimiento de Interrupción y suele implementarse como una transacción especial del bus del procesador. - Las Transacciones Especiales son un tipo de transacciones en las cuales la fase de dirección no indica ninguna dirección específica porque se sobre entiende hacia qué dispositivo van dirigidas. - Se han implementado dos grandes estrategias para realizar un Reconocimiento de Interrupción. En la primera el procesador debe ir explorando dispositivo por dispositivo hasta encontrar el que generó la interrupción (Por consulta). En la segunda el propio dispositivo debe realizar la labor de identificarse ante el procesador (Vectorizada) - En los sistemas x86 el esquema adoptado es Vectorizado y se utiliza un dispositivo Controlador de Interrupciones que se encarga de responder a las transacciones de Reconocimiento de Interrupción. - El Controlador de Interrupciones recibe directamente las peticiones de interrupción de los dispositivos y las comunica al procesador. Para ello tiene un conjunto de entradas físicas llamadas IRQ (interrupt Request) a las cuales debe pincharse físicamente la línea correspondiente del dispositivo. - En los sistemas x86 la manera de Configurar un Dispositivo con respecto a las interrupciones empieza por asignarle una IRQ. El Driver del dispositivo se encargará de identificar cual es el vector de interrupción asociado a esa IRQ y de instalar en la localización correspondiente la rutina de atención a la interrupción de ese dispositivo. DMA - En el bus del procesador, el único que inicia transacciones es el procesador. Todos los demás dispositivos esperan pasivamente a que el procesador los señale con su dirección durante una transacción. - Con el fin de reducir trabajo al procesador se vio la conveniencia de que algunos dispositivos pudieran hacer llegar directamente sus datos a los módulos de memoria sin necesidad de ocupar al procesador. Entonces se creó el controlador de DMA - Un controlador de DMA (acceso directo a memoria) es un dispositivo que tiene capacidad de iniciar una transacción dentro del bus del procesador. - El controlador de DMA es capaz de transferir datos desde memoria hasta un dispositivo y viceversa sin intervención del procesador. - El controlador de DMA tiene una serie de canales que deben ser asignados a los dispositivos que van a utilizar sus servicios. Esta asignación de canales a los dispositivos es una tercera actividad que debe realizarse durante la Configuración de los dispositivos al instalarlos en el bus del procesador. Configuración: Asignación de: -rango de direcciones de memoria -rango de direcciones de entrada salida -IRQ (del controlador de interrupciones) -canal DMA.