Entrada/Salida

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