Conceptos de E/S: Polling, Interrupciones, DMA

Anuncio
Conceptos de E/S:
Polling,
Interrupciones,
DMA
Sistemas con
Microcontroladores y
Microprocesadores
http://www.herrera.unt.edu.ar/procesadores
Esquema de un Sistema de Control



Las variables de entrada se
miden mediante sensores.
Se obtienen así variables
eléctricas analógicas y/o
digitales.
Las variables analógicas
ingresan vía conversor A/D.


Previa adaptación de niveles de
tensión.
El programa en el MC toma
acción mediante variables de
salida.
Ej. Abrir Válvulas de una
caldera.
 Manejan actuadores.
 Conversión D/A y cambio de
nivel mediante
 A veces señales digitales
directamente.


Si las variables son muchas se
pueden multiplexar
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
2
Control


El control de un sistema se puede realizar, en
general, en forma analógica o digital.
El control analógico: se implementa mediante
circuitos analógicos y emplea variables analógicas.



Ventaja: respuesta mucho más rápida a los cambios.
Este tema se desarrolla en otros cursos.
El control digital se implementa usando señales
lógicas (1 o 0).

Requiere




Conversor A/D para entrada y D/A para salidas.
Muchas veces ingresan o salen señales digitales.
Ventaja: tiene una mayor inmunidad al ruido. ¿por qué?
El control digital puede implementarse mediante:


Lógica cableada (con compuertas y componentes)
Lógica programada (que emplea además un procesador).
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
3
Ventajas de Lógica Programada


Flexibilidad. En general se requiere solo cambiar
el programa.
Mayor Economía.



Facilidad de Mantenimiento.




Los mC son sumamente baratos.
Se puede agregar más funcionalidad de manera simple y
casi sin costo adicional.
Se pueden diseñar sistemas con programas de autotest.
Es más sencillo mantener un programa que un circuito.
Existen herramientas en PC de desarrollo y
mantenimiento.
Revolución del mP.


12/11/2014
Hasta 1980, el control digital solo podía implementarse
con lógica cableada.
¡Las computadoras eran demasiado caras!
Sistemas con Microcont. y Microproc. - UNT
4
Confiabilidad y Disponibilidad



Confiabilidad: Tiempo hasta que se produce una caída de servicio.
 MTTF: Tiempo medio hasta la caída.
 AFR: Tasa anual de fallas.
Disponibilidad: Porcentaje de tiempo que el sistema está disponible.
 MTTR: Tiempo medio de la reparación.
 D = MTTF / (MTTF + MTTR).
Disponibilidad se mejora:
 Mejorando Confiabilidad
 Agregando Hw Redundante.
 Ej: agregar ECC (error correction code)a la memoria.
 Mantenimiento Preventivo.
 Disminuyendo Fallas.
 Mejora de las condiciones de trabajo (temperatura, tensión
cte., ).
 Fabricando componentes más confiables.
 Diseñando con menos componentes
 Bajando MTTR.
 Sistemas automáticos de diagnóstico.
Sistemas con Microcont. y Microproc. - UNT
Ventajas Lógica Programada: confiabilidad.



Un sistema con lógica programada puede incluir
funciones de auto revisión e informar si hay
malfuncionamiento.
Puede tomar n medidas de una variable y revisar si
está dentro de un margen de error aceptable y
quedarse con la variable promedio – “blindaje
estadístico al ruido”.
Por último un sistema de lógica programada puede
estar replicado un número impar de veces y tomar
decisiones por mayoría.



Mejora más si cada sistema cumple igual función con
distinto desarrollo.
¿Qué usa menos componentes: un sistema con
lógica programada o con lógica cableada?
¿Alguna ventaja de lógica cableada Vs programada?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
6
Clasificación de la Información


Por la naturaleza: analógica o digital.
Por su contenido: datos, control o status.


Por la forma de transmisión:




¿Cómo sabe el mCcuál es cual?
Serie
Paralelo
Combinación de ambos.
Por el modo de transmisión:


Sincrónico
Asincrónico.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
7
Métodos de E/S

Existen diversas maneras de manejar las entradas/salidas
desde el microprocesador.

Polling (Encuestas): Consiste en testear permanentemente
una señal de status, hasta que esta tome un valor. Entonces
se ejecuta la E/S.


Requiere que el programa principal se ocupe de testear.

Puede testear continuamente y no se puede hacer más nada.

Puede testear periódicamente sin que pare el programa principal.

Si está bien diseñado, atiende más rápido una señal.
Interrupción: Cuando la señal de status toma un valor, el
programa se interrumpe para manejar la E/S.

Mucho más complicado de reproducir para probar.

El programa principal está libre para realizar otras tareas.

No hay desperdicio de tiempo testeando.

Mayor sobrecarga (overhead).
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
8
Ejemplo de E/S Asincrónica.


1.
2.
3.
4.
5.
6.
Se ingresa un byte en
paralelo al mCQY4 vía
Puerto B.
Se ocupan dos líneas de
PTA para Ready y /Strobe.
Inicio: /STB=RDY=1 –perif
listo para recibir.
Perif: /STB=0 – Dato listo.
mC: toma Dato – RDY=0
mC listo próx DatoRDY=1
Perif: /STB=1 – Ok,
prepara próx dato.
Más datos ir a 2
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
9
Entrada por Polling

Estructura de Datos
 Puntero a una tabla.
 Contador: n datos a tomar


Aunque no haya
interrupciones, es
posible utilizar el
detector de flanco
negativo incorporado en
el modulo IRQ (PTA2).
Un flanco negativo se
registra en bit IRQF1 del
registro “IRQ Status and
Control Register”
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
10
Para Recordar
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
11
Programa de Polling.
;Inicializar puertos
MOV 2,INTSCR
BSET 6,CONFIG2
MOV #00,PTA
MOV #01,DDRA
MOV #00,DDRB
...
;Inhabilitar los pedidos de IRQ.
;Habilitar pin PTA2 como IRQ
;Puerto A en 0 (READY = 0)
;Puerto A en entrada, salvo PTA0 que es una salida.
;Puerto B como entrada
;Programa de polling, HX contiene puntero, Contador(en página 0) contiene n.
Poll:
Lazo:
MOV #01,PTA
BRCLR 3,INTSCR,lazo
MOV #00,PTA
BSET 2,INTSCR
MOV PTB,X+
DBNZ Contador, Poll
…
;(READY = 1) Listo para recibir
;lazo hasta que se detecte un flanco negativo
;(READY = 0)
;ACK=1, borra flag detección flanco.
¿Por qué no se pone ACK en 0 con BCLR luego de BSET?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
12
E/S por Interrupciones


Usando interrupciones, es
muy simple manejar una
rutina de E/S asincrónica.
El programa principal debe
ser responsable de inicializar:
 Habilitar
la interrupción
 Variables globales


Puntero inicial a tabla.
Dimensión de la tabla (Contador)
 RDY

= 1, IM = 0.
Atención: Fin de Bloque - no
se pone Ready=1. ¿Por qué?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
13
Rutina de Interrupción
;La inicialización es identica a la inicialización de polling
...
; en el programa principal
MOV #DirH, Puntero
MOV #DirL, Puntero+1
MOV #n, Contador
BCLR 1, INTSCR
;habilito las interrupciones de IRQ
CLI
;habilita interrupciones a CPU08
BSET 0, PTA
;READY = 1
...
Int:
MOV #00,PTA
;READY = 0
PSHH
;Termino de guardar el estado
LDHX Puntero
;Cargo el puntero en H:X
MOV PTB,X+
;Guardo en memoria
STHX Puntero
DEC Contador
BEQ IntFin
;llenó la tabla, no ponga RDY.
MOV #01,PTA
;(READY = 1)
IntFin: PULH
;Recupero el estado que no recupera RTI
RTI
¿Cómo se borra el pedido de interrupción? ¿No con ACK=1?
¿Qué pasa cuando la tabla se llena? ¿Cómo vuelve READY a 1?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
14
Salida de Datos
Tarea Para hacer en la Casa:
Programa de Salida por Polling.
Salida por Interrupciones.

1.
2.
1.
¿Cómo se envía el primer dato?
Tarea para Pensar
¿El diseño es simétrico con Entrada
de datos?

1.
•
•
•
•
12/11/2014
Si conecto dos MCUs, uno de salida, otro
de entrada, ¿funcionarán bien?
¿Estado Inicial? – Ninguno Listo.
Para pasar a listo no hay flanco negativo,
¿cómo se causa la primera interrupción?
¡¡Hacen falta flancos negativos!!
Sistemas con Microcont. y Microproc. - UNT
15
Conexión Asincrónica: 2 mC
mC-R y mC-T (receptor y transmisor).


1.
Inicialización.


2.
Si no hay datos no hace nada.
Pone un dato, /Rdy-T=0 luego /RDY-T=1 y retorna.
mC-R se interrumpe


/RDY-T=1, /RDY-R=1. (No están listos, PUD=1)
mC-R controla que /RDY-T=1 y entonces pone flanco
negativo en /RDY-R e interrumpe a mC-T.
mC-T se interrumple.


3.
/RDY en lugar de RDY.
El diálogo es entre flancos negativos en /STB
Pone /Rdy-R=1, toma un dato y pone /Rdy-R=0, goto 2.
¿Qué pasa si T comienza después que R y no ve el
flanco negativo en /RDY-R?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
16
Tasa Máxima de Transferencia


Tasa máxima a la que el dispositivo puede
transferir datos al MCU sin perder ninguno.
El tiempo que tarda el MCU en procesar un
dato es t= To + Td.
 Td
(tiempo de dato) es el tiempo para pone un
dato en Memoria (idealmente 1 M)
 To (tiempo de overhead) es el tiempo que se tarda
en detectar la señal, saltar al código adecuado,
manejar la linea READY, mantener los punteros,
buscar instrucciones, etc.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
17
Tasa Máxima en Polling


En caso de tasa máxima, el lazo de detección solo se
ejecuta una vez por cada dato que llega, más rápido se
pierden datos.
Los tiempos son:
;*********LAZO POLLING************





Poll:
Lazo:
Si f(bus)=3,2 MHz


Td= 1 M
To= 25 M
t= 26 M.
M=312 ns.
MOV #01,PTA
BRCLR 3,INTSCR,lazo
BSET 2,INTSCR
MOV #00,PTA
MOV PTB,X+
DBNZ Contador, Poll
M
4
5
4
4
4
5
Tasa máxima=123 KB/s
Eficiencia=1/26 =3,75 %

Trabajo útil / Trabajo Total.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
18
Tasa Máx. con Interrupciones

Con IRQ=0, el CPU termina la instrucción actual, guarda el
estado, y salta al lugar escrito en su vector de interrupción.
Con tasa máx. termina una rutina de INT y comienza otra. ¿Por
qué?
 Respuesta a IRQ: 9 ciclos.


Los tiempos son:
Td= 1 M
 To= 46 M
 t= 47 M.


A 3,2 MHzf(bus),


Tasa máxima 68 KBps
Eficiencia = 1/47 = 2,12%
Casi la mitad que en Polling
 Solo en Tasa Máxima.
 ¿Y en otros casos?

12/11/2014
;Instrucción anterior
;cargar interrupción
Int:
MOV #00,PTA
PSHH
LDHX Puntero
MOV PTB,X+
STHX Puntero
DEC Contador
BEQ IntFin
MOV #01,PTA
IntFin: PULH
RTI
Sistemas con Microcont. y Microproc. - UNT
M
0
9
4
2
4
4
4
4
3
4
2
7
19
Resumen

E/S de datos modo asincrónico.
 Polling.
 Interrupciones.
 Conexión
de dos MCUs.
Tasa Máxima.
 Eficiencia Baja.
 ¿cómo mejorar?

12/11/2014
Sistemas con Microcont. y Microproc. - UNT
20
Administrativia

9 de diciembre – parcial.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
21
Modo Bloque

La Tasa Máx. de Transf. con Interrupciones es muy
inferior que con Polling.




Sin embargo, con interrupciones se permite al CPU
realizar otras tareas, mientras que el polling (como lo
hemos diseñado) no.
Desde el punto de vista de la eficiencia, la verdadera
diferencia está en el Tiempo de Overhead, mucho mayor.
Para mejorar la eficiencia con dispositivos
rápidos se ingresan bloques o ráfagas de n bytes
con cada interrupción.
El dispositivo pide INT y luego transmite el bloque
completo.

De esta manera, gran parte del overhead solo se ejecuta
una vez cada n datos y mejora la eficiencia.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
22
Rutina de Interrupción Modo Bloque
;La inicialización es idéntica a la inicialización de polling...
; en el programa principal
MOV #Dir, Puntero
MOV #n, Cont
BCLR 1,INTSCR
CLI
BSET 0,PTA
...
Int:
Lazo:
Stb:
Fini:

MOV #$00,PTA
PSHH
LDHX Puntero
MOV PTB, X+
DEC cont
BEQ fini
MOV #01, PTA
BRCLR 3,INTSCR,Stb
MOV #00,PTA
MOV PTB,X+
BSET 2,INTSCR
DBNZ Cont,Lazo
PULH
RTI
;habilita pedidos de IRQ
;habilita interrupciones en CPU
;pone RDY=1
;READY = 0
;Guardar H
;Cargar puntero
;Mover primer dato y actualizar HX
;actualizar cont para primer dato
;si no hay más termina – redundante
;READY = 1
;lazo hasta próx. flanco negativo
;(READY = 0)
;Clear IRQF – ACK=1
;Lazo del bloque – sale con READY=0
;Recupero H
¿Por qué Clear IRQF?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
23
Tasa Máx en Modo Bloque


No hay espera en STB.
Los tiempos son:






A 3,2 MHz(fbus)



t’= 45 M (fuera de lazo)
t’’=26.n M (dentro del lazo)
T(byte) = T(bloque)/n
T(byte) = 26M + t’/n
Despreciamos t’/n
Tasa Máx= 123 KB/seg
Eficiencia = 3,85%
Similar a Polling.
12/11/2014
;Instrucción anterior
;cargar interrupción
Int:
MOV #$00,PTA
PSHH
LDHX Puntero
MOV PTB, X+
DEC cont
BEQFini
Lazo:
MOV #01, PTA
Stb:
BRCLR 3,INTSCR,Stb
3,INTSCR,Stb
MOV #00,PTA
MOV PTB,X+
BSET 2,INTSCR
DBNZ Cont,
Cont,Lazo
Lazo
Fini:
PULH
RTI
Sistemas con Microcont. y Microproc. - UNT
6
9
4
2
4
4
4
3
4
5
4
4
4
5
2
7
24
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
Limitaciones de E/S.

Dispositivos Rápidos:
 Existe
un límite superior de la tasa de
envío de datos, a partir de allí se pierden
datos.
¿Dispositivos Lentos no tienen
limitaciones?
 ¿Provocan algún otro problema?

12/11/2014
Sistemas con Microcont. y Microproc. - UNT
25
Múltiples Dispositivos Lentos

Sean n dispositivos que transfieren
datos
 Todos
a igual tasa: fdisp
 Todos consumen igual tiempo de CPU,
Tdisp=D (Identificación por Hw).
¿Efecto en la performance con que
corre el programa en el CPU?
 ¿Existe un límite a la cantidad de
dispositivos que puedo conectar?

12/11/2014
Sistemas con Microcont. y Microproc. - UNT
26
Performance con múltiples dispositivos

1.
2.

El tiempo necesario para hacer correr un programa resulta
Sin interrupciones, T = Tprogprinc
Con interrupciones, T’ = Tprogprinc+ n.Tdisp con T’=1/fdisp
Performance de un programa inversamente proporcional a su
tiempo de ejecución.


De (1) y (2) resulta T/T’ = 1 - n.(Tdisp/T’)= 1 - n.D.fdisp
La máxima cantidad de dispositivos a conectar sale
igualando la performance a 0  T/T’=0 :fdisp= 1/n.D o T’=n.D


En este caso, el CPU no ejecuta el programa principal.
Más dispositivos o más tiempo para cada uno implica que se
perderán datos, con o sin buffer.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
27
Ej. Efecto de dispositivos lentos.

Para un MPU a 3,2 MHz en el bus y 20
dispositivos a igual tasa =1 KB/s.
 fdisp=1
KB/s, n = 20.
 Tdisp=47M
 T/T’
 ¡La
(47 ya visto).
= 1 - n.fdisp.Tdisp =0,70
performance ahora es 30% menor!
 nmax

= 14,68 ms
= 1/fdisp.Tdisp = 68.
Resolver en la casa con:
5
dispositivos a 1 KB/s. conjuntamente con15
dispositivos a 2KB/s.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
28
En caso de Polling


Se realizan encuestas periódicas y queda
tiempo para el programa.
Se debe realizar encuestas al ritmo de
ingreso de datos.
 La
duración de cada encuesta depende de
cuántos periféricos hay y cuantos datos se
ingresan.


Así se calcula el tiempo en que el CPU no
ejecuta el programa principal.
El resto del cálculo es similar que lo
visto en Interrupciones.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
29
Limitaciones de E/S

En conclusión:






Hay un límite en velocidad de transferencia para
dispositivos rápidos.
Hay un límite en cantidad de dispositivos lentos que se
pueden conectar.
En ambos casos el Programa Principal corre más lento.
¡CUIDADO CON COP!
Nos interesa incrementar estos límites.
Dos alternativas:


Fuerza Bruta ($$$) – comprar un MCU más rápido.Existe
un límite dado por la tecnología actual.
Diseño (arquitectura).
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
30
Problemas Métodos Anteriores


El CPU es el cuello de botella:siempre habrá
un programa principal que correr.
Cada vez que ingresamos un dato, tenemos
que ejecutar múltiples instrucciones.
 Cada
una tiene su propio Fetch. Por tanto son
muchos accesos a memoria
 En realidad la transferencia de un dato requiere,
al mínimo un único acceso a M.
 Gran diferencia entre lo que tenemos (47M) y lo
mínimo (1M).
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
31
Problema: CPU es Intermediario
CPU
Dispositivo
Memoria
Las líneas denotan conexiones lógicas, no físicas.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
32
Solución: Acceso Directo a M: DMA
Control
DMA
Dispositivo
Memoria
CPU
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
33
Controlador DMA (DMAC)

1.
2.
3.

Un dispositivo controlador (DMA Control) realiza
las siguientesfunciones:
El DMAC debe quitar al CPU el uso del Bus.
El DMAC conecta el puerto al bus y provee todas
las señales y la dirección en donde se debe
realizar la transferencia del dato en M.
Una vez finalizada la transferencia, DMA otorga
al CPU el uso del bus.
Para quitar el CPUs del bus, algunos mP tienen
una entrada que se llama TSC (3’state control)
que permite:


12/11/2014
Ponerlo en estado de alta impedancia
Parar el Clock (“duerme”).
Sistemas con Microcont. y Microproc. - UNT
34
Requerimientos Hw del DMAC
Puntero incrementable a memoria.
 Contador de cantidad de bytes a
transferir.
 Son los mismos requerimientos que
usan las rutinas de E/S por Polling o
por Interrupciones

 La
naturaleza del problema es el mismo.
 Solo varía la forma de implementarlo.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
35
12/11/2014
C
C
Ej. Implementación DMA Bloques
Sistemas con Microcont. y Microproc. - UNT
36
DMA Modo Bloque - Secuencia
1.
2.
3.
4.
5.
6.
7.
8.
9.
El CPU configura al DMA: cuántos datos va a tomar y dónde los va
a poner (PUNT y N)
El periferico manda una señal al DMA: requiere enviar datos: DMAREQ.
El DMA pone el CPU “a dormir” por medio de la señal TSC (control
3’state).
El CPU termina el ciclo M actual y se pone en 3 state, inactivo,
informa esto mediante una señal TSC-ACK.
El DMA otorga al Periférico el uso del DB mediante una señal DMAGRANT y maneja el AB y CB con cada byte que se transmite.
Cuando CONT=0, DMA quita DMA-GRANT.
El DMA despierta al CPU quitando TSC.
El DMA pide interrupción al CPU.
La rutina de interrupción de CPU


10.
pone FLAG=1 para indicar al Programa Principal que hay Datos a
Procesar.
Si se requieren más datos, informa al DMA en qué bloque de M debe
poner los Datos del Periférico, mediante un puntero y un contador
Retorno a Programa Principal.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
37
DMA Modo Byte – Secuencia.
Programa Principal Inicializa DMA cargando Contador y
Puntero.
Periférico Pide DMA-REQ para enviar un byte.
Controlador DMA envía TSC al CPU.
CPU termina ciclo M actual, abandona el bus, queda
inactivo, envía TSC-ACK.
DMA Control permite al Periférico enviar un único Dato y
maneja AB y CB.
1.
2.
3.
4.
5.
Poniendo y quitando DMA-Grant.
Actualiza su contador y Puntero.


DMA Control quita TSC del CPU.
CPU toma el bus y continúa, quita TSC-ACK.
Si Contador=0 en DMA Control
6.
7.
8.


12/11/2014
Pide INT al CPU.
CPU ejecuta Rutina Interrupción que envía nuevos valores de
Contador y Puntero al DMA-Control y FLAG=1 avisa Nuevo
Block.
Sistemas con Microcont. y Microproc. - UNT
38
Límites DMA Modo Byte.







CPU requiere 1M para soltar el bus.
1M para enviar el Byte a M y actualizar puntero y
Contador (Hw).
1M para reactivar el CPU.
Cada transferencia dura 3M (Vs. 26M o 47M).
Se dice que con cada transferencia DMA roba
ciclos de bus al CPU. Este modo se llama “Cycle
Stealing” o “Robo de Ciclo”.
Calcular cantidad máxima de dispositivos que
envían datos a 1 KB/seg c/u. (fbus=3,2MHz)
Calcular cuánto más lento % corre el CPU con 20
dispositivos.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
39
DMA. Efecto dispositivos lentos.

Para un MPU a 3,2 MHz de bus y 20
dispositivos a igual tasa =1KB/s.
 fdisp=1
KB/s, n = 20.
 Tdisp=3M

= 0,937 ms
(3 ya visto).
 T/T’
= 1 - n.fdisp.Tdisp = 0,9813 98,13%
 nmax
= 1/fdisp.Tdisp = 1067
Valores E/S por Interrupción:
 70%
12/11/2014
- nmax= 68
Sistemas con Microcont. y Microproc. - UNT
40
Límites DMA Modo Bloque

To es el tiempo para poner a dormir el
CPU y levantarlo: 2M.
 Despreciable

con n grande.
¡¡ Para cada Byte se requiere 1M !!
 Es
el límite dado por fbus.
 Imposible más rápido con ese bus.
Tasa máxima a 3,2 MHZ = 3,2
MB/seg. (Vs 132 KB/s modo bloques).
 Esta transmisión es sincrónica –
¿Trampa?

12/11/2014
Sistemas con Microcont. y Microproc. - UNT
41
Aclaración Interrupciones

El pedido de interrupción se limpia
automáticamente.
 Con la respuesta a Interrupción.
 NO SOLO EN MODULO IRQ.

En todo otro módulo en que se pueda, por
ejemplo
 Módulo
 Módulo

KBI (Interrupciones de teclado).
ADC (conversor AD)
La experiencia… a veces nos confunde.
 Cuando se cambia de un MCU
 Los técnicos son muy seguros
 siempre hacen lo mismo.

a otro.
Los ingenieros DEBEN LEER Y DUDAR.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
42
T. Máx en M. Bloque Sincrónica - INT.

No hay Ready.
No hay espera en STB.

Los tiempos son:





A 3,2 MHz





T’’=18.n M (dentro del lazo)
Tb= 18M + T’/n
Despreciamos T’/n
Tasa Máx= 178 KB/seg
Eficiencia = 4,5% (1M útil)
Nada que ver con DMA
¿Eficiencia DMA Bloque?
¿DMA Byte?
12/11/2014
;Instrucción anterior
;cargar interrupción
Int:
PSHH
LDHX Puntero
MOV PTB,X+
DEC Contador
Stb:
BRCLR 3,INTSCR,Stb
MOV PTB,X+
BSET 2,INTSCR
DBNZ Contador, Stb
PULH
RTI
Sistemas con Microcont. y Microproc. - UNT
6
9
2
4
4
4
5
4
4
5
2
7
43
T
T
T
T
T
T
T
T
T
T
T
T
Concurso de Cerveza

Pido 10 vasos de cerveza.
1.
2.
3.


Tasa = Medio vaso por minuto
Quiero duplicar mi tasa de
consumo – a un vaso por minuto.


En 10’ el mozo limpia mi mesa y las
trae una por una.
En 10’ minutos me tomo las cervezas.
No puedo tomar mientras el mozo está
poniendo cervezas, porque me choco..
Pido otros10 vasos, volver a 1.
Imposible beber más de 1vaso/min.
¿cómo hago para duplicar?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
44
Swinging Tables (intercambiables)
1.
Pido 10 cervezas.

Le digo al mozo que voy a tomar en dos mesas, que
cuando haya una mesa vacía la llene con cerveza.
2.
En 10’ trae las cervezas a mi mesa.
3.
Comienzo a tomar cerveza.

Al mismo tiempo el mozo va llenando la otra mesa.
4.
En 10’ cambio de mesa y el camarero también y así
sucesivamente.

Tasa de consumo = 1 cerveza por minuto, ¡el doble!

Si no está exactamente sincronizado uno esperará al
otro, y baja la tasa.

Si el mozo se apura un poco, queda con un vaso en la
mano.

PENDIENTE.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
45
Entrada por INT con Swinging Blocks.

2 Bloques en M para datos.



Se llena el primero por Interrupciones.
Programa Principal procesa un bloque




Modo Byte.
Y más aún cuando los dos procesos tienen duraciones
parecidas.
Trabajo Concurrente.


Se va llenando el otro por interrupciones.
Programa Principal e Interrupciones se van
intercambiando los bloques (de allí el nombre).
Se gana cuando el dispositivo es lento.


Al Principio Vacíos
¿Se podrá trabajar en Paralelo?
¿Se podrá realizar DMA con Swinging Blocks?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
46
Swinging Blocks con E/S por INT

Estructura de Datos:
2 tablas de n bytes, una a partir de P0 y otra desde P1.
 Punteros a cada bloque: PUNT0, PUNT1.
 n – indica cantidad de bytes por bloque.
 Contadores para cada bloque: CONT0, CONT1.



NBL – indicador bloque a llenar.



Bytes que falta poner en cada bloque.
0 bloque0, 1 bloque1.
PEND – Avisa que hay una rutina de interrupción pendiente.
Inicialización – Programa Principal.

Configurar:






PTA2 como IRQ en Reg. Config.
IRQ por flanco, habilitada.
CLI en CPU – habilita interrupciones en CPU.
Cont1=n, Cont0=n (los dos bloques están vacíos).
NBL=0 bloque0 a llenar.
RDY=1 – está listo para recibir datos.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
47
Swinging Blocks con E/S por INT
P0
P1
n
EQU
EQU
EQU
$90
$B0
20
PUNT0
PUNT1
NBL
CONT0
CONT1
PEND
ORG
DS
DS
DS
DS
DS
DS
$0080
2
2
1
1
1
1
ORG
MOV
BSET
CLR
CLR
MOV
CLR
MOV
MOV
MOV
MOV
MOV
BSET
MOV
CLI
$FF00
#0,INTSCR
6,CONFIG2
DDRB
PUNT0
#P0,PUNT0+1
PUNT1
#P1,PUNT1+1
#n,CONT0
#n,CONT1
#00, NBL
#00, PTA
0,DDRA
#01, PTA
Init:
12/11/2014
;P0 y P1 a bloques en Pág. 0.
;indica cantidad de bytes por bloque.
;Punteros a cada bloque
;indicador bloque a llenar. 0 bloque0, 1 bloque1.
;Contadores para cada bloque
;Habilitar los pedidos de IRQ. Modo 0 -Flancos
;Habilitar pin PTA2 como IRQ
;configurar puerto B como entrada.
;apuntar los punteros
;Inicializar los contadores
;NBL=0 bloque0 a llenar.
;READY = 0
;configurar PTA0 como salida.
;READY = 1 (que Perif. Vea el flanco).
Sistemas con Microcont. y Microproc. - UNT
48
Rutina de Interrupción
1.
2.
3.
RUTINT: PEND=1.
Guardar H.
Case NBL
1.
0 – Si CONT0=0 entonces recuperar H y Retornar. (bloque lleno,
no procesado todavía – quedó PEND=1).

2.
1 – Si CONT1=0 entonces recuperar H y Retornar.

3.
4.
6.
7.
8.
Else HX=PUNT1, CONT=CONT1
Otro – ejecutar rutina de ERROR.
Llamar rutina Handshake(CONT, HX)


5.
Else HX=PUNT0, CONT=CONT0
Similar a Rutina para un byte por Handshaking por INT 
Actualizar CONTi y PUNTi.
Si CONT=0 entonces NBL=(NBL XOR 1).
PEND=0 (rutint terminó adecuadamente).
Recuperar H.
RTI
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
49
Rutina de Interrupción
RUTINT:
MOV #1,PEND
PSHH
BCLR 0,PTA
LDA NBL
BNE con1
LDA CONT0
BEQ fini
LDHX PUNT0
MOV CONT0,CONT
JSR HANDSHAKE
MOV CONT,CONT0
STHX PUNT0
BRA sigue
con1:
CMP #1
BNE error
LDA CONT1
BEQ fini
LDHX PUNT1
MOV CONT1,CONT
JSR HANDSHAKE
MOV CONT, CONT1
STHX PUNT1
sigue:
LDA CONT
BNEQ prefini
LDA NBL
EOR #01
STA NBL
prefini: CLR PEND
fini:
PULH
RTI
12/11/2014
;hay una interrupción pendiente
;pone RDY=0
;si es bloque1 ir a con1.
;testear si bloque está lleno.
;se puede trabajar en el bloque 0
;uso el bloque 1
;si no, error
;maneja RDY por supuesto.
;Si cont=0, cambiar de bloque
;rutint terminó adecuadamente
Sistemas con Microcont. y Microproc. - UNT
50
Programa Principal
1.
2.
3.
4.
5.
6.
7.
8.
9.
Esperar hasta que
CONT0=0
princ0:
Procesar Bloque0.
CONT0=n
princ1:
SWI. (si INT no
terminó la termina).
Esperar hasta que
CONT1=0
Procesar Bloque1.
CONT1=n
SWI.
Vaya a 1.
12/11/2014
LDA
BNE
JSR
MOV
SWI
LDA
BNE
JSR
MOV
SWI
BRA
CONT0
princ0
proc0
#n,CONT0
;subr p/ proc. block0
;reiniciar contador
CONT1
princ1
proc1
#n,CONT1
;subr p/proc bloque 1
;reiniciar contador
princ0
Sistemas con Microcont. y Microproc. - UNT
51
¿Por qué SWI?




Hay un dato pendiente de ser tomado.
Habría que lanzar de nuevo esa rutina de
Interrupción.
IRQ no llegará de nuevo porque no hubo
cambio en RDY.
La única forma de continuar es mediante
esta SWI que puede llamar a RTI con BRA.
1.
2.
Si Pend=1 branch to Rutint.
Si no hay otra causa, RTI.
…
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
52
Conclusiones del Ejemplo.

Programa Principal muy sencillo.



Son dos “hilos” (threads).






“Hilo”, secuencia de instrucciones que se ejecuta
independientemente (pero comparten datos).
Procesos, secuencias de instrucciones totalmente
independientes.
Uno por delante: procesar (foreground).
Rutina Interrupción en Background.
Alternan entre sí – concurrentemente.
Los “hilos” se intercomunican.


Porque emplea servicios del sistema.
Servicios totalmente transparentes.
Mediante variables PEND, CONT0 y CONT1.
Más de esto en Sistemas Operativos.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
53
Mayor Transparencia: Ideas.




Evitar SWI – P. Principal
transparente 100%.
¿Cómo evitar SWI?
En lugar de PEND=1, RUTINT
llama a Start-Timer.
Al cabo de un tiempo Timer pide INT.

Rutina INT-TIM.




Si bloque está vacío BRA RUTINT
Else JSR Start-Timer: RTI.
Es otro ejemplo de Watchdog.
¿Cuánto tiempo debería esperar Timer?
Timer?
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
54
¿Para qué Swinging Buffers?






Los dos hilos pueden trabajar
concurrentemente.
Sino uno debe quedar esperando hasta que
el otro termine.
Se ve cómo con dos hilos concurrentes
mejoramos la eficiencia del sistema.
También con varios procesos e hilos (SO).
Razón principal de Multitasking - SO.
También vimos varios hilos concurrentes.
 Fácil de ver con dos.
 Con tres es más difícil (Timer).
 Sincronización de hilos y procesos
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
– tema SO.
55
Ejemplo Numérico



Ingresan 200 bytes a razón de 1000
B/seg, por Interrupciones, 40 ms c/u
El programa debe procesar 200 bytes, y
requiere 0,2 seg.
¿Cuánto demora con un buffer?
a.
b.
c.
d.
12/11/2014
T del dispositivo = 1/1000 = 1 ms/byte
Tiempo de la interrupción: 40 ms
Conclusión, los datos ingresan a 1KB/seg.
200 bytes demoran 200 ms.
Demora: 200 ms para ingreso de datos,
200 ms para procesar, total = 400
ms/bloque.
Sistemas con Microcont. y Microproc. - UNT
56
Ejemplo Numérico

¿Cuánto demora con dos buffers?
a.
b.
c.
d.
e.
f.

Ingreso de Datos = 200 ms.
Tiempo de procesamiento = 200 ms.
Si es concurrente, agregar tiempo de
interrupciones = 40 ms x 200 = 8000 = 8 ms.
Total procesamiento 208 ms.
Total Ingreso = 200 ms.
Tiempo = el mayor = 208 ms.
Mejora performance = 400/208

= 1,92 equivale a 92%.
12/11/2014
Sistemas con Microcont. y Microproc. - UNT
57
Descargar