Entrada/Salida Polling e Interrupciones Francisco Garcı́a Eijó Organización del Computador I Departamento de Computación - FCEyN UBA 8 de Junio del 2010 Dispositivos de E/S ¿Qué son los dispositivos de E/S? Dispositivos de E/S ¿Qué son los dispositivos de E/S? Los dispositivos de E/S son aquellos que interactuan con la unidad central de procesamiento de una computadora. Entrada: Teclado, Mouse, Joystick, Webcam, Escáner, Micrófono, ... Salida: Monitor, Auriculares, Impresora, Plotter, Proyector, ... Entrada/Salida: Unidades de almacenamiento, Módem, Placa de red, USB, ... Esquemas de E/S Esquemas de E/S E/S por encuesta (Polling) o Programada: Utilizado en las primeras computadoras (Apple II) o en algunos sistemas embebidos. La CPU sondea periódicamente al dispositivo para ver cuál es su estado. Sencillo pero claramente ineficiente. Esquemas de E/S E/S por encuesta (Polling) o Programada: Utilizado en las primeras computadoras (Apple II) o en algunos sistemas embebidos. La CPU sondea periódicamente al dispositivo para ver cuál es su estado. Sencillo pero claramente ineficiente. E/S por interrupciones: Es el dispositivo quien establece el momento en que se realizará la transferencia de datos. Cuando la CPU recibe notificación de la interrupción detiene el programa en ejecución, ejecuta la RAI y finalmente devuelve el control al programa. Esquemas de E/S E/S por encuesta (Polling) o Programada: Utilizado en las primeras computadoras (Apple II) o en algunos sistemas embebidos. La CPU sondea periódicamente al dispositivo para ver cuál es su estado. Sencillo pero claramente ineficiente. E/S por interrupciones: Es el dispositivo quien establece el momento en que se realizará la transferencia de datos. Cuando la CPU recibe notificación de la interrupción detiene el programa en ejecución, ejecuta la RAI y finalmente devuelve el control al programa. E/S por acceso directo a memoria (DMA) Próxima clase con Maria Elena. Polling: Ejercicio 1 Enunciado Debido a la gran cantidad de personas que utilizan la lı́nea de Subte B los dı́as de semana. Nos han pedido el desarrollo de un sistema que permita contar el número de personas ingresadas a la estación Los Incas de forma automática. Para ello contamos con una computadora con arquitectura ORGA1 y un dispositivo de E/S llamado molinex (muy similar al famoso molinete que todos conocemos). Molinex cuenta con un registro de estado mapeado a la dirección de E/S 0xFFF0, en el cuál se refleja el paso de las personas. El registro inicialmente se encuentra en el valor 0, y cambia a 1 con el ingreso de una persona. Escribir una rutina en ensamblador para satisfacer el sistema pedido, guardando el número de personas ingresadas en R0. Polling: Ejercicio 1 Solución ciclo: llegoPers: MOV R0, 0x0000 CMP [0xFFF0], 0x0001 JE llegoPers JMP ciclo ADD R0, 0x0001 MOV [0xFFF0], 0x0000 JMP ciclo Polling: Ejercicio 2 Enunciado Se desea dotar a un estacionamiento de un sistema automático de iluminación. Este sistema debe controlar la entrada y salida de vehı́culos a través de la única entrada al estacionamiento, apagando las luces cuando no hay vehı́culos dentro, y enciendiéndolas cuando los hay. Para esto, se dispone de una computadora ORGA1 y 2 dispositivos de entrada-salida: Un controlador del sistema de iluminación, que tiene 1 registro de estado mapeado en la dirección 0xFFF0 (CTRL) que permite apagar y encender todas las luces del lugar (0: apagado; 1: prendido). Un sensor de aproximación, ubicado en la única puerta de entrada al estacionamiento, y cuenta con 2 registros de estado, mapeados en las direcciones 0xFFF5 (S1) y 0xFFF7 (S2). Cada registro representa el estado de un rayo infrarrojo que se ubica lo suficientemente lejos uno del otro para determinar si un vehı́culo está entrando o saliendo (El rayo S1 es el que se encuentra más cerca de la calle). Para ambos registros la constante 1 indica que el rayo fue interrumpido (y hay un vehı́culo pasando) y con 0 que no. Escribir una rutina en pseudocódigo que controle estos dispositivos. Para simplificar el problema suponga que ningún auto es indeciso (siempre que pasa por uno de los rayos, pasa por el otro) Polling: Ejercicio 2 Solución While (True) If S1 y Despues S2 Espero que se apaguen S1 y S2 NroAutos++ ElseIf S2 y Despues S1 Espero que se apaguen S1 y S2 NroAutos-Endif If NroAutos==0 y LuzEncendida ApagarLuz() ElseIf NroAutos>0 y LuzApagada PrenderLuz() Endif EndWhile Interrupciones: Ejercicio 3 Enunciado Modificar la arquitectura de ORGA1 para dotarla de la capacidad de atender la interrupción de un único dispositivo de E-S. Indicar claramente qué cosas son responsabilidad del hardware y qué del software. Interrupciones: Ejercicio 3 Solución Enunciado del ejercicio 2 de la práctica 6. Interrupciones: Ejercicio 4 Enunciado El sistema de navegación de un robot está compuesto por 5 dispositivos de E-S: un componente de visión, un motor, un receptor de actualizaciones, un detector de explosivos. un radio receptor, Tı́picamente, el procesador del robot recupera información del sistema de visión y la suministra al motor para gobernar su movimiento. El componente de radio-recepción solicita la interrupción de este ciclo al recibir información especı́fica desde la base de control. Adicionalmente, el dispositivo de detección de explosivos solicita la interrupción cuando se encuentra en la cercanı́a de un artefacto peligroso. El receptor de correo electrónico posibilita al robot actualizar el estado del sistema. Estos componentes se encuentran coordinados por un sistema que permite administrar las prioridades de las solicitudes de interrupción del dispositivo radio y del dispositivo detector. Existen 4 rutinas ya programadas: TratarMensajeRadial, CalcularMovimientoRobot. EludirExplosivo, RecibirActualizacion. Controlador de Interrupciones Controlador de Interrupciones Interrupciones: Ejercicio 4 Enunciado a) Describa las caracterı́ticas del controlador de interrupciones y la configuración inicial del sistema. b) ¿Qué acciones se llevan a cabo (tanto desde el hardware como desde el software) en el sistema cuando el componente Detector solicita una interrupción? c) Escriba la rutina de atención de interrupción del radio receptor. Aclaración: Es posible completar el enunciado en los aspectos que estimemos necesarios. Interrupciones: Ejercicio 4 Solución a) Armamos un PIC 8259A (simplificado) que posee con 2 registros de Entrada-Salida para configurarlo y obtener información de su estado: IMR (Interrupt Mask Register): Se encuentra el registro con la máscara de interrupciones. Es de lectura y de escritura. IRR (Interrupt Request Register): Las solicitudes actuales de los dispositivos. De lectura solamente. La memoria tiene los siguiente valores: 0x0000: la dirección de la rutina de atención de la interrupción del detector (esta rutina deberá llamar a EludirExplosivo). 0x0002: la dirección de la rutina de atención de la interrupción del radio (esta rutina deberá contener el llamado a la rutina TratarMensajeRadial). 0x0004: la dirección de la rutina de atención de la interrupción del actualizador (esta rutina deberá contener el llamado a las rutinas RecibirActualizacion). Los componentes están conectados a las siguientes lı́neas de solicitud del PIC IRQ 0: Componente Detector IRQ 1: Componente Radio IRQ 2: Componente Receptor de Actualizaciones La configuración normal del sistema es la que sigue: IF=1 IMR = (0000 0111)2 Interrupciones: Ejercicio 4 Solución b) 1. Detector levanta IRQ0 2. CI (8259A) estima si corresponde enviar solicitud de int. al CPU (INTR) 3. CPU termina ciclo 4. Si IF=1 entonces a. b. c. d. Apila PSW Apila PC responde INTA Obtiene ID del dipositivo y coloca PC = InicioVector + ID (indexado como tenga que ser) Interrupciones: Ejercicio 4 Solución c) RAI Radio: CLI ; Guarda la mascara actual PUSH AX IN AX, INTMASK PUSH AX ; Setear nueva mascara MOV AX , 0x0001 OUT INTMASK, AX STI ; apila el registro AX ; copia el contenido del reg. de ES INTMASK en AX ; apila la máscara actual ;copia el contenido de AX en el reg. de ES INTMASK CALL TratarMensajeRadial CLI POP AX OUT INTMASK, AX POP AX STI IRET ; Restauro mascara y el registros AX ; volver de la interrupción ¿Preguntas?