Entrada/Salida - Polling e Interrupciones

Anuncio
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
Descargar