Está en la página 1de 56

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


n
n

Las variables de entrada se


miden mediante sensores.
Se obtienen as variables
elctricas analgicas y/o
digitales.
Las variables analgicas
ingresan va conversor A/D.

Puerto S

Previa adaptacin de niveles de


tensin.

El programa en el MC toma
accin mediante variables de
salida.

Actuadores

Ej. Abrir Vlvulas de una


caldera.
Manejan actuadores.
Conversin D/A y cambio de
nivel mediante
A veces seales digitales
directamente.

CD/A

Digitales
Adap. V

MCU

Analogicos

Sensores
CA/D

Puerto E

Adap. V

Analogicos
Digitales

Si las variables son muchas se


pueden multiplexar

31/10/13

Sistemas con Microcont. y Microproc. - UNT

Control
n
n

El control de un sistema se puede realizar, en


general, en forma analgica o digital.
El controlanalgico: se implementa mediante
circuitos analgicos y emplea variables analgicas.

Ventaja: respuesta mucho ms rpida a los cambios.


Este tema se desarrolla en otros cursos.

El control digital se implementa usando seales


lgicas (1 o 0).

Requiere
n
n

Conversor A/D para entrada y D/A para salidas.


Muchas veces ingresan o salen seales digitales.

Ventaja: tiene una mayor inmunidad al ruido. por qu?

El control digital puede implementarse mediante:

31/10/13

Lgica cableada (con compuertas y componentes)


Lgica programada (que emplea adems un procesador).
Sistemas con Microcont. y Microproc. - UNT

Ventajas de Lgica Programada


n
n

Flexibilidad. En general se requiere solo cambiar


el programa.
Mayor Economa.

Facilidad de Mantenimiento.

Los C son sumamente baratos.


Se puede agregar ms funcionalidad de manera simple y
casi sin costo adicional.
Se pueden disear sistemas con programas de autotest.
Es ms sencillo mantener un programa que un circuito.
Existen herramientas en PC de desarrollo y
mantenimiento.

Revolucin del P.

31/10/13

Hasta 1980, el control digital solo poda implementarse


con lgica cableada.
Las computadoras eran demasiado caras!
Sistemas con Microcont. y Microproc. - UNT

Confiabilidad y Disponibilidad
n

Confiabilidad: Tiempo hasta que se produce una cada de servicio.


MTTF: Tiempo medio hasta la cada.
AFR: Tasa anual de fallas.
Disponibilidad: Porcentaje de tiempo que el sistema est disponible.
MTTR: Tiempo medio de la reparacin.
D = MTTF / (MTTF + MTTR).
Disponibilidad se mejora:
Mejorando Confiabilidad
n Agregando Hw Redundante.
Ej: agregar ECC (error correction code)a la memoria.
n Mantenimiento Preventivo.
n Disminuyendo Fallas.
Mejora de las condiciones de trabajo (temperatura, tensin
cte., ).
Fabricando componentes ms confiables.
Diseando con menos componentes
Bajando MTTR.
n Sistemas automticos de diagnstico.
Sistemas con Microcont. y Microproc. - UNT

Ventajas Lgica Programada: confiabilidad.


n

Un sistema con lgica programada puede incluir


funciones de auto revisin 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
estadstico al ruido.
Por ltimo un sistema de lgica programada puede
estar replicado un nmero impar de veces y tomar
decisiones por mayora.

n
n

Mejora ms si cada sistema cumple igual funcin con


distinto desarrollo.

Qu usa menos componentes: un sistema con


lgica programada o con lgica cableada?
Alguna ventaja de lgica cableada Vs programada?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

Clasificacin de la Informacin
n
n

Por la naturaleza: analgica o digital.


Por su contenido: datos, control o status.

Por la forma de transmisin:

Cmo sabe el Ccul es cual?


Serie
Paralelo
Combinacin de ambos.

Por el modo de transmisin:

31/10/13

Sincrnico
Asincrnico.

Sistemas con Microcont. y Microproc. - UNT

Mtodos de E/S
n
n

Existen diversas maneras de manejar las entradas/salidas


desde el microprocesador.
Polling (Encuestas): Consiste en testear permanentemente
una seal 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 ms nada.

Puede testear peridicamente sin que pare el programa principal.

Si est bien diseado, atiende ms rpido una seal.

Interrupcin: Cuando la seal de status toma un valor, el


programa se interrumpe para manejar la E/S.

Mucho ms complicado de reproducir para probar.

El programa principal est libre para realizar otras tareas.

No hay desperdicio de tiempo testeando.

Mayor sobrecarga (overhead).

31/10/13

Sistemas con Microcont. y Microproc. - UNT

Ejemplo de E/S Asincrnica.


n
1.
2.
3.
4.
5.
6.

Se ingresa un byte en
paralelo al CQY4 va
Puerto B.
Se ocupan dos lneas de
PTA para Ready y /Strobe.
Inicio: /STB=RDY=1 perif
listo para recibir.
Perif: /STB=0 Dato listo.
C: toma Dato RDY=0
C listo prx DatoRDY=1
Perif: /STB=1 Ok,
prepara prx dato.
Ms datos ir a 2

31/10/13

PTB(7-0)

DB (7-0)

mC QY4
PTA 2
PTA 0

Byte N

/STROBE
READY

Byte N+1

/STROBE

READY

Sistemas con Microcont. y Microproc. - UNT

Poll

Entrada por Polling


n

Estructura de Datos

a una tabla.
Contador: n datos a tomar

READY = 1

Puntero

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

31/10/13

Sistemas con Microcont. y Microproc. - UNT

0
IRQF1
1
READY=0
IRQF=0
Guardar Dato del
puerto B
Actualizar Puntero
y Contador

Dato final?

No

Si
Fin
10

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 pgina 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 deteccin flanco.

Por qu no se pone ACK en 0 con BCLR luego de BSET?


31/10/13

Sistemas con Microcont. y Microproc. - UNT

11

E/S por Interrupciones


n

Usando interrupciones, es
muy simple manejar una
rutina de E/S asincrnica.
El programa principal debe
ser responsable de incializar:
Habilitar

la interrupcin
Variables globales
n
n

Puntero inicial a tabla.


Dimensin de la tabla (Contador)

RDY

= 1, IM = 0.

Atencin: Fin de Bloque - no


se pone Ready=1. Por qu?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

Int
READY = 0
PUSHH
Guardar Dato del
puerto B
Actualizar Puntero
y Contador

Dato final? Si
No
READY = 1

PULH
Return

12

Rutina de Interrupcin
;La inicializacin es identica a la inicializacin 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

Cmo se borra el pedido de interrupcin? No con ACK=1?


Qu pasa cuando la tabla se llena? Cmo vuelve READY a 1?
31/10/13

Sistemas con Microcont. y Microproc. - UNT

13

Salida de Datos
Tarea Para hacer en la Casa:
Programa de Salida por Polling.
Salida por Interrupciones.

n
1.
2.

1.

Cmo se enva el primer dato?

Tarea para Pensar


El diseo es simtrico con Entrada
de datos?

n
1.

31/10/13

Si conecto dos MCUs, uno de salida, otro


de entrada, funcionarn bien?
Estado Inicial? Ninguno Listo.
Para pasar a listo no hay flanco negativo,
cmo se causa la primera interrupcin?
Hacen falta flancos negativos!!
Sistemas con Microcont. y Microproc. - UNT

14

Conexin Asincrnica: 2 C
C-R y C-T (receptor y transmisor).
1.

2.

3.
n

/RDY en lugar de RDY.


El dilogo es entre flancos negativos en /STB

/RDY-T=1, /RDY-R=1. (No estn listos, PUD=1)


C-R controla que /RDY-T=1 y entonces pone flanco
negativo en /RDY-R e interrumpe a C-T.

Inicializacin.

C-T se interrumple.

q
q

Si no hay datos no hace nada.


Pone /Rdy-T=1, un dato y /RDY-T=0 y retorna.

Pone /Rdy-R=1, toma un dato y pone /Rdy-R=0, goto 2.

C-R se interrumpe

Qu pasa si T comienza despus que R y no ve el


flanco negativo en /RDY-R?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

15

Tasa Mxima de Transferencia


n
n

Tasa mxima 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 seal, saltar al cdigo adecuado,
manejar la linea READY, mantener los punteros,
buscar instrucciones, etc.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

16

Tasa Mxima en Polling


n

En caso de tasa mxima, el lazo de deteccin solo se


ejecuta una vez por cada dato que llega, ms rpido 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 mxima=123 KB/s


Eficiencia=1/26 =3,75 %

Trabajo til / Trabajo Total.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

17

Tasa Mx. con Interrupciones


n

Con IRQ=0, el CPU termina la instruccin actual, guarda el


estado, y salta al lugar escrito en su vector de interrupcin.

Los tiempos son:

Td= 1 M
To= 46 M
t= 47 M.

A 3,2 MHzf(bus),

Con tasa mx. termina una rutina de INT y comienza otra. Por
qu?
Respuesta a IRQ: 9 ciclos.

Tasa mxima 68 KBps

Eficiencia = 1/47 = 2,12%

Casi la mitad que en Polling


Solo en Tasa Mxima.
Y en otros casos?

31/10/13

;Instruccin anterior
;cargar interrupcin
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
18

Resumen
n E/S

de datos modo asincrnico.

Polling.
Interrupciones.
Conexin

de dos MCUs.

n Tasa

Mxima.
n Eficiencia Baja.
n cmo mejorar?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

19

Administrativia
n 10

31/10/13

de diciembre parcial.

Sistemas con Microcont. y Microproc. - UNT

20

Modo Bloque
n

La Tasa Mx. 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 diseado) 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


rpidos se ingresan bloques o rfagas de n bytes
con cada interrupcin.
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.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

21

Rutina de Interrupcin Modo Bloque


;La inicializacin es idntica a la inicializacin de polling...
; en el programa principal

...
Int:

Lazo:
Stb:

Fini:

MOV #Dir, Puntero


MOV #n, Cont
BCLR 1,INTSCR
CLI
BSET 0,PTA
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 ms termina redundante
;READY = 1
;lazo hasta prx. flanco negativo
;(READY = 0)
;Clear IRQF ACK=1
;Lazo del bloque sale con READY=0
;Recupero H

Por qu Clear IRQF?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

22

Tasa Mx en Modo Bloque


n
n

No hay espera en STB.


Los tiempos son:

A 3,2 MHz(fbus)

n
n

t= 45 M (fuera de lazo)
t=26.n M (dentro del lazo)
T(byte) = T(bloque)/n
T(byte) = 26M + t/n
Despreciamost/n
Tasa Mx= 123 KB/seg

Eficiencia = 3,85%
Similar a Polling.
31/10/13

;Instruccin anterior
;cargar interrupcin
Int:
MOV #$00,PTA
PSHH
LDHX Puntero
MOV PTB, X+
DEC cont
BEQFini
Lazo: MOV #01, PTA
Stb:
BRCLR 3,INTSCR,Stb
MOV #00,PTA
MOV PTB,X+
BSET 2,INTSCR
DBNZ Cont,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

23

M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M

Limitaciones de E/S.
n Dispositivos

Rpidos:

Existe

un lmite superior de la tasa de


envo de datos, a partir de all se pierden
datos.

n Dispositivos

Lentos no tienen

limitaciones?
n Provocan algn otro problema?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

24

Mltiples Dispositivos Lentos


n Sean

n dispositivos que transfieren

datos
Todos

a igual tasa: fdisp


Todos consumen igual tiempo de CPU,
Tdisp=D (Identificacin por Hw).
n Efecto

en la performance con que


corre el programa en el CPU?
n Existe un lmite a la cantidad de
dispositivos que puedo conectar?
31/10/13

Sistemas con Microcont. y Microproc. - UNT

25

Performance con mltiples dispositivos


n
1.
2.
n

El tiempo necesario para hacer correr un programa resulta


Sin interrupciones, T = Tprogprinc
Con interrupciones, T = Tprogprinc+ n.Tdispcon T=1/fdisp
Performance de un programa inversamente proporcional a su
tiempo de ejecucin.

De (1) y (2) resulta T/T = 1 - n.(Tdisp/T)= 1 - n.D.fdisp

La mxima 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.


Ms dispositivos o ms tiempo para cada uno implica que se
perdern datos, con o sin buffer.
N * Tdisp

Prog. Principal

D1

D2

D3

Tprog prin

...

Dn

Prog. Principal

D1

D2

D3

T=1/fdisp
31/10/13

Sistemas con Microcont. y Microproc. - UNT

26

Ej. Efecto de dispositivos lentos.


n

Para un MPU a 3,2 MHz en el bus y 20


dispositivos a igual tasa =1KB/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 s

= 1/fdisp.Tdisp = 68.

Resolver en la casa con:


5

dispositivos a 1 KB/s. conjuntamente con15


dispositivos a 2KB/s.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

27

En caso de Polling
n Se

realizan encuestas peridicas y


queda tiempo para el programa.
n Considerar un promedio entre
Cantidad

de encuestas sin tomar datos.


Cantidad de encuestas con datos.
n As

se calcula el tiempo en que el CPU


no ejecuta el programa principal.
n El resto del clculo es similar que lo
visto en Interrupciones.
31/10/13

Sistemas con Microcont. y Microproc. - UNT

28

Limitaciones de E/S
n

En conclusin:
Hay un lmite en velocidad de transferencia para
dispositivos rpidos.
Hay un lmite en cantidad de dispositivos lentos que se
pueden conectar.
En ambos casos el Programa Principal corre ms lento.
CUIDADO CON COP!

n
n

Nos interesa incrementar estos lmites.


Dos alternativas:
Fuerza Bruta ($$$) comprar un MCU ms rpido.Existe
un lmite dado por la tecnologa actual.
Diseo (arquitectura).

31/10/13

Sistemas con Microcont. y Microproc. - UNT

29

Problemas Mtodos Anteriores


n
n

El CPU es el cuello de botella:siempre habr


un programa principal que correr.
Cada vez que ingresamos un dato, tenemos
que ejecutar mltiples instrucciones.
Cada

una tiene su propio Fetch. Por tanto son


muchos accesos a memoria
En realidad la transferencia de un dato requiere,
al mnimo un nico acceso a M.
Gran diferencia entre lo que tenemos (47M) y lo
mnimo (1M).

31/10/13

Sistemas con Microcont. y Microproc. - UNT

30

Problema: CPU es Intermediario

CPU

Dispositivo

Memoria

Las lneas denotan conexiones lgicas, no fsicas.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

31

Solucin: Acceso Directo a M: DMA

Control
DMA

Dispositivo

Memoria

CPU

31/10/13

Sistemas con Microcont. y Microproc. - UNT

32

Controlador DMA (DMAC)


n
1.
2.

3.
n

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 seales y la direccin 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 P tienen
una entrada que se llama TSC (3state control)
que permite:

31/10/13

Ponerlo en estado de alta impedancia


Parar el Clock (duerme).
Sistemas con Microcont. y Microproc. - UNT

33

Requerimientos Hw del DMAC


n Puntero

incrementable a memoria.
n Contador de cantidad de bytes a
transferir.
n Son los mismos requerimientos que
usan las rutinas de E/S por Polling o
por Interrupciones
La

naturaleza del problema es el mismo.


Solo vara la forma de implementarlo.
31/10/13

Sistemas con Microcont. y Microproc. - UNT

34

Ej. Implementacin DMA Bloques


Perifrico

DMA-REQ

Ck

DATA

DMA-SEND

IRQ
TSC-ACK

TSC

CPU

DMA

Puntero

Contador

Memoria

Adress Bus
Data Bus
Control Bus

31/10/13

Sistemas con Microcont. y Microproc. - UNT

35

DMA Modo Bloque - Secuencia


1.
2.
3.
4.
5.
6.
7.
8.
9.

El CPU configura al DMA: cuntos datos va a tomar y dnde los va


a poner (PUNT y N)
El periferico manda una seal al DMA: requiere enviar datos: DMAREQ.
El DMA pone el CPU a dormir por medio de la seal TSC (control
3state).
El CPU termina el ciclo M actual y se pone en 3 state, inactivo,
informa esto mediante una seal TSC-ACK.
El DMA otorga al Perifrico el uso del DB mediante una seal 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 interrupcin al CPU.
La rutina de interrupcin de CPU
n
n

10.

pone FLAG=1 para indicar al Programa Principal que hay Datos a


Procesar.
Si se requieren ms datos, informa al DMA en qu bloque de M debe
poner los Datos del Perifrico, mediante un puntero y un contador

Retorno a Programa Principal.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

36

DMA Modo Byte Secuencia.


1.
2.
3.
4.
5.

Programa Principal Inicializa DMA cargando Contador y


Puntero.
Perifrico Pide DMA-REQ para enviar un byte.
Controlador DMA enva TSC al CPU.
CPU termina ciclo M actual, abandona el bus, queda
inactivo, enva TSC-ACK.
DMA Control permite al Perifrico enviar un nico Dato y
maneja AB y CB.
n
n

6.
7.
8.

Poniendo y quitando DMA-Grant.


Actualiza su contador y Puntero.

DMA Control quita TSC del CPU.


CPU toma el bus y contina, quita TSC-ACK.
Si Contador=0 en DMA Control
n
n

31/10/13

Pide INT al CPU.


CPU ejecuta Rutina Interrupcin que enva nuevos valores de
Contador y Puntero al DMA-Control y FLAG=1 avisa Nuevo
Block.
Sistemas con Microcont. y Microproc. - UNT

37

Lmites DMA Modo Byte.


n
n
n
n
n

n
n

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 mxima de dispositivos que
envan datos a 1 KB/seg c/u. (fbus=3,2MHz)
Calcular cunto ms lento % corre el CPU con 20
dispositivos.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

38

DMA. Efecto dispositivos lentos.


n 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 s

(3 ya visto).

T/T

= 1 - n.fdisp.Tdisp = 0,9813 98,13%

nmax

= 1/fdisp.Tdisp = 1067

n Valores
70%
31/10/13

E/S por Interrupcin:

- nmax= 68
Sistemas con Microcont. y Microproc. - UNT

39

Lmites DMA Modo Bloque


n 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 lmite dado por fbus.


Imposible ms rpido con ese bus.
n Tasa

mxima a 3,2 MHZ = 3,2 MB/


seg. (Vs 132 KB/s modo bloques).
n Esta transmisin es sincrnica
Trampa?
31/10/13

Sistemas con Microcont. y Microproc. - UNT

40

Aclaracin Interrupciones
n

El pedido de interrupcin se limpia


automticamente.
Con

la respuesta a Interrupcin.
NO SOLO EN MODULO IRQ.
n

En todo otro mdulo en que se pueda, por


ejemplo
Mdulo

KBI (Interrupciones de teclado).


Mdulo ADC (conversor AD)
n

La experiencia a veces nos confunde.


Cuando

se cambia de un MCU a otro.


Los tcnicos son muy seguros
n

siempre hacen lo mismo.

Los ingenieros DEBEN LEER Y DUDAR.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

41

T. Mx en M. Bloque Sincrnica - INT.


n

No hay Ready.
No hay espera en STB.

Los tiempos son:

A 3,2 MHz

n
n
n
n

T=18.n M (dentro del lazo)


Tb= 18M + T/n
Despreciamos T/n
Tasa Mx= 178 KB/seg

Eficiencia = 4,5% (1M til)


Nada que ver con DMA
Eficiencia DMA Bloque?
DMA Byte?
31/10/13

;Instruccin anterior
;cargar interrupcin
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

42

T
T
T
T
T
T
T
T
T
T
T
T

Concurso de Cerveza
n

Pido 10 vasos de cerveza.


1.
2.

3.

n
n

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 ms de 1vaso/min.

cmo hago para duplicar?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

43

Swinging Tables (intercambiables)


1.

Pido 10 cervezas.

2.
3.

Le digo al mozo que voy a tomar en dos mesas, que


cuando haya una mesa vaca la llene con cerveza.

En 10 trae las cervezas a mi mesa.


Comienzo a tomar cerveza.

Al mismo tiempo el mozo va llenando la otra mesa.

4.

En 10 cambio de mesa y el camarero tambin y as


sucesivamente.

n
n

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.

31/10/13

PENDIENTE.
Sistemas con Microcont. y Microproc. - UNT

44

Entrada por INT con Swinging Blocks.


n

2 Bloques en M para datos.


Al Principio Vacos

n
n

Se llena el primero por Interrupciones.


Programa Principal procesa un bloque
Se va llenando el otro por interrupciones.

n
n

Programa Principal e Interrupciones se van


intercambiando los bloques (de all el nombre).
Se gana cuando el dispositivo es lento.

Modo Byte.
Y ms an cuando los dos procesos tienen duraciones
parecidas.

Trabajo Concurrente.

Se podr trabajar en Paralelo?

Se podr realizar DMA con Swinging Blocks?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

45

Swinging Blocks con E/S por INT


n

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.
n

NBL indicador bloque a llenar.


n

Bytes que falta poner en cada bloque.


0 bloque0, 1 bloque1.

PEND Avisa que hay una rutina de interrupcin pendiente.

Inicializacin Programa Principal.

Configurar:
n
n

31/10/13

PTA2 como IRQ en Reg. Config.


IRQ por flanco, habilitada.

CLI en CPU habilita interrupciones en CPU.


Cont1=n, Cont0=n (los dos bloques estn vacos).
NBL=0 bloque0 a llenar.
RDY=1 est listo para recibir datos.
Sistemas con Microcont. y Microproc. - UNT

46

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:

31/10/13

;P0 y P1 a bloques en Pg. 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

47

Rutina de Interrupcin
1.
2.
3.

RUTINT: PEND=1.
Guardar H.
Case NBL
1.

0 Si CONT0=0 entonces recuperar H y Retornar. (bloque lleno,


no procesado todava qued PEND=1).
n

2.

1 Si CONT1=0 entonces recuperar H y Retornar.


n

3.

4.

6.
7.
8.

Else HX=PUNT1, CONT=CONT1

Otro ejecutar rutina de ERROR.

Llamar rutina Handshake(CONT, HX)


n

5.

Else HX=PUNT0, CONT=CONT0

Similar a Rutina para un byte por Handshaking por INT J


Actualizar CONTi y PUNTi.

Si CONT=0 entonces NBL=(NBL XOR 1).


PEND=0 (rutint termin adecuadamente).
Recuperar H.
RTI

31/10/13

Sistemas con Microcont. y Microproc. - UNT

48

Rutina de Interrupcin
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
31/10/13

;hay una interrupcin 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

49

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.
31/10/13

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

50

Por qu SWI?
n
n
n
n

Hay un dato pendiente de ser tomado.


Habra que lanzar de nuevo esa rutina de
Interrupcin.
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.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

51

Conclusiones del Ejemplo.


n

Programa Principal muy sencillo.


Porque

emplea servicios del sistema.


Servicios totalmente transparentes.

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 Interrupcin en Background.
Alternan entre s concurrentemente.
n

Los hilos se intercomunican.


Mediante

variables PEND, CONT0 y CONT1.

Ms de esto en Sistemas Operativos.

31/10/13

Sistemas con Microcont. y Microproc. - UNT

52

Mayor Transparencia: Ideas.


n
n
n
n

Evitar SWI P. Principal


transparente 100%.
Cmo evitar SWI?
En lugar de PEND=1, RUTINT
llama a Start-Timer.
Al cabo de un tiempo Timer pide INT.

Rutina INT-TIM.
n
n

n
n

Si bloque est vaco BRA RUTINT


Else JSR Start-Timer: RTI.

Es otro ejemplo de Watchdog.


Cunto tiempo debera esperar Timer?

31/10/13

Sistemas con Microcont. y Microproc. - UNT

53

Para qu Swinging Buffers?


n
n
n
n
n
n

Los dos hilos pueden trabajar


concurrentemente.
Sino uno debe quedar esperando hasta que
el otro termine.
Se ve cmo con dos hilos concurrentes
mejoramos la eficiencia del sistema.
Tambin con varios procesos e hilos (SO).
Razn principal de Multitasking - SO.
Tambin vimos varios hilos concurrentes.
Fcil

de ver con dos.


Con tres es ms difcil (Timer).
Sincronizacin de hilos y procesos tema SO.
31/10/13

Sistemas con Microcont. y Microproc. - UNT

54

Ejemplo Numrico
Ingresan 200 bytes a razn de 1000 B/
seg, por Interrupciones, 40 s c/u
n El programa debe procesar 200 bytes, y
requiere 0,2 seg.
n Cunto demora con un buffer?
n

a.
b.
c.
d.

31/10/13

T del dispositivo = 1/1000 = 1 ms/byte


Tiempo de la interrupcin: 40 s
Conclusin, 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

55

Ejemplo Numrico
n Cunto demora con dos buffers?
a.
Ingreso de Datos = 200 ms.
b.
Tiempo de procesamiento = 200 ms.
c.
Si es concurrente, agregar tiempo de
interrupciones = 40 s x 200 = 8000 = 8 ms.
d.
Total procesamiento 208 ms.
e.
Total Ingreso = 200 ms.
f.
Tiempo = el mayor = 208 ms.
n

Mejora performance = 400/208

31/10/13

= 1,92 equivale a 92%.


Sistemas con Microcont. y Microproc. - UNT

56

También podría gustarte