Entrada/Salida Herman Schinca Organización del Computador I DC - UBA 15 de Mayo de 2012 Herman Schinca Entrada/Salida 15 de Mayo de 2012 1 / 24 E/S Dispositivos E/S Entrada: Teclado, Mouse, Micrófono, etc. Salida: Monitor, Parlantes, Impresora, etc. Entrada/Salida: Módem, Placa de Red, Pantalla táctil, etc. Herman Schinca Entrada/Salida 15 de Mayo de 2012 2 / 24 E/S Esquemas de E/S E/S por encuesta (Polling) o Programada E/S por interrupciones E/S por acceso directo a memoria (DMA) Herman Schinca Entrada/Salida 15 de Mayo de 2012 3 / 24 E/S Registros 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. Tipos de registro: Lectura. Escritura. Lectura/Escritura. Métodos de acceso: E/S independiente (instrucciones especiales: IN y OUT). E/S mapeada a memoria. ORGA1 reserva las direcciones de memoria 0xFFF0 a 0xFFFF para E/S. Herman Schinca Entrada/Salida 15 de Mayo de 2012 4 / 24 Ejercicios Ejercicio 1 Ejercicio 1 Un grupo de criadores de vacas, preocupados por la dificultad que les estaba generando poder charlar, tomar mate y contar las cabezas de ganado, nos pidió que busquemos la forma de programar un molinete que les saque la tarea tediosa de contar sin equivocarse. Nos trajeron una máquina ORGA1 y un dispositivo de E/S llamado Monilete (muy parecido al molinete). Monilete cuenta con un registro de estado mapeado a la dirección de E/S 0xFFF0 de sólo lectura, en el cuál se refleja el paso de las vacas. Inicialmente, el registro se encuentra en el valor 0x0000, y cambia a 0x0001 cuando está pasando una vaca. Escribir una rutina en ensamblador para satisfacer el sistema pedido, guardando el número de vacas ingresadas en R0. Herman Schinca Entrada/Salida 15 de Mayo de 2012 5 / 24 Ejercicios Ejercicio 1 Ejercicio 1: solución noHayVaca: hayVaca: Herman Schinca MOV R0, 0x0000 CMP [0xFFF0], 0x0000 JE noHayVaca ADD R0, 0x0001 CMP [0xFFF0], 0x0001 JE hayVaca JMP noHayVaca Entrada/Salida 15 de Mayo de 2012 6 / 24 Ejercicios Ejercicio 1 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 Herman Schinca Entrada/Salida 15 de Mayo de 2012 7 / 24 Ejercicios Ejercicio 2 Ejercicio 2 Una computadora ORGA1i se encuentra conectada a 3 dispositivos de E/S que actúan como sensores y un dispositivo que actúa como alarma. Cada sensor posee un registro de E/S de sólo lectura 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. El dispositivo de alarma posee un registro de E/S de lectura/escritura (ALARMA) que permite activar las alarmas correspondientes. El bit menos significativo representa la alarma de temperatura, el segundo la alarma de presión y el tercero la alarma de viento. Si el bit está en 1, la alarma está encendida. Las alarmas se apagan manualmente. Herman Schinca Entrada/Salida 15 de Mayo de 2012 8 / 24 Ejercicios Ejercicio 2 Ejercicio 2 a) Mapear los registros de E/S a direcciones de E/S de Orga1. b) Realizar el código para sensar y activar las alarmas correspondientes. c) 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? ¿Y si todos los sensores sobrepasan los máximos? Herman Schinca Entrada/Salida 15 de Mayo de 2012 9 / 24 Ejercicios Ejercicio 2 Ejercicio 2 a) Mapear los registros de E/S a direcciones de E/S de Orga1. b) Realizar el código para sensar y activar las alarmas correspondientes. c) 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? ¿Y si todos los sensores sobrepasan los máximos? Herman Schinca Entrada/Salida 15 de Mayo de 2012 9 / 24 Ejercicios Ejercicio 2 Ejercicio 2 a) Mapear los registros de E/S a direcciones de E/S de Orga1. b) Realizar el código para sensar y activar las alarmas correspondientes. c) 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? ¿Y si todos los sensores sobrepasan los máximos? Herman Schinca Entrada/Salida 15 de Mayo de 2012 9 / 24 Ejercicios Ejercicio 2 Solución Ejercicio 2a) Mapeo de registros. TEMP STATUS 7→ 0xFFF0 ATM STATUS 7→ 0xFFF1 WIND SPEED 7→ 0xFFF2 ALARMA 7→ 0xFFF3 Herman Schinca Entrada/Salida 15 de Mayo de 2012 10 / 24 Ejercicios Ejercicio 2 Solución Ejercicio 2b) sensaT: CMP [0xFFF0], MAX_TEMP ;alcanzó temperatura máxima? JLE sensaA OR [0xFFF3], 0x0001 sensaA: CMP [0xFFF1], MAX_ATM ;alcanzó presión atmosférica máxima? JLE sensaW OR [0xFFF3], 0x0002 sensaW: CMP [0xFFF2], MAX_WIND_SPEED ;alcanzó velocidad máxima? JLE sensaT OR [0xFFF3], 0x0004 JMP sensaT Herman Schinca Entrada/Salida 15 de Mayo de 2012 11 / 24 Ejercicios Ejercicio 2 Solución Ejercicio 2c) Si no se alcanzan los valores máximos, cada iteración ejecuta 6 instrucciones. Por lo tanto, podemos concluir que cada iteración tarda 6 ∗ t sg. Como podemos realizar una única lectura por iteración, se lee la 1 señal cada 6 ∗ t sg. En conclusión, la frecuencia de muestreo es 6∗t Hz. Si, en cambio, se sobrepasan los valores máximos, cada iteración ejecuta 10 instrucciones, tardando 10 ∗ t sg. La señal se lee cada 10 ∗ t sg, dando una 1 frecuencia de 10∗t Hz. Herman Schinca Entrada/Salida 15 de Mayo de 2012 12 / 24 Ejercicios Ejercicio 2 Ejercicio 2 d) 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. Herman Schinca Entrada/Salida 15 de Mayo de 2012 13 / 24 Ejercicios Ejercicio 2 Ejercicio 2 d) 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. Herman Schinca Entrada/Salida 15 de Mayo de 2012 13 / 24 Ejercicios Ejercicio 2 Solución Ejercicio 2d) sensaA: CMP [0xFFF1], MAX_ATM ;alcanzó presión atmosférica máxima? JLE sensaW OR [0xFFF3], 0x0002 sensaW: CMP [0xFFF2], MAX_WIND_SPEED ;alcanzó velocidad máxima? JLE sensaA OR [0xFFF3], 0x0004 JMP sensaA Si no se alcanzan los valores máximos, cada iteración ejecuta 4 instrucciones. Dando una 1 Hz. Si, en cambio, se sobrepasan los valores máximos, frecuencia de muestreo de 4∗t 1 cada iteración ejecuta 7 instrucciones, dando una frecuencia de 7∗t Hz. rut_at_int: OR [0xFFF3], 0x0001 IRET Herman Schinca Entrada/Salida 15 de Mayo de 2012 14 / 24 PIC: Intel 8259 Introducción 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. Herman Schinca Entrada/Salida 15 de Mayo de 2012 15 / 24 PIC: Intel 8259 Introducción Estructura del controlador Algunos de los registros internos del controlador y sus funciones: IRR (Interrupt Request Register) IMR (Interrupt Mask Register) Herman Schinca Entrada/Salida 15 de Mayo de 2012 16 / 24 PIC: Intel 8259 Introducción 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. Herman Schinca Entrada/Salida 15 de Mayo de 2012 17 / 24 Más ejercicios Ejercicio 3 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: TratarMensajeRadial, CalcularMovRobot. EludirExplosivo, RecibirActualizacion. Herman Schinca Entrada/Salida 15 de Mayo de 2012 18 / 24 Más ejercicios Ejercicio 3 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? Herman Schinca Entrada/Salida 15 de Mayo de 2012 19 / 24 Más ejercicios Ejercicio 3 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 EludirExplosivo 0x0002: la dirección de TratarMensajeRadial 0x0004: la dirección de RecibirActualizacion La configuración normal del sistema es la que sigue: IF=1 IMR = (0000 0111)2 IRR = (0000 0000)2 Herman Schinca Entrada/Salida 15 de Mayo de 2012 20 / 24 Más ejercicios Ejercicio 3 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) Herman Schinca Entrada/Salida 15 de Mayo de 2012 21 / 24 Más ejercicios Ejercicio 3 TratarMensajeRadial Completar con assembler 8086 TratarMensajeRadial ; Guardar máscara actual ... ; Setear nueva máscara ... STI CALL TratarMensajeRadial CLI ; Restaurar máscara anterior y registros ... IRET Herman Schinca Entrada/Salida 15 de Mayo de 2012 22 / 24 Más ejercicios Ejercicio 3 TratarMensajeRadial ; Guardar máscara actual PUSH AX IN AX, IMR PUSH AX ; Setear nueva máscara MOV AX , 0x0001 OUT IMR, AX STI CALL TratarMensajeRadial CLI ; Restaurar máscara anterior y registros POP AX OUT IMR, AX POP AX IRET Herman Schinca Entrada/Salida 15 de Mayo de 2012 23 / 24 Más ejercicios Ejercicio 3 ¿Preguntas? Herman Schinca Entrada/Salida 15 de Mayo de 2012 24 / 24