Introducción Ejercicios PIC: Intel 8259 Más ejercicios Entrada/Salida Polling e Interrupciones Juan Pablo Galeotti Organización del Computador I Departamento de Computación - FCEyN UBA 25 de Octubre del 2011 Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas 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, ... Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas 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 Esteban. Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Registros de los dispositivos de E/S Los registros de los dispositivos son su medio de comunicación más común con el resto de los componentes del sistema. Pueden ser leı́dos o escritos por un tercero (por ej.: el CPU) de lectura su contenido no puede ser modificado desde afuera. de escritura sólo se puede escribir en ellos. de lectura y escritura se pueden leer y escribir. Dependiendo de la arquitectura: E/S independiente. (a través de instrucciones especiales IN y OUT). E/S mapeada en memoria. ORGA1 reserva las direcciones de memoria FFF0h a FFFFh para E/S. Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Polling: Ejercicio 1 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. Introducción Ejercicios PIC: Intel 8259 Polling: pseudo-código c o n t a d o r =0; while ( true ) { w h i l e ( M o l i n e x ==0) {/∗ w a i t ∗/} c o n t a d o r ++; w h i l e ( M o l i n e x ==1) {/∗ w a i t ∗/} } Más ejercicios Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Polling: assembler Solución noHay: hay: MOV R0, 0x0000 CMP [0xFFF0], 0x0000 JE noHay ADD R0, 0x0001 CMP [0xFFF0], 0x0001 JE hay JMP noHay Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Polling: Ejercicio 1 Pregunta Si en lugar de tener direcciones mapeadas a memoria tuviéramos un espacio de direcciones distinto para E/S. ¿Cómo cambiarı́a el programa? Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios El procesador Orga1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad para atender la interrupción (enmascarable) de un único dispositivo de E/S. Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios El procesador Orga1i El procesador ORGA1i es un procesador ORGA1 que ha sido extendido con la capacidad para atender la interrupción (enmascarable) de un único dispositivo de E/S. nuevas señales: INTR, INTA nuevo flag: I nuevas instrucciones: CLI y STI IRET PUSH Ri y POP Ri nueva dirección reservada: 0x0000 Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Ejercicio 2 Una computadora Orga1i se encuentra conectada a 3 dispositivos de E/S que actúan como sensores. Cada sensor posee un registro de E/S que reporta información climática. Los sensores son: Temperatura: Mide temperatura en grados celsius (TEMP STATUS) Presión Atmosférica: Mide presión en HectoPascales (ATM STATUS) Intensidad del Viento: Mide intensidad en Metros/Segundo (WIND SPEED) Las etiquetas MAX TEMP, MAX ATM, MAX WIND SPEED son constantes de 16 bits. Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Ejercicio 2 a) Mapear los registros de E/S a direcciones de E/S de Orga I y completar el siguiente código: sensar: CMP [...], MAX_TEMP ;alcanzó temperatura máxima? JG alarma CMP [...], MAX_ATM ;alcanzó presión atmosférica máxima? JG alarma CMP [...], MAX_WIND_SPEED ;alcanzó velocidad máxima? JG alarma JMP sensar alarma: CALL sonarAlarma ;invoca rutina de alarma JMP sensar Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Ejercicio 2 a) Mapear los registros de E/S a direcciones de E/S de Orga I y completar el siguiente código: sensar: CMP [...], MAX_TEMP ;alcanzó temperatura máxima? JG alarma CMP [...], MAX_ATM ;alcanzó presión atmosférica máxima? JG alarma CMP [...], MAX_WIND_SPEED ;alcanzó velocidad máxima? JG alarma JMP sensar alarma: CALL sonarAlarma ;invoca rutina de alarma JMP sensar b) Suponiendo que el ciclo de instrucción de cada instrucción del programa tarda t sg y los valores máximos nunca se alcanzan ¿cuál es la frecuencia (en Hz) de muestreo (lectura) de los registros de E/S? Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Ejercicio 2 c) Suponga que el CPU cuenta con soporte para una interrupción. El sensor de temperatura solicita una interrupción si se alcanza la temperatura máxima. i. Modificar el programa presentado para aprovechar esta caracterı́stica de modo que la frecuencia de muestreo sea mayor. ii. Escribir la rutina de atención de la interrupción del sensor de temperatura. Introducción Ejercicios PIC: Intel 8259 Solución Ejercicio 2a) Mapeo de registros. TEMP STATUS 7→ 0xFFF0 ATM STATUS 7→ 0xFFF1 WIND SPEED 7→ 0xFFF2 Más ejercicios Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Solución Ejercicio 2a) y 2b) sensar: alarma: CMP [0xFFF0], MAX TEMP JG alarma CMP [0xFFF1], MAX ATM JG alarma CMP [0xFFF2], MAX WIND SPEED JG alarma JMP sensar CALL sonarAlarma JMP sensar Si no se alcanzan los valores máximos, cada iteración ejecuta 7 instrucciones. Por lo tanto, podemos concluir que cada iteración tarda 7 ∗ t sg. Como podemos realizar una única lectura por iteración, se lee la señal cada 7 ∗ t sg. 1 En conclusión, la frecuencia de muestreo es 7∗t Hz. Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Solución Ejercicio 2c) sensar: alarma: CMP [0xFFF1], MAX ATM JG alarma CMP [0xFFF2], MAX WIND SPEED JG alarma JMP sensar CALL sonarAlarma JMP sensar Cada iteración ejecuta 5 instrucciones. Por lo tanto, podemos concluir que cada iteración tarda 5 ∗ t sg. Como podemos realizar una única lectura por iteración, se lee la señal cada 5 ∗ t sg. En 1 1 > 7∗t Hz. conclusión, la frecuencia de muestreo es 5∗t rut at int: CALL sonarAlarma IRET Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Controlador de Interrupciones Es un módulo cuyo objetivo es gestionar la entrada/salida para el procesador. El controlador recibe un conjunto de señales de los distintos dispositivos, toma la decisión cual es la más prioritaria y envı́a una señal al procesador. Introducción Ejercicios PIC: Intel 8259 Controlador de Interrupciones Más ejercicios Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Controlador de Interrupciones: Intel 8259 Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Controlador de Interrupciones: Intel 8259 Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Estructura del controlador Algunos de los registros internos del controlador y sus funciones: IRR (Interrupt Request Register): Cuando se activan una o varias de las entradas IR, estas quedan reflejadas en los bits correspondientes del IRR. IMR (Interrupt Mask Register): El programador puede enmascarar algunas interrupciones de manera que si se activase la IR correspondiente, el controlador la ignorará. Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Ciclo de reconocimiento de interrupción 1 El controlador activa la salida INTR señalándole a la CPU la existencia de una interrupción activada. 2 Al recibir la señal, el procesador da un pulso en su salida INTA indicando que comienza un ciclo de reconocimiento de interrupción. 3 Al recibir el controlador el pulso por su entrada INTA coloca el número de interrupción en el bus de datos. 4 El procesador obtiene el número de interrupción del bus de datos y lo utiliza para obtener la dirección de la rutina de interrupción indexando el vector (tabla) de interrupciones. 5 El controlador atómicamente almacena el registro de flags y el PC en la pila antes de comenzar la ejecución de la rutina de atención de interrupción. Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Interrupciones: Ejercicio 3 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: RAI TratarMensajeRadial, RAI CalcularMovRobot. RAI EludirExplosivo, RAI RecibirActualizacion. Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Interrupciones: Ejercicio 3 Enunciado a) Describa la configuración inicial del sistema suponiendo que se usa un PIC Intel 8259. 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? Introducción Ejercicios PIC: Intel 8259 Más ejercicios Interrupciones: Ejercicio 3 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 memoria tiene los siguiente valores: 0x0000: la dirección de RAI EludirExplosivo 0x0002: la dirección de RAI TratarMensajeRadial 0x0004: la dirección de RAI RecibirActualizacion La configuración normal del sistema es la que sigue: IF=1 IMR = (0000 0111)2 IRR = (0000 0000)2 Preguntas Introducción Ejercicios PIC: Intel 8259 Más ejercicios Preguntas Interrupciones: Ejercicio 3 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 y INTR=1 entonces a. b. c. d. e. Apila PSW Apila PC Deshabilita interrupciones (IF:=0) responde INTA Obtiene ID del dipositivo y coloca PC = InicioVector + ID ∗ 2 (indexado por 16 bits) Introducción Ejercicios PIC: Intel 8259 Más ejercicios RAI TratarMensajeRadial Completar con assembler 8086 la RAI TratarMensajeRadial ; Guardar mascara actual ... ; Setear nueva mascara ... STI CALL TratarMensajeRadial CLI ; Restaurar mascara anterior y registros ... IRET Preguntas Introducción Ejercicios PIC: Intel 8259 RAI TratarMensajeRadial ; Guardar mascara actual PUSH AX IN AX, IMR PUSH AX ; Setear nueva mascara MOV AX , 0x0001 OUT IMR, AX STI CALL TratarMensajeRadial CLI ; Restaurar mascara anterior y registros POP AX OUT INTMASK, AX POP AX IRET Más ejercicios Preguntas Introducción ¿Preguntas? Ejercicios PIC: Intel 8259 Más ejercicios Preguntas