Vous êtes sur la page 1sur 172

Antonio Caas, Dpto. ATC. UGR.

2003-2005

Estructura de los computadores II


Tema 1

Entrada/Salida

Leccin
Leccin
Leccin
Leccin
Leccin

Tema 2
Tema 3

2004
2005

1.1
1.2
1.3
1.4
1.5

Introduccin
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
Ejemplos de programas de E/S

Memoria
Buses

ECII
1.1

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Entrada/Salida

2004
2005

ECII
1.2

Leccin 1.1 Introduccin


1.1.1
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6

Leccin
Leccin
Leccin
Leccin

1.2
1.3
1.4
1.5

Objetivo de los sistemas de E/S


Interfaces de E/S
Funciones que debe incluir el sistema de E/S
Conceptos a diferenciar
E/S independiente frente a E/S en memoria
Tcnicas de E/S

E/S programada
Interrupciones
Acceso directo a memoria (DMA)
Ejemplos de programas de E/S

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Objetivo de los sistemas de E/S

2004
2005

ECII
1.3

Objetivo:
Realizar la conexin del procesador con una gran
variedad de dispositivos perifricos, teniendo en cuenta
que las caractersticas de los dispositivos de E/S suelen
diferir notablemente de las del procesador; en especial:
la velocidad de transmisin de los perifricos
normalm. es menor que la velocidad a la que opera el proces.
es muy variable (pocos bytes/s hasta >100 MB/s)
la longitud de palabra
los cdigos para representar los datos

Para compatibilizar las caractersticas de los dispositivos


de E/S con el sistema procesador/memoria se usan los
circuitos de interfaz o controladores de perifricos.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interfaces de E/S

2004
2005

ECII
1.4

Circuitos de interfaz o controladores de perifricos:


Circuitos de adaptacin de formato de seales y
caractersticas de temporizacin entre el procesador y los
dispositivos de E/S.
Proporcionan todas las transferencias de datos necesarias
entre el procesador y los perifricos, utilizando un bus de
E/S.
Requieren uso de software:
Programas de E/S ejecutados por el procesador que controlan la
transferencia de informacin hacia y desde los dispositivos de E/S.

En computadores de altas prestaciones se han utilizado


procesadores especializados para las funciones de E/S:
procesadores de E/S (IOP) o canales.
Procesadores cuyos conjuntos de instrucciones se restringen a
aquellas que se precisan en las operaciones de E/S.
Se hacen cargo de todas las transferencias con los perifricos.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (I)

2004
2005

ECII
1.5

1) Direccionamiento o seleccin del perifrico:

El procesador sita en el bus de direcciones la direccin asociada


con el dispositivo.
Si se conectan varios perifricos debe preverse la forma de que no
haya conflictos de acceso al bus.
Con p bits pueden direccionarse 2p direcciones distintas (mapa
de E/S).
Cada direccin especifica uno o dos puertos de E/S:
- El hardware de cada direccin suele ser nico (bien
entrada o bien salida).
- A veces los circuitos de E y de S de una nica direccin son
independientes (misma direccin dos puertos, uno de
entrada y otro de salida).
Cada interfaz de perifrico emplea varios puertos para
comunicarse con el procesador.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (II)

2004
2005

ECII
1.6

Tcnicas de direccionamiento
Direccionamiento por seleccin lineal: consiste en asignar un
bit del bus de direcciones a cada puerto.
Direccionamiento por decodificacin: consiste en decodificar
los bits de direccin para seleccionar un puerto de una
interfaz.
1. Decodificacin centralizada: un decodificador selecciona
cada puerto de E/S.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (III)

2004
2005

2. Decodificacin en cada puerto de E/S: cada puerto


reconoce su propia direccin.

ECII
1.7

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (IV)

2004
2005

ECII
1.8

2) Comunicacin fsica entre el perifrico y el procesador.


Tcnicas bsicas de conexin:
1. Bus

Permite conectar en paralelo un gran nmero de


perifricos
Es fcil expandir el sistema (aadiendo ms tarjetas o
circuitos de interfaz)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (V)

2004
2005

ECII
1.9

2. Multiplexor / demultiplexor
Multiplexor:
Multiplexor:
para
para las
las seales
seales
de
de entrada
entrada
Demultiplexor:
Demultiplexor:
para
para las
las seales
seales
de
de salida
salida
Las
Las lneas
lneas de
de datos
datos yy
control
control se
se encaminan
encaminan
de
de forma
forma individual
individual aa
cada
cada perifrico
perifrico

Expansin difcil
Mucha circuitera
Habr que considerar
las seales que son necesarias para realizar la comunicacin,
con sus respectivos cronogramas y mtodos de sincronizacin.
las diferentes tcnicas de E/S, con sus ventajas e
inconvenientes.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (VI)

2004
2005

ECII
1.10

3) Sincronizacin:

Acomodacin de las velocidades de funcionamiento del


procesador/MP y los dispositivos de E/S.
Hay que establecer un mecanismo para saber cundo se puede
enviar o recibir un dato.
Deben incluirse:
Palabra de memoria temporal en la interfaz que sirva como
bfer. La entrada o salida se hace sobre este bfer
intermedio. La operacin de E/S se realiza slo cuando el
dispositivo est preparado.
Seales de control de conformidad para iniciar o terminar la
transferencia (listo, peticin, reconocimiento).
La temporizacin de las transferencias puede ser:
Sncrona
Ojo!
Ojo! concepto
concepto confuso,
confuso,
depende
depende del
del autor
autor
Asncrona

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (VII)

2004
2005

ECII
1.11

Temporizacin sncrona
Escritura
- La CPU sita los datos en el bus de datos y al mismo tiempo
genera una seal WR# = 0.

WR#
WR# establece
establece el
el perodo
perodo
durante
durante el
el cual
cual la
la CPU
CPU tiene
tiene
datos
datos vlidos
vlidos en
en sus
sus lneas
lneas
de
de salida
salida (t1
(t1 ++ t2
t2 ++ t3)
t3)

El
El flanco
flanco de
de subida
subida de
de WR#
WR# activa
activa la
la carga
carga
del
del bfer
bfer del
del controlador
controlador del
del perifrico
perifrico
Este
Este flanco
flanco de
de carga
carga debe
debe estar
estar dentro
dentro de
de
t1
t1 ++ t2
t2 ++ t3
t3

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (VIII)

2004
2005

ECII
1.12

Lectura
- La CPU suministra una seal de lectura RD# = 0. A partir de
entonces el controlador del perifrico dispone de cierto
tiempo para suministrar el dato al bus de datos.
2.
2. Transcurrido
Transcurrido cierto
cierto tiempo
tiempo (para
(para
que
que los
los datos
datos estn
estn estables
estables en
en el
el
bus),
bus), la
la CPU
CPU lee
lee esos
esos datos
datos

1.
1. Cierto
Cierto tiempo
tiempo despus
despus de
de que
que la
la
CPU
CPU ponga
ponga RD#
RD# aa 0,
0, el
el controlador
controlador
abre
abre el
el buffer
buffer triestado
triestado al
al bus
bus

3.
3. Y
Y ms
ms tarde,
tarde, la
la
subida
subida de
de RD#
RD#
cierra
cierra el
el buffer
buffer
triestado
triestado del
del
controlador
controlador del
del bus
bus

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (IX)

2004
2005

ECII
1.13

En la temporizacin sncrona...
La CPU establece la temporizacin, que debe ser seguida por
el controlador del perifrico.
Si ste no es capaz de leer el bus, o de poner el dato, en el
tiempo establecido la transferencia fracasa.
- Podra haberse direccionado un dispositivo lento,
inexistente o apagado.
- En lectura la CPU almacenar un dato incorrecto.
- En escritura la CPU no sabr si ha escrito con xito.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (X)

2004
2005

ECII
1.14

Temporizacin asncrona o con handshaking


Se necesita una nueva seal de aceptacin (ACK) con la que el
controlador del perifrico contesta a la peticin de
transferencia generada por la CPU.
Escritura

Lectura

Hasta
Hasta que
que no
no se
se
produce
produce el
el flanco
flanco
de
de subida
subida de
de ACK,
ACK,
no
no se
se cierra
cierra la
la
transferencia,
transferencia,
subiendo
subiendo la
la CPU
CPU la
la
seal
seal WR#
WR# oo RD#
RD#

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (XI)

2004
2005

ECII
1.15

En la temporizacin asncrona o con handshaking...


Se establece un dilogo (handshaking), que permite adaptar el
cronograma a las necesidades de tiempo del perifrico.
- Handshaking: establecimiento de una comunicacin
sincronizando dos dispositivos mediante acuse de recibo o
intercambio de seales de control.
Ventajas:
Se pueden conectar dispositivos con distintos requisitos
de tiempo, adaptndose la CPU a las necesidades de cada
uno.
Se tiene una mayor garanta de que el dato sea vlido,
puesto que se exige una contestacin positiva del
perifrico.
Para evitar que el sistema quede bloqueado si no existe el
perifrico o ste no contesta, es necesario establecer un
perodo de espera mximo, despus del cual se considera la
transferencia como errnea.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Funciones que debe incluir el sistema de E/S (XII)

2004
2005

ECII
1.16

4) Conversin de datos:

Acomodacin de las caractersticas fsicas y lgicas de las seales de datos


empleadas por el dispositivo de E/S y por el bus del sistema.
Conversin de cdigos (BCD, ASCII, EBCDIC, UNICODE, ANSI, etc.)
Conversin serie / paralelo.
Conversin de niveles lgicos para representar 1 y 0.
Conversin A/D y D/A.

5) Control de los perifricos:

Interrogacin y modificacin de su estado:


Encendido, apagado, disponible...
Envo de otras seales de control al perifrico.

6) Mecanismo que determine la cantidad de informacin a transmitir


en una operacin de E/S y cuente el nmero de palabras / bytes ya
transmitidos.
7) Deteccin de errores

En el funcionamiento del perifrico...


...o en los datos
Mediante cdigos de paridad, polinomiales, etc.
Se repetir la transferencia en caso necesario.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Conceptos a diferenciar (I)

2004
2005

Transferencia elemental de informacin


Envo o recepcin de una nica unidad de informacin (byte o
palabra), ya sea un dato o una palabra de estado o control.

Operacin completa de E/S


Transferencia de un conjunto de datos
Sector de un disco
Lnea de pantalla

ECII
1.17

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Conceptos a diferenciar (II)

2004
2005

ECII
1.18

Dispositivos de E/S fsicos


Cuando el ordenador carece de SO o driver adecuados.
El programador debe tratar directamente con ellos, asumiendo sus
detalles de funcionamiento y caractersticas fsicas.

Dispositivos de E/S lgicos


El programador efecta las transferencias de datos activando las
rutinas de E/S que proporciona el SO.
Por ejemplo, el programador puede escribir un programa que
escriba en una impresora lgica (sta en realidad puede ser un
bloque de espacio en disco). El SO asigna una de las impresoras
fsicas a la impresora lgica y controla el proceso de impresin
(spooling).

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Conceptos a diferenciar (III)

2004
2005

ECII
1.19

E/S aislada o independiente


El procesador distingue internamente entre espacio de memoria y
espacio de E/S.

E/S mapeada en memoria


El procesador no distingue entre accesos a memoria y accesos a los
dispositivos de E/S.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S independiente frente a E/S en memoria

2004
2005

ECII
1.20

E/S aislada, independiente, o con espacio de E/S


Emplea la patilla IO/M# del procesador
Nivel alto Indica a memoria y a los dispositivos de E/S que se va
a efectuar una operacin de E/S.
Cuando se ejecutan instrucciones mquina especficas de E/S:
IN y OUT.
Nivel bajo Operacin de intercambio de datos con la memoria.
Cuando se ejecutan instrucciones de acceso a memoria:
LOAD, STORE o MOVE.

Instrucciones especficas: IN y OUT (o READ y WRITE), con


poca riqueza de direccionamiento.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S independiente frente a E/S en memoria

2004
2005

ECII
1.21

Ejemplo:
los procesadores de 8 bits empleaban una direccin de 8 bits para
cada puerto de E/S 256 puertos: IN n de puerto, OUT n de
puerto
y disponan de un bus de direcciones de 16 bits 64 K puertos

Ventajas:
Diseo ms limpio de la decodificacin de las direcciones de
memoria.
Facilita la proteccin de E/S (por ejemplo, haciendo que las
instrucciones IN, OUT,... sean privilegiadas).
Los programas son relativamente ms rpidos por la decodificacin
ms sencilla y el menor tamao de las instrucciones de E/S.

Desventajas:
Mayor complejidad en el diseo del procesador:
Hay que decodificar y ejecutar las instrucciones IN, OUT...
Hay que generar la seal IO/M# y se necesita una patilla ms
del procesador para ella.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S independiente frente a E/S en memoria

2004
2005

ECII
1.22

E/S mapeada en memoria


Se usan algunas direcciones de memoria para aacceder a
los puertos de E/S, tras decodificarlas adecuadamente.
El procesador no distingue entre accesos a memoria y
accesos a los dispositivos de E/S.
No se usa la patilla IO/M#

No se dispone de instrucciones especiales, sino que se


usan LOAD, STORE o MOVE.
Para evitar particionar el mapa dedicado a memoria, se
agrupa la E/S en una zona bien definida al principio o final
del mapa de memoria.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S independiente frente a E/S en memoria

2004
2005

ECII
1.23

Ventajas:
Menor complejidad en el diseo del procesador.

Desventajas:
Cada registro interno de una interfaz ocupa una direccin de
memoria que no puede utilizarse para memoria.
Las instrucciones de acceso a memoria suelen ser ms largas que las
especficas de E/S.
Por ej., en los microprocesadores de 8 bits: 3 bytes frente a 2.
Puede disminuir la velocidad de procesamiento.
Aumentan los requisitos de memoria.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S independiente frente a E/S en memoria


Esquemas:
E/S mapeada en memoria

E/S independiente

2004
2005

ECII
1.24

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S independiente frente a E/S en memoria


Ejemplo: Supongamos que tenemos:
2 mdulos de mem. de 16 KB (14 bits para
direccionamiento de bytes dentro de un mdulo).
64 puertos de E/S.
bus de direcciones de 16 bits.

E/S independiente
E/S mapeada en memoria

2004
2005

ECII
1.25

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Tcnicas de E/S

2004
2005

ECII
1.26

Procedimientos para realizar el intercambio de


informacin entre procesador, memoria y dispositivos
de E/S.
Para realizar la comunicacin con los perifricos,
consideramos una versin simplificada de los controladores
de perifricos:
Uno o varios registros (puertos o puertas ports de E/S):
datos
control
estado
Lgica de control
interpreta las seales de control/estado emitidas por el
procesador
genera las seales de control/estado que el procesador exige

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Tcnicas de E/S

2004
2005

ECII
1.27

Tcnicas de transferencia

Controladas por programa

E/S programada

sin
consulta
de
estado

con
consulta
de
estado

E/S controlada
por
interrupciones

Controladas por hardware

DMA (Acceso directo a memoria)

por
parada de
CPU

por robo
de ciclo

transparente por memoria


multipuerto

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Tcnicas de E/S

2004
2005

ECII
1.28

Tres mtodos principales para establecer y supervisar las


operaciones de transferencia de datos de E/S:
E/S programada
El procesador participa activamente
ejecutando instrucciones en todas las fases
de una operacin de E/S: inicializacin,
transferencia de datos y terminacin.

E/S controlada por interrupciones


Los dispositivos de E/S se conectan al
procesador a travs de lneas de peticin
de interrupcin, que se activan cuando los
dispositivos requieren los servicios del
procesador.
En respuesta, el procesador suspende la
ejecucin del programa en curso y ejecuta
un programa de gestin de interrupcin
para transmitir datos con el dispositivo.
Como en la E/S programada, los pasos de
transferencia de datos estn bajo el
control directo de programas de control.

E/S mediante DMA


Requiere la presencia de un controlador DMA, que puede actuar como controlador
del bus y supervisar las transferencia de datos entre MP y uno o ms dispositivos de
E/S, sin intervencin directa del procesador salvo en la inicializacin.

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Tcnicas de E/S

ECII
1.29

Mtodo de control de E/S


E/S
Funcin o parmetro programada

Comienzo de las operaciones de E/S

Transferencia de datos de E/S

La CPU lee y
comprueba el
estado de los
dispositivos de E/S
(en el caso de
consulta de
estado).

Acceso directo a memoria

El dispositivo de E/S
enva una peticin de
interrupcin a la CPU.
sta transfiere el
control a una rutina de
servicio P.

El dispositivo de E/S enva una peticin


de interrupcin a la CPU.
La CPU transfiere el control a la rutina
de servicio P.
P inicializa el control de DMA.

La CPU ejecuta un programa de transferencia


de datos.

Finalizacin de las operaciones de


E/S
Complejidad del circuito de interfaz
de E/S

E/S controlada
por
interrupciones

Fin de ejecucin del programa de


transferencia de datos

El controlador de DMA transfiere


bloques de datos por el bus del sistema.
La palabra-contador DMA llega a 0.
El controlador de DMA enva una
peticin de interrupcin a la CPU.

La menor

Baja

Moderada

Velocidad de respuesta a una


peticin de transferencia de datos
por el dispositivo de E/S

Lenta

Rpida

La ms rpida

Mxima velocidad de transferencia


de E/S

Moderada

Moderada

Alta

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Entrada/Salida

2004
2005

ECII
1.30

Leccin 1.1 Introduccin


Leccin 1.2 E/S programada
1.2.1
1.2.2
1.2.3
1.2.4

Concepto
Sin o con consulta de estado
Ejemplo de programa
Ejemplo de circuito de interfaz paralela: 8255

Leccin 1.3 Interrupciones


Leccin 1.4 Acceso directo a memoria (DMA)
Leccin 1.5 Ejemplos de programas de E/S

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Concepto de E/S programada

2004
2005

ECII
1.31

Todos los pasos de una operacin de E/S requieren la


ejecucin de instrucciones por parte del procesador
Todos los pasos estn continuamente bajo el control de un
programa.
La transferencia de un byte se realiza mediante la
ejecucin de una instruccin de E/S: instruccin de
transferencia de datos en la que:
Un operando es un registro del controlador del perifrico (puerto).
El otro operando es un registro del procesador (o una posicin de
memoria).

Al decodificar la instruccin de E/S, la UC del procesador


enva al exterior informacin de:
direccin (sobre qu perifrico se realiza la transferencia)
tipo de operacin (lectura / escritura)
temporizacin y sincronizacin

y enva el dato o se dispone a recibirlo.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Concepto de E/S programada

2004
2005

ECII
1.32

SALIDA:
1. El procesador ejecuta una instruccin de carga de una palabra de
memoria a un registro.
2. El procesador ejecuta una instruccin de salida que transfiere el
dato desde el procesador a un puerto de salida.

ENTRADA:
1. El procesador ejecuta una instruccin de entrada.
2. El procesador ejecuta una instruccin de almacenamiento.

Adems se pueden necesitar instrucciones adicionales,


por ejemplo para actualizar el nmero de palabras
transferidas.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S programada sin y con consulta de estado

2004
2005

ECII
1.33

Sin consulta de estado, o incondicional


El procesador decide en qu momento se realiza la transferencia.
El dispositivo externo debe
estar siempre dispuesto a recibir datos (salida)
o debe tener siempre datos disponibles (entrada)
Ejemplos:
Salida a un display de 7 segmentos
Entrada desde un joystick.

Con consulta de estado, condicional, o con escrutinio


El procesador pregunta al perifrico (a travs de la interfaz) si est
preparado o no para la transferencia.
Adems de los puertos de E/S, la interfaz tiene un registro de
estado con informacin sobre:
Dato listo (si se usa como entrada)
Perifrico libre (si se usa como salida)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

E/S programada sin y con consulta de estado

Si
Si hay
hay que
que
atender
atender aa
varios
varios
perifricos
perifricos aa
la
la vez,
vez, se
se
organiza
organiza la
la
transferencia
transferencia
segn
segn
prioridades
prioridades
establecidas
establecidas
por
por software
software

2004
2005

ECII
1.34

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de programa de E/S programada con


consulta de estado

2004
2005

ECII
1.35

Programa (para el microprocesador


Motorola 6800) que consulta un
dispositivo de entrada y transfiere
un bloque de datos a la MP.
Puertos de la interfaz:
DATA:
STATUS:
listo)

Datos a leer
Estado del dispositivo (bit ms significativo = 1

La E/S es mapeada en memoria.


El nmero de palabras a transmitir se sita en el registro X
del 6800, y se decrementa despus de cada transferencia
de un dato.
Un dato de E/S se transfiere desde el puerto de E/S al
acumulador A, y despus a la pila, que sirve como rea de
memoria intermedia de E/S.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de programa de E/S programada con


consulta de estado

poll

lds

IOBuf

ldx
...
lda
bpl

Count

lda
psh
dex
bne
next

...

a Status
next

a Data
a
poll

2004
2005

ECII
1.36

; Inic. puntero de pila en


; ...rea de mem. intermedia
; Inicializar X como contador
;
;
;
;
;
;
;
;
;
;
;

Entrada en palab. de estado


Comprobar signo (N) de A
...si N != 1 ==> consultar
...otro disp. de E/S
Entrada de dato en A
Transferir dato a pila
Decrementar contador X
Continuar consultando disp.
...en curso si X != 0
Proceder con la siguiente
...tarea

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.37

Interfaz de perifricos programable 8255


(Programmable Peripheral Interface, PPI)

Permite gestionar tres puertos de E/S de 8 bits.


Se pueden seleccionar por software tres modos de
funcionamiento:
E/S programada sin validacin:
Modo 0: E/S bsica (programada).
E/S programada o por interrupciones con validacin (handshaking).
Modo 1: E/S con validacin.
Modo 2: E/S con bus bidireccional, validada.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.38

Esquema general
Permite gestionar 3 puertos de E/S de 8 bits.

Bfer
Bfer triestado
triestado de
de 88 bits
bits
bidireccional,
bidireccional, usado
usado
como
como interfaz
interfaz entre
entre el
el
8255
8255 yy el
el bus
bus de
de datos
datos

Los
Los 33 puertos
puertos de
de
88 bits
bits pueden
pueden
configurarse
configurarse por
por
software
software para
para
realizar
realizar varias
varias
funciones.
funciones.
Cada
Cada uno
uno tiene
tiene
caractersticas
caractersticas
especiales.
especiales.
El
El puerto
puerto C
C puede
puede
convertirse
convertirse en
en
dos
dos puertos
puertos de
de
control
control de
de 44 bits
bits
Gestiona
Gestiona todas
todas las
las transferencias
transferencias de
de
datos
datos yy palabras
palabras de
de control
control yy estado
estado

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.39

Asignacin de patillas (I)

PA0,
PA0, PA7:
PA7: Puerto
Puerto A
A
de
de Entrada/Salida
Entrada/Salida
A0,
A0, A1:
A1: Seleccionan
Seleccionan el
el puerto
puerto del
del
que
que se
se va
va aa leer
leer oo escribir
escribir

PC0,
PC0, PC7:
PC7: Puerto
Puerto C
C
de
de Entrada/Salida
Entrada/Salida

PB0,
PB0, PB7:
PB7: Puerto
Puerto B
B
de
de Entrada/Salida
Entrada/Salida

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.40

Asignacin de patillas (II)

RD#
RD# (Read):
(Read): =0
=0 habilita
habilita al
al
8255
8255 para
para que
que enve
enve la
la
informacin
informacin de
de datos
datos oo
de
de estado
estado aa la
la CPU
CPU aa
travs
travs del
del bus
bus de
de datos
datos
CS#
CS# (Chip
(Chip Select):
Select): =0
=0
habilita
habilita la
la comunicacin
comunicacin
entre
entre el
el 8255
8255 yy el
el
procesador
procesador

WR#
WR# (Write):
(Write): =0
=0
permite
permite que
que la
la CPU
CPU
escriba
escriba datos
datos oo
palabras
palabras de
de control
control
en
en el
el 8255
8255
RESET:
RESET: =1
=1 borra
borra el
el
registro
registro de
de control
control
yy pone
pone los
los puertos
puertos
en
en modo
modo de
de
entrada
entrada
D0-D7:
D0-D7: conexin
conexin al
al
bus
bus de
de datos
datos

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.41

Palabra de control (bit 7 = 1)


Se puede programar la configuracin funcional de cada puerto
escribiendo una palabra de control en el 8255.

Puerto
Puerto A:
A: puede
puede
definirse
definirse como
como entrada
entrada
oo salida
salida de
de 88 bits
bits en
en
los
los modos
modos 0,
0, 11 yy 2.
2.
En
En el
el modo
modo 22 funciona
funciona
de
de forma
forma bidireccional.
bidireccional.
Puerto
Puerto C:
C: se
se divide
divide en
en dos
dos
puertos
puertos de
de 44 bits
bits que
que pueden
pueden
definirse
definirse como
como entrada
entrada oo
salida
salida en
en el
el modo
modo 0.
0.
Para
Para los
los modos
modos 11 yy 22 se
se
divide
divide en
en dos
dos puertos
puertos de
de
control
control de
de 44 bits
bits para
para servicio
servicio
de
de los
los puertos
puertos A
A oo B.
B.

Puerto
Puerto B:
B: puede
puede
definirse
definirse como
como
entrada
entrada oo salida
salida
de
de 88 bits
bits en
en los
los
modos
modos 00 yy 1.
1.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255
Palabra de control (bit 7 = 0)
Permite activar de forma individual cada bit del puerto C
Es la nica forma de escribir en C en los modos 1 y 2.

2004
2005

ECII
1.42

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.43

MODO 0 (E/S bsica)


No requiere handshaking, sino que los datos son simplemente ledos
o escritos de un puerto.
Cada puerto puede programarse independientemente como de
entrada o de salida (el puerto C se programa como dos puertos
independientes de 4 bits).
Cada bit puede utilizarse para datos o para seales de control o de
estado.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.44

MODO 0
Segn la aplicacin deseada, cada puerto deber declararse como
entrada o como salida, escribiendo la oportuna palabra de control.
Ejemplo:

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255
MODO 0
Temporizacin (entrada):

2004
2005

ECII
1.45

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255
MODO 0
Temporizacin (salida):

2004
2005

ECII
1.46

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.47

MODO 1 (E/S validada)


Puede utilizarse E/S en modo programado o por interrupciones.
Se van a transferir datos usando seales de dilogo (handshaking)
entre el 8255 y el perifrico (ojo!, no entre el 8255 y la CPU).
El puerto A y el puerto B se pueden programar como entrada o
como salida, y el puerto C se usa tanto para control de A y B como
para E/S en modo 0.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255
MODO 1

2004
2005

ECII
1.48

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.49

MODO 1
Es posible impedir o autorizar al 8255 interrumpir al procesador,
poniendo a 0 1 ciertas seales INTE (Interrupt Enable):

Para escribir en el puerto C se puede usar una orden de escritura en


ese puerto en el modo 0, o una orden de puesta/borrado de un bit
en los tres modos. sta ltima orden tambin se usar para
modificar los biestables INTE.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.50

En una lectura del puerto C en los modos 1 y 2, el estado de las


lneas de este puerto pasa al bus de datos, excepto las lneas ACK#
y STB#, que son reemplazadas por INTE.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

MODO 1 en entrada
1. Cuando el perifrico tiene un dato para
transmitir a la CPU, enva la seal
STB#, que indica dato preparado, al
8255.
2. El 8255 sube a 1 la seal IBF (dato
recibido), y memoriza los datos de
entrada (en modo 0 no se memorizan).
3. El flanco de subida de STB# pone a 1 la
seal de peticin de interrupcin INTR,
si est habilitada. Puede tener lugar
una interrupcin si adems la lnea est
conectada a la CPU.
4. La seal de lectura generada por la
CPU hace bajar las seales INTR e IBF.
Se podra usar modo programado, no
conectando INTR o desactivndola, y
leyendo y comprobando los bits IBF
hasta que estuvieran a 1, para despus
leer del puerto A o B.

2004
2005

ECII
1.51

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

MODO 1 en entrada

2004
2005

ECII
1.52

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

MODO 1 en salida
1. La escritura (WR#=0) de un dato en el
puerto A o B hace que se active la seal
OBF# para comunicar al perifrico que
la CPU ha puesto un dato en el 8255
listo para ser enviado a dicho perifrico.
2. Tras un tiempo ms o menos largo que
depende del perifrico, ste activa la
seal ACK# indicando dato aceptado.
3. Cuando el perifrico pone de nuevo
ACK# a 1, el 8255 activa la lnea INTR si
est habilitada. Puede tener lugar una
interrupcin si adems la lnea est
conectada a la CPU.
4. La siguiente seal de escritura generada
por la CPU hace bajar la seal INTR.
Se podra usar modo programado para
comprobar cuando el perifrico ha ledo
el dato leyendo y comprobando los bits
OBF# hasta que estuvieran a 1, para
despus escribir en el puerto A o B.

2004
2005

ECII
1.53

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

MODO 1 en salida

2004
2005

ECII
1.54

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255
MODO 2 (E/S validada con bus
bidireccional)
Est previsto para un intercambio
bidireccional entre la interfaz y el
perifrico (transmitir y recibir).
Es similar al modo 1 en lo que concierne a
las seales de dilogo.
Slo el puerto A puede funcionar en modo
2.

2004
2005

ECII
1.55

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.56

MODO 2

En el modo 1 el 8255 escriba datos en el perifrico en el flanco de subida


de WR#. En el modo 2 el 8255 escribe datos en el perifrico en el flanco
de bajada de ACK#.
El puerto A estar en alta impedancia hacia el perifrico cuando ACK# =
1.
ACK# no indica ahora dato aceptado sino perifrico listo para recibir
datos.

Cualquier
Cualquier
secuencia
secuencia en
en la
la
que
que WR#
WR# ocurra
ocurra
antes
antes que
que ACK#
ACK#
yy STB#
STB# ocurra
ocurra
antes
antes que
que RD#
RD#
es
es permisible.
permisible.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

Tabla comparativa de los modos 0, 1 y 2.

2004
2005

ECII
1.57

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.58

Combinacin de modos
El 8255 puede tener un puerto programado en un modo y
otro en otro modo.
Ejemplos:

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

Ejemplos de aplicaciones del 8255:


Interfaz de impresora:

Interfaz de teclado y
display:

2004
2005

ECII
1.59

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

Ejemplos de aplicaciones del 8255:


Interfaz con conversores
D/A y A/D:

Interfaz de disquetera:

ECII
1.60

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.61

Ej. de operacin de E/S programada usando el 8255


Control de una impresora (salida), y de un conmutador
rotativo (entrada) que permite seleccionar entre 16
valores.

Si
Si BUSY
BUSY == 11

la
la impresora
impresora
est
est ocupada
ocupada
Un
Un pulso
pulso negativo
negativo
en
en DATASTROBE#
DATASTROBE#
carga
carga el
el dato
dato del
del
puerto
puerto A
A en
en la
la
impresora.
impresora.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.62

Ej. de operacin de E/S programada usando el 8255


Programacin del 8255:
Palabra de control:
MVI A, 8A
OUT PPICTRL

Hay que inicializar PC0 a 1:


MVI A, 01
OUT PPICTRL

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado de interfaz


paralela: 8255

2004
2005

ECII
1.63

Ej. de operacin de E/S programada usando el 8255


Impresin de un carcter (almacenado por ej, en M(1200)):
BUCLE:

IN
ANI
JNZ
LDA

PPIC
80
BUCLE
1200

OUT
MVI
OUT
MVI
OUT

PPIA
A, 00
PPICTRL
A, 01
PPICTRL

;
;
;
;
;
;
;
;
;
;

A puerto C del 8255


Test de PC7 por enmascaramiento
Salto a BUCLE si BUSY = 1
A dato almacenado en la...
...direccin 1200 de memoria
puerto A del 8255 A
Puesta a 0...
...de PC0
Puesta a 1...
...de PC0

Lectura del conmutador rotativo:


IN PPIB
STA 1201

; A puerto B del 8255


; almacenamiento en la...
; ...direccin 1201 de memoria

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Entrada/Salida

2004
2005

ECII
1.64

Leccin 1.1 Introduccin. Conceptos bsicos


Leccin 1.2 E/S programada
Leccin 1.3 Interrupciones
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
1.3.7
1.3.8
1.3.9

Concepto
Causas de las interrupciones
Tipos de interrupciones
Determinacin de la direccin de una ISR
Identificacin de la fuente de interrupcin
Sistemas de prioridad en las interrupciones
Secuencia de eventos
Ejemplo de circuito controlador de int.: 8259
Interrupciones en el PC

Leccin 1.4 Acceso directo a memoria (DMA)


Leccin 1.5 Ejemplos de programas de E/S

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Concepto de interrupcin
Interrupciones:

2004
2005

ECII
1.65

excepto
excepto en
en el
el caso
caso de
de las
las
interrupciones
interrupciones software
software

Bifurcaciones normalmente externas al programa en


ejecucin, provocadas por muy diversas causas
externas (seales que provienen del exterior del procesador), o
internas (la interrupcin la puede producir el propio procesador)

...cuyo objetivo es reclamar la atencin del procesador


sobre algn acontecimiento o hecho importante
...pidiendo que se ejecute un programa especfico para
tratar dicho acontecimiento,
(la rutina que se ejecuta en respuesta a una solicitud de
interrupcin se conoce como rutina de servicio de interrupcin o
ISR (Interrupt Service Routine)).

...de manera que el programa en ejecucin queda


temporalmente suspendido.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Concepto de interrupcin

2004
2005

ECII
1.66

Ejemplo:
Interrupcin provocada por un controlador de DMA,
...cuando termina la transmisin de un bloque de datos,
...para poner en conocimiento de los programas que tratan la E/S
...que ha terminado y se encuentra disponible para poder realizar
otra operacin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Concepto de interrupcin

2004
2005

ECII
1.67

Hay que diferenciar entre:


Interrupcin propiamente dicha:
Dilogo de seales necesario para que
...la CPU acepte, de forma correcta, la solicitud de
interrupcin,
...y salte al programa que se debe ejecutar.

Tratamiento de la interrupcin
Ejecucin del programa de gestin de la interrupcin.

La frontera entre las dos funciones puede resultar difusa,


ya que hay pasos que en algunas soluciones se hacen
mediante dilogo de seales y en otras mediante
programas.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Causas de las interrupciones

2004
2005

ECII
1.68

(situaciones que pueden requerir que el procesador


sea interrumpido)
Fallo del hardware
Los circuitos efectan comprobaciones para verificar si funcionan
correctamente, y si no es as generan interrupciones
Ejemplos:
Fallo de alimentacin:
- Interrupcin de la ms alta prioridad que guarda registros
(puede ser necesario conectar bateras).
Errores de paridad de memoria:
- Interrupcin que reintenta la transferencia varias veces.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Causas de las interrupciones

2004
2005

ECII
1.69

Errores de programa
Situaciones de error introducidas por el programador
Ejemplos:
Error de desbordamiento (overflow)
Divisin por cero
- En ambos casos la interrupcin cancel la ejecucin del
programa o transfiere el control a una subrutina del usuario
Violacin de la proteccin de memoria
- El programa de usuario intenta acceder a una direccin en
una parte protegida de la memoria interrupcin que
cancela la ejecucin y genera mensaje de error
Ejecucin de cdigos de operacin no vlidos

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Causas de las interrupciones

2004
2005

ECII
1.70

Condiciones de tiempo real


Se espera que el computador responda a una situacin muy rpido
Ejemplo:
Vigilancia de enfermos
- Interrupciones para hacer sonar timbres de alarma ante
situaciones de peligro
Control de herramientas
- Interrupcin para parar el equipo y evitar daos en la pieza
o la mquina cuando algo falla

Entrada / salida
Para poder hacer uso de la CPU mientras un perifrico no est listo
para realizar la transferencia (E/S por interrupciones)
...o durante el tiempo que el perifrico realiza la transferencia
(DMA)
...es necesario que la interfaz del perifrico o el controlador de
DMA puedan interrumpir a la CPU.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Tipos de interrupciones

2004
2005

ECII
1.71

Interrupciones externas
Se inician a peticin de dispositivos externos.
ENMASCARABLES:
Se pueden habilitar o inhibir usando instrucciones del tipo EI
(Enable Interrupt) y DI (Disable Interrupt).
Ejemplo: interrupciones de E/S
NO ENMASCARABLES:
Tienen mayor prioridad que las enmascarables.
Ejemplo: para gestionar fallos del hardware externo a la CPU y
condiciones de tiempo real.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Tipos de interrupciones

2004
2005

ECII
1.72

Interrupciones internas (o excepciones o traps)


Se activan de forma interna a la CPU mediante condiciones
excepcionales, como errores del programa o fallo del hardware
interno.

Interrupciones software
Las instrucciones de interrupcin software se emplean para realizar
llamadas al SO.
Son instrucciones ms cortas que las de llamada a subrutina y no se
necesita que el programa llamante conozca la direccin del SO en
memoria.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Determinacin de la direccin de una ISR

2004
2005

ECII
1.73

Cmo determinar la direccin de comienzo de la


rutina de servicio de interrupcin?
Direcciones fijas (o interrupciones no vectorizadas):
La direccin o direcciones se fijan y definen en los circuitos de la
CPU.
Ejemplo: una direccin fija para la rutina de servicio de cada
interrupcin.

Interrupciones vectorizadas:
Este trmino se refiere a todos los esquemas en los cuales el
dispositivo que solicita una interrupcin suministra de algn modo
la direccin de la rutina de servicio.
Cmo?

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Determinacin de la direccin de una ISR

2004
2005

ECII
1.74

Interrupciones vectorizadas:
Direccionamiento absoluto
La interfaz suministra la direccin completa de su ISR
Direccionamiento relativo
La interfaz slo enva parte de la direccin, que deber ser
completada por la CPU
- aadiendo ms bits
- sumando una cantidad
Se reduce el nmero de bits que necesita transmitir la interfaz,
con lo que se simplifica su diseo
Se limita el nmero de dispositivos que la CPU puede identificar
automticamente.
Envo de una instruccin de bifurcacin completa
en lugar de una simple direccin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Determinacin de la direccin de una ISR

2004
2005

ECII
1.75

Interrupciones vectorizadas:
Con los mtodos anteriores, la ISR para un dispositivo determinado
siempre debe comenzar en la misma localizacin
Para conseguir mayor flexibilidad:
el programador puede almacenar en esta localizacin una
instruccin de salto a la rutina adecuada
Esto lo puede realizar de forma automtica el mecanismo de
gestin de interrupciones

Direccionamiento relativo indirecto


La direccin enviada por la interfaz es la posicin relativa en
una tabla, residente en MP, que contiene las direcciones de las
ISR.
Cada posicin de la tabla se conoce como vector de
interrupcin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Determinacin de la direccin de una ISR

2004
2005

ECII
1.76

Para sincronizar la transmisin de la direccin, la CPU


enva una seal de control:
INTA# (Interrupt Acknowledge, o aceptacin de interrupcin)
equivalente a RD# en lectura

...causando que la fuente de interrupcin sita la direccin


en un bus, siendo entonces leda por la CPU.
Las seales de direccin se pueden enviar por un bus
especial, por el bus de datos, o por el propio bus de
direcciones.

ECII
Identificacin de la fuente de interrupcin 1.77
Antonio Caas, Dpto. ATC. UGR. 2003-2005

2004
2005

Los computadores pueden tener conectados una gran


variedad de dispositivos con poder de interrupcin
La accin requerida al recibir una interrupcin
depender de la causa de sta
(de qu dispositivo la produjo)
Es necesario que haya diferentes rutinas de servicio
de interrupcin, para cada una de las causas
Es necesario identificar la causa o el dispositivo que
produjo la interrupcin

ECII
Identificacin de la fuente de interrupcin 1.78
Antonio Caas, Dpto. ATC. UGR. 2003-2005

2004
2005

Soluciones:
Una o mltiples lneas de interrupcin con un dispositivo en
cada lnea
Cada fuente de interrupcin generar una seal de interrupcin en
la lnea apropiada.
La identificacin del dispositivo es trivial y la direccin de comienzo
de la ISR puede ser fija o vectorizada.

Una o mltiples lneas de interrupcin, con ms de un


dispositivo por lnea
Es normal tener varios dispositivos (fuentes de interrupciones)
conectados a la misma lnea de interrupcin.
El dispositivo que solicita la interrupcin ha de ser identificado
Esto puede realizarse por software o por hardware

ECII
Identificacin de la fuente de interrupcin 1.79
Antonio Caas, Dpto. ATC. UGR. 2003-2005

2004
2005

Una o mltiples lneas de interrupcin, con ms de un


dispositivo por lnea
Identificacin de la fuente de interrupcin por medio de software
(tcnica de sondeo o polling)
Se usa cuando la direccin de salto para todos los dispositivos
conectados a una misma lnea es nica y fija.
La ISR debe identificar el dispositivo que solicita la
interrupcin, examinando de uno en uno los dispositivos de la
lnea, para luego transferir el control a la rutina de servicio
concreta del solicitante.
Mtodo lento
Econmico desde el punto de vista hardware
Identificacin de la fuente de interrupcin por medio de hardware:
Se usan interrupciones vectorizadas.
Mtodo rpido
Ms costoso desde el punto de vista hardware

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Sistemas de prioridad en las interrupciones

2004
2005

ECII
1.80

En un computador con ms de un dispositivo con capacidad de


interrupcin, hay que establecer mecanismos de prioridad que
resuelvan los siguientes problemas:
Interrupciones simultneas
Cuando se produce una interrupcin, sta no se acepta hasta que la
instruccin que estaba siendo ejecutada termine. Durante ese breve
tiempo pueden haberse generado otras interrupciones, que requieren ser
atendidas.
Qu interrupcin se atiende primero?

Interrupciones anidadas
Se puede producir una interrupcin antes de haber atendido
completamente la anterior
Debe terminarse de atender la interrupcin que ya ha terminado su
tratamiento, o se ha de aceptar y atender inmediatamente la nueva
solicitud?

Inhibicin de interrupciones
Mecanismos de prioridad para permitir que cada programa defina los tipos
de interrupciones que puede tolerar

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones simultneas (I)

2004
2005

ECII
1.81

Si llegan solicitudes de interrupcin de dos o ms


dispositivos, la CPU debe disponer de algn medio para que
slo se d servicio a una solicitud, y el resto se retrase o no
se tome en cuenta.
Gestin de prioridades centralizada
Cuando hay un solo dispositivo en cada lnea de interrupcin, la CPU
acepta la solicitud que llega por la lnea de mayor prioridad.

puede
puede ser
ser un
un
circuito
circuito
externo
externo aa la
la
CPU
CPU llamado
llamado
controlador
controlador de
de
interrupciones
interrupciones

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones simultneas (II)

2004
2005

ECII
1.82

Gestin de prioridades distribuida


Cuando varios dispositivos comparten una nica lnea de solicitud
de interrupcin es necesario implantar un mecanismo para asignar
prioridades a estos dispositivos:
Tcnica de sondeo o polling, que como hemos visto se usa
para determinar por software el origen de una interrupcin.
- La prioridad se implanta de forma automtica segn el
orden en el que se escrutan los dispositivos.
- Las prioridades se pueden cambiar modificando la ISR para
que sondee en un orden diferente.
Tcnica de encadenamiento o daisy-chain
- El dispositivo que est elctricamente ms cercano a la CPU
tendr la mayor prioridad.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones simultneas (III)

2004
2005

ECII
1.83

Gestin de prioridades hbrida


Combinacin de esquemas centralizado y distribuido (daisy-chain).

Antonio Caas, Dpto. ATC. UGR. 2003-2005

(POLLING I)

2004
2005

ECII
1.84

La tcnica de sondeo, escrutinio o polling detallada


Se usa para
Identificar el origen de una interrupcin
Establecer un mecanismo software de asignacin de prioridades
a los dispositivos
En esta solucin, el ordenador dispone normalmente de una nica
lnea de interrupcin INT#, que sirve para que cualquier dispositivo
solicite una interrupcin.
La lnea INT# se organiza en colector abierto (OR cableado)
Cualquier dispositivo puede poner INTi=1 para solicitar la
interrupcin, lo que hace que INT# se active (se ponga a 0).

Antonio Caas, Dpto. ATC. UGR. 2003-2005

(POLLING II)

2004
2005

ECII
1.85

La ISR est en una posicin de memoria fija y se encarga de


identificar cul es el dispositivo que interrumpi, comprobando el
valor de los biestables de interrupcin de los dispositivos, que
estarn a 1 para aquellos dispositivos que solicitan interrupcin.
La asignacin de prioridades se hace por el orden en el que la ISR
analiza los biestables de interrupcin de los perifricos.
los
los biestables
biestables aparecen
aparecen
juntos
juntos en
en un
un nico
nico
puerto
puerto de
de entrada
entrada

Antonio Caas, Dpto. ATC. UGR. 2003-2005

(DAISY-CHAIN I)

2004
2005

ECII
1.86

La tcnica de encadenamiento o daisy-chain detallada


Se usa para establecer un mecanismo hardware de asignacin de
prioridades a los dispositivos.
Se basa en dos seales comunes a todos los peticionarios y a la CPU:
INT#:
Peticin de interrupcin
INTA#:
Concesin o aceptacin de interrupcin
Los peticionarios se conectan a INT# en colector abierto.
Esto permite que uno o varios dispositivos soliciten
simultneamente la interrupcin, poniendo un 0 en INT#
La seal INTA# sirve, a modo de testigo, para que uno solo de los
peticionarios sea atendido.
Es un pulso que recorre en serie, uno tras otro, los dispositivos.
Es tomado y eliminado por el primero que desea ser atendido.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

(DAISY-CHAIN II)
3.
3. El
El flanco
flanco de
de subida
subida de
de INTA#
INTA# permite
permite que
que el
el dispositivo
dispositivo
seleccionado
seleccionado cargue
cargue un
un 11 en
en su
su biestable
biestable de
de concesin
concesin
de
de servicio
servicio BICON,
BICON, yy que
que se
se pase
pase aa la
la fase
fase de
de servicio
servicio

1.
1. Mientras
Mientras INTA#
INTA# vale
vale
1,
1, los
los biestables
biestables de
de
peticin
peticin BIPET
BIPET dejan
dejan
pasar
pasar las
las peticiones
peticiones
internas
internas PETPER
PETPER de
de
sus
sus respectivos
respectivos
perifricos
perifricos

2004
2005

ECII
1.87

Durante
Durante el
el pulso
pulso
INTA#
INTA# == 0,
0, las
las
seales
seales PRI#
PRI#
forman
forman una
una cadena
cadena
de
de ceros,
ceros, que
que se
se
interrumpe
interrumpe por
por el
el
primer
primer dispositivo
dispositivo
que
que tenga
tenga BIPET
BIPET aa 11

2.
2. Cuando
Cuando llega
llega un
un pulso
pulso de
de concesin
concesin
INTA#
INTA# == 0,
0, se
se congelan
congelan los
los biestables
biestables
BIPET,
BIPET, de
de forma
forma que
que la
la situacin
situacin de
de
solicitud
solicitud de
de los
los perifricos
perifricos no
no pueda
pueda variar
variar

Antonio Caas, Dpto. ATC. UGR. 2003-2005

(DAISY-CHAIN III)

2004
2005

Identificacin de la fuente de interrupcin:


Alternativa 1: la ISR puede determinar que dispositivo
interrumpi leyendo los biestables BICON.
Alternativa 2: se pueden usar interrupciones vectorizadas

ECII
1.88

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones anidadas (I)

2004
2005

ECII
1.89

En muchas ocasiones se produce una interrupcin mientras


se est atendiendo otra. Qu hacer?
Inhabilitar las interrupciones durante la ejecucin de la
ISR
La ejecucin de la ISR, una vez iniciada, siempre continuar hasta
su finalizacin, antes de que la CPU acepte una segunda solicitud de
interrupcin.
Esta solucin es vlida cuando las ISR sean breves.
Dispositivos simples para los cuales el retraso posible en la
respuesta a la (segunda) solicitud sea aceptable.

Permitir que la CPU acepte la segunda solicitud de


interrupcin durante la ejecucin de la ISR, si su
prioridad es mayor
ya que, para algunos dispositivos, un largo retraso en la respuesta a
una solicitud de interrupcin los podra llevar a funcionar de forma
errnea.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones anidadas (II)

2004
2005

ECII
1.90

Ejemplo: Reloj de tiempo real


Enva solicitudes de interrupcin a la CPU a intervalos regulares
ejecucin de breve ISR que incrementa la hora (contadores
de memoria).
Necesidad de que se atienda la interrupcin antes de que se
produzca de nuevo.
La CPU debe aceptar la solicitud de interrupcin aunque se est
atendiendo a otro dispositivo.
Durante la ejecucin de una ISR se aceptarn solicitudes de
interrupcin de algunos dispositivos, pero no de otros, segn sea su
prioridad.
Cada vez que se acepta una nueva interrupcin, el contenido de PC
se transfiere a la pila, y una vez atendida se toma de sta.
La pila debe ser lo suficientemente grande para que las
interrupciones se puedan anidar a suficiente profundidad.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Inhibicin de interrupciones (I)

2004
2005

ECII
1.91

Hay situaciones en las que conviene evitar temporalmente que se


produzcan interrupciones.

Necesidad de mecanismos para desactivar/activar las interrupciones.

Hay tres niveles de desactivacin de interrupciones:


1. Desactivar todas las interrupciones

Para ello se puede usar un Biestable General de Inhibicin de


Interrupciones
Si est a 1 (por ej.), el programa no podr sufrir interrupciones.
Se puede cambiar su estado mediante instrucciones EI (Enable
Interrupts) y DI (Disable Interrupts).
Independientemente del valor de BGII, la CPU puede desactivar las
interrupciones automticamente:
Durante la ejecucin de la primera instruccin de la ISR
- Si es una instruccin DI el programador se asegura de que no
ocurrirn ms interrupciones hasta ejecutar EI.
Durante toda la ISR
- No ocurrirn ms interrupciones hasta ejecutar EI o retornar de
la interrupcin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Inhibicin de interrupciones (II)

2004
2005

ECII
1.92

2. Desactivar interrupciones de inferior o igual prioridad

Se puede tener un registro (o varios bits del registro de estado del


procesador) con el valor del menor nivel que puede interrumpir.
Un decodificador se encarga de desactivar todos los niveles de
menor prioridad.
La CPU tendra as un nivel de prioridad (prioridad del programa
que se est ejecutando), y slo acepar interrupciones de
dispositivos con prioridades mayores que la suya.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Inhibicin de interrupciones (III)

2004
2005

ECII
1.93

3. Desactivar de forma selectiva determinados niveles de


interrupcin

La seal INTR# de cada nivel se puede enmascarar haciendo la


operacin AND con el bit correspondiente de un registro mscara
de interrupcin.
El programa cargar un 1 en aquellos niveles de interrupcin que
se deseen inhibir.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Inhibicin de interrupciones (IV)


Ejemplo:

2004
2005

ECII
1.94

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Inhibicin de interrupciones (V)

2004
2005

ECII
1.95

Las seales INTi# deben atravesar un doble filtro:


Su correspondiente bit de mscara
(=1 nivel de interrupcin inhibido)
La condicin de que i Nivel
El decodificador convierte el contenido del registro de nivel en los
correspondientes ceros y unos en cada puerta AND para filtrar las
peticiones de interrupcin.
La seal INT# es la que realmente produce la interrupcin.
Se genera si alguna seal INTi# consigue atravesar su puerta
AND correspondiente, y adems el biestable general de
inhibicin de interrupciones est a 0.
El codificador genera el valor i de la seal INTi# de mayor nivel que
atraviesa el filtro, para:
controlar el multiplexor que encamina la seal INTA# a su nivel
correspondiente
uso interno de la unidad de control, indicndole cual es el nivel
a atender (funcionando como un vector de interrupcin)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Secuencia de eventos en una interrupcin

2004
2005

ECII
1.96

Esquema correspondiente a identificacin de la fuente de la interrupcin


por hardware, sin polling:
Dispositivo:
Dispositivo: efecta
efecta una
una solicitud
solicitud de
de
interrupcin
interrupcin

ISR

CPU:
CPU: informa
informa al
al dispositivo
dispositivo de
de que
que su
su
solicitud
solicitud ha
ha sido
sido reconocida
reconocida

CPU:
CPU: desactiva
desactiva las
las interrupciones
interrupciones durante
durante
la
la primera
primera instruccin
instruccin oo durante
durante toda
toda la
la
ISR
ISR

Dispositivo:
Dispositivo: en
en respuesta,
respuesta, desactiva
desactiva la
la
seal
seal de
de solicitud
solicitud de
de interrupcin
interrupcin

Inhabilitar
Inhabilitar // habilitar
habilitar interrupciones?
interrupciones?

CPU:
CPU: interrumpe
interrumpe el
el programa
programa que
que se
se
estaba
estaba ejecutando
ejecutando en
en ese
ese momento
momento
Pila
Pila
PC
PC

PC
PC
Pila
Pila
Se
Se reanuda
reanuda la
la ejecucin
ejecucin del
del programa
programa
interrumpido
interrumpido

Guardar
Guardar en
en la
la pila
pila todos
todos los
los registros
registros que
que
se
se modifiquen
modifiquen
Cuerpo
Cuerpo principal
principal de
de la
la ISR
ISR (por
(por ej.
ej. E/S)
E/S)
Restaurar
Restaurar todos
todos los
los registros
registros previamente
previamente
guardados
guardados
Habilitar
Habilitar interrupciones
interrupciones si
si previamente
previamente se
se
haban
haban inhabilitado
inhabilitado
Retorno
Retorno de
de la
la ISR
ISR

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de ISR

2004
2005

ECII
1.97

ISR outwd para 8080:


Da salida a palabras de una posicin fija de memoria en un
dispositivo de salida en el puerto de salida nmero 9.
Otras interrupciones son inhabilitadas durante la ejecucin de
outwd (lo hace el 8080 automticamente).
outwd:push
lda
out
pop
ei
ret

psw
data
9
psw

;
;
;
;
;
;

Salvar A e indicadores en la pila


A <-- M[data]
Puerto 9 <-- A
Restaurar A e indicadores
Habilitar sistema de interrup.
Retornar a programa interrumpido

El
El sistema
sistema de
de interrupciones
interrupciones del
del 8080
8080 no
no es
es
habilitado
habilitado por
por EI
EI hasta
hasta despus
despus de
de ejecutada
ejecutada la
la
instruccin
instruccin que
que sigue
sigue aa EI
EI (RET
(RET en
en este
este caso).
caso).
Esto
Esto asegura
asegura que
que la
la ISR
ISR se
se completa
completa antes
antes de
de
que
que la
la CPU
CPU entre
entre en
en otro
otro ciclo
ciclo de
de interrupcin.
interrupcin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

2004
2005

La mayora de las familias de microprocesadores contienen circuitos


especiales denominados controladores de interrupciones, que
simplifican las diversas tareas de diseo asociadas con el control de las
interrupciones externas, y
permiten aumentar sistemticamente el nmero de lneas de peticin de
interrupcin disponibles.

Controlador de interrupciones programable 8259


(Programmable Interrupt Controller, PIC)

Caractersticas generales
Permite manejar 8 lneas de interrupciones
vectorizadas con prioridad.
Compatible con las familias 8085 y 8086.
Prioridades alterables por software.
Permite enmascaramiento individual de cada lnea.
Es posible conectar 9 controladores para manejar
hasta 64 niveles de interrupcin.

ECII
1.98

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
Esquema general
Gestiona
Gestiona todas
todas
las
las transferencias
transferencias

2004
2005

ECII
1.99

Bfer
Bfer triestado
triestado bidirecbidireccional
cional de
de 88 bits,
bits, aa travs
travs
del
del cual
cual se
se transfieren
transfieren
rdenes
rdenes de
de control
control ee
informacin
informacin de
de estado
estado
IRR
IRR (Interrupt
(Interrupt
Request
Request Register):
Register):
niveles
niveles de
de
interrupcin
interrupcin que
que
estn
estn solicitando
solicitando
servicio
servicio

Almacena
Almacena yy compara
compara la
la
identificacin
identificacin de
de todos
todos
los
los 8259
8259 conectados
conectados en
en
cascada
cascada

Determina
Determina las
las prioridades
prioridades de
de
los
los bits
bits aa 11 en
en el
el IRR.
IRR. El
El que
que
tenga
tenga mayor
mayor prioridad
prioridad se
se
selecciona
selecciona yy se
se lleva
lleva al
al bit
bit
correspondiente
correspondiente del
del ISR
ISR cuando
cuando
la
la CPU
CPU acepta
acepta la
la interrupcin
interrupcin

ISR
ISR (In-Service
(In-Service
Register):
Register): niveles
niveles de
de
interrupcin
interrupcin que
que
estn
estn siendo
siendo
servidos
servidos actualmente
actualmente
IMR
IMR (Interrupt
(Interrupt Mask
Mask
Register):
Register): inhabilita
inhabilita
algunos
algunos niveles
niveles de
de
interrupcin
interrupcin aa la
la
salida
salida de
de IRR
IRR

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
Asignacin de patillas
CS#:
CS#: aa 00 habilita
habilita la
la
comunicacin
comunicacin entre
entre 8259
8259 yy CPU
CPU
WR#:
WR#: aa 00 habilita
habilita la
la escritura
escritura de
de
rdenes
rdenes de
de control
control desde
desde la
la CPU
CPU
RD#:
RD#: aa 00 habilita
habilita la
la lectura
lectura por
por
parte
parte de
de la
la CPU
CPU del
del estado
estado de
de
los
los registros
registros IRR,
IRR, ISR
ISR oo IMR,
IMR, oo el
el
nivel
nivel de
de interrupcin
interrupcin (en
(en modo
modo
polled)
polled)
D0-D7:
D0-D7: conexin
conexin al
al bus
bus de
de datos
datos
CAS0
CAS0 -- CAS2:
CAS2: Salidas
Salidas cuando
cuando el
el
8259
8259 es
es maestro
maestro (envan
(envan la
la
identificacin
identificacin del
del 8259
8259 al
al que
que le
le
es
es aceptada
aceptada una
una peticin
peticin de
de
interrupcin).
interrupcin). Entradas
Entradas cuando
cuando
es
es esclavo
esclavo

ECII
1.100

2004
2005

A0:
A0: junto
junto con
con RD#
RD# yy WR#
WR#
selecciona
selecciona el
el registro
registro aa
leer/escribir
leer/escribir
INTA#
INTA# (Interrupt
(Interrupt
Acknowledge):
Acknowledge): De
De la
la
CPU
CPU al
al 8259.
8259. En
En forma
forma de
de
pulsos
pulsos causa
causa que
que el
el 8259
8259
ponga
ponga informacin
informacin de
de
vectorizacin
vectorizacin en
en el
el bus
bus
de
de datos
datos
IR0,
IR0, IR7:
IR7: Peticiones
Peticiones de
de
interrupcin
interrupcin desde
desde los
los
perifricos
perifricos
INT:
INT: Del
Del 8259
8259 aa la
la CPU
CPU
para
para realizar
realizar una
una peticin
peticin
de
de interrupcin
interrupcin
SP#/EN#
SP#/EN# (Slave
(Slave Progress
Progress
// Enable
Enable Buffer)
Buffer)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.101

2004
2005

Conexin en cascada de varios 8259


El 8259 puede ser interconectado en un sistema de un maestro con
hasta 8 esclavos, para manejar hasta 64 niveles de prioridad.

El
El maestro
maestro controla
controla aa los
los esclavos
esclavos aa travs
travs de
de las
las 33
lneas
lneas de
de cascada,
cascada, que
que actan
actan como
como Chip
Chip Selects
Selects para
para
los
los esclavos
esclavos durante
durante los
los pulsos
pulsos INTA#
INTA# (excepto
(excepto el
el 1)
1)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
Cada
Cada 8259
8259 debe
debe seguir
seguir una
una secuencia
secuencia de
de inicializacin
inicializacin yy
puede
puede programarse
programarse para
para trabajar
trabajar en
en un
un modo
modo diferente
diferente

Las
Las salidas
salidas INT
INT de
de los
los esclavos
esclavos se
se conectan
conectan aa las
las entradas
entradas IR
IR del
del maestro.
maestro.
Cuando
Cuando una
una lnea
lnea IRi
IRi se
se activa
activa yy despus
despus es
es reconocida,
reconocida, el
el maestro
maestro
permite
permite que
que el
el esclavo
esclavo ponga
ponga en
en el
el bus
bus de
de datos
datos el
el vector
vector de
de interrupcin
interrupcin

ECII
1.102

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.103

2004
2005

Secuencia de peticin de interrupcin para la CPU 8085


1. Una o ms lneas IR0-IR7 se ponen a 1, activndose los
correspondientes bits de IRR.
2. El 8259 evala estas peticiones y si es apropiado enva una
peticin de interrupcin al 8085 por la patilla INT.
3. El 8085 reconoce la interrupcin respondiendo con un pulso
INTA#.
4. Al recibir el INTA#, el 8259 pone a 1 el bit de ISR de mayor
prioridad de entre los correspondientes a bits de IRR a 1. El
correspondiente bit de IRR lo pone a 0.
El 8259 enva el codop CALL (11001101) por el bus de datos.
Si la patilla IR atendida no sigue a 1 (peticin demasiado breve) el
8259 enva una peticin de nivel 7.
5. El 8085 enva otros dos pulsos INTA#.
El 8259 enva la direccin de la ISR a travs del bus de datos (en
el primer pulso enva el LSB y en el segundo el MSB).
6. Si el modo es AEOI, el bit de mayor prioridad a 1 del ISR se pone a
0 al final del tercer pulso INTA#.
Si no, el bit ISR permanece a 1 hasta que se enve la orden EOI al
8259 normalmente al final de la rutina de servicio

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.104

2004
2005

Secuencia de peticin de interrupcin para la CPU 8086


1. Una o ms lneas IR0-IR7 se ponen a 1, activndose los
correspondientes bits de IRR.
2. El 8259 evala estas peticiones y si es apropiado enva una
peticin de interrupcin al 8086 por la patilla INT.
3. El 8086 reconoce la interrupcin respondiendo con un pulso
INTA#.
4. Al recibir el INTA#, el 8259 pone a 1 el bit de ISR de mayor
prioridad de entre los correspondientes a bits de IRR a 1. El
correspondiente bit de IRR lo pone a 0.
El 8259 no enva nada en este ciclo por el bus de datos.
Si la patilla IR atendida no sigue a 1 (peticin demasiado breve) el
8259 enva una peticin de nivel 7.
5. El 8086 enva otro pulso INTA#.
El 8259 enva un puntero de 8 bits a travs del bus de datos
(vector de interrupcin).
6. Si el modo es AEOI, el bit de mayor prioridad a 1 del ISR se pone a
0 al final del tercer pulso INTA#.
Si no, el bit ISR permanece a 1 hasta que se enve la orden EOI al
8259 normalmente al final de la rutina de servicio

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
Vectores enviados a la CPU (I)

ECII
1.105

2004
2005

8086

Vectores enviados a la CPU (II)

8080, 8085

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.106

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.107

2004
2005

Programacin del 8259


El 8259 acepta dos tipos de rdenes desde la CPU:
De inicializacin (Initialization Command Words, ICWs):
Deben ser enviadas a cada 8259 antes de que comience el
funcionamiento normal.
De funcionamiento (Operation Command Words, OCWs):
Hacen que el 8259 funcione en varios modos:
- Completamente anidado
- Con rotacin de prioridad
- Modo de mscara especial
- Polled (por sondeo)
...
Las OCWs pueden escribirse en cualquier momento tras la
inicializacin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
Secuencia de inicializacin del 8259
Reset
Reset automtico
automtico del
del circuito
circuito (se
(se
establecen
establecen valores
valores por
por defecto)
defecto)
ICW1
ICW1 ee ICW2:
ICW2: Fijan
Fijan vectores
vectores de
de
interrupcin
interrupcin yy otras
otras inicializaciones
inicializaciones

ICW3:
ICW3: Establece
Establece cmo
cmo estn
estn conectados
conectados
8259
8259 esclavos
esclavos aa un
un 8259
8259 maestro
maestro

ICW4:
ICW4: Establece
Establece modos
modos de
de funcionamiento
funcionamiento

ECII
1.108

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.109

2004
2005

Despus de enviar las rdenes ICW, el 8259 queda programado por


defecto en el modo completamente anidado.

Modo completamente anidado (Fully Nested Mode)


Las peticiones de interrupcin estn ordenadas desde 0 (IR0, la
ms prioritaria), hasta 7 (IR7, la menos prioritaria).
Las prioridades no son alterables automticamente (de ser
necesario, podran ser cambiadas por software).
Mientras que un bit ISR est a 1, slo las lneas con mayor
prioridad pueden interrumpir.
Slo sern reconocidas esas interrupciones si el biestable de
habilitacin de interrupciones del microprocesador ha sido
rehabilitado por software (se haya ejecutado un EI / STI en la
ISR).

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.110

2004
2005

rdenes de inicializacin (ICW)


ICW1 e ICW2
Establecen las direcciones de comienzo de las ISR (8080/80805) o
los ndices de la tabla de vectores de interrupcin (8086).
Informan al 8259 de si va a trabajar solo o conectado en cascada.
Establecen separacin entre las subrutinas (8080/8085) de 4/8
bytes.
Establecen si las IRi se detectarn por flanco de subida o por nivel.
Indican al 8259 si se le va a enviar ICW4 o no.

IRi
IRi debe
debe quitarse
quitarse antes
antes de
de EOI
EOI para
para evitar
evitar
que
que ocurra
ocurra una
una segunda
segunda interrupcin
interrupcin
IRi
IRi puede
puede seguir
seguir en
en alto
alto sin
sin generar
generar
nuevas
nuevas interrupciones
interrupciones

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.111

2004
2005

ICW3
Usada slo cuando hay ms de un 8259 (cascada)
El formato de ICW3 es distinto si se enva al maestro o al esclavo:
MAESTRO (SP#/EN# = 1, o BUF=1&M/S=1 en ICW4)
Se pone un 1 en cada
bit i tal que IRi est
conectado a un 8259
esclavo.
ESCLAVO (SP#/EN# = 0, o BUF=1&M/S=0 en ICW4)
Los bits 2-0 identificarn
en adelante a ese
esclavo.
Cada vez que se produzca
el primer INTA#, el
esclavo los comparar con
C2-C0 y si son iguales
enviar el vector en los
siguientes pulsos.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
ICW4
Establece si se van a usar los modos:
Fin de interrupcin automtico.
Con buffers.
Completamente anidado especial.
Establece si se va a usar con un 8080/8085 o con un 8086.
Si no se enva
ICW4, todos
los bits
estarn a 0
(8080/8085,
fin de
interrupcin
normal, etc.)

ECII
1.112

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.113

2004
2005

Tipos de fin de interrupcin:


El bit ISRi = 1 correspondiente a la instruccin que se est
atendiendo puede ponerse a 0 de dos formas.
- AEOI: automticamente tras el flanco de subida del ltimo
pulso INTA#.
- EOI normal: mediante una orden de fin de interrupcin (EOI
en OCW2).
Modo con buffers:
Hay sistemas con buffers en los buses, que deben ser
habilitados para mandar informacin a travs de ellos.
En el modo con buffers, siempre que el 8259 saca datos al bus
de datos activa la seal SP#/EN#.
Como la seal SP#/EN# ya no se puede usar para determinar si
un 8259 es maestro o esclavo, esto se har por software
mediante el bit 2 de ICW4.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.114

2004
2005

Modo completamente anidado especial:


Puede usarse en sistemas que trabajen en cascada, si se
quiere conservar las prioridades dentro de cada esclavo.
Es similar al modo completamente anidado normal, excepto:
- En el modo completamente anidado normal un esclavo
queda enmascarado cuando su peticin de interrupcin
est en servicio (no se pueden servir peticiones del mismo
esclavo ni siquiera si son de ms alta prioridad).
- En el modo completamente anidado especial el esclavo no
queda bloqueado (las peticiones de mayor prioridad
dentro del esclavo sern reconocidas por el maestro y
generarn peticiones en el procesador).
...

ECII
1.115

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

La ISR tiene que comprobar si la interrupcin servida por ella


fue la nica desde ese esclavo. Para ello:
1. Enva una orden EOI al esclavo (OCW2).
2. Lee su registro ISR viendo si est a 0. Si es 0 tiene que
mandar otro EOI al maestro. Si no es 0 no manda EOI al
maestro.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

rdenes de funcionamiento (OCW)


OCW1
Pone a 1 a 0 cada bit del registro IMR.
Mi = 1 IRi enmascarado (inhibido)
Mi = 0 IRi habilitado

ECII
1.116

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.117

2004
2005

OCW2
Los bits R, SL y EOI controlan varios modos de rotacin de prioridad
y de fin de interrupcin.
Los bits L2, L1, L0 determinan el nivel de interrupcin sobre el que
se acta cuando SL = 1.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.118

2004
2005

End Of Interrupt, fin de interrupcin:


En el modo normal de fin de interrupcin (AEOI = 0 en ICW4),
hay que enviar una orden EOI al 8259 antes de regresar de la ISR
(o dos EOI, uno para el esclavo y otro para el maestro si se usa
modo cascada).
Hay dos tipos de rdenes EOI:
- EOI no especfico (el caso normal). No hace falta decir qu
interrupcin ha terminado, pues ser la ms prioritaria de
las que estn siendo atendidas. El 8259 borra de su registro
ISR el bit con mayor prioridad que est puesto a 1.
- EOI especfico (slo se usa si se ha alterado la prioridad de
interrupciones totalmente anidada). El 8259 no ser capaz
de determinar el ltimo nivel de interrupcin reconocido,
por tanto hace falta mandar en L2, L1, L0 el nivel de
interrupcin que se desea borrar del registro ISR.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.119

2004
2005

Automatic Rotation, rotacin automtica (si se desea que los


dispositivos tengan igual prioridad):
Despus de ser servido, el dispositivo recibe la prioridad ms
baja.
Cualquier dispositivo que est pidiendo interrupcin espera
como mucho el tiempo que tardan otros 7 dispositivos en ser
atendidos una vez.
Hay dos formas de llevar a cabo la rotacin automtica:
- Rotacin al enviar una orden de EOI no especfico.
- Rotacin en el modo AEOI (se puede activar / desactivar).
Ejemplo:
Antes
Antes de
de rotar,
rotar, IR4
IR4 tiene
tiene
la
la prioridad
prioridad ms
ms alta
alta de
de
las
las lneas
lneas en
en servicio
servicio

Despus
Despus de
de rotar
rotar
(IR4
(IR4 ha
ha sido
sido servida)
servida)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.120

2004
2005

Specific Rotation, rotacin especfica:


El programador puede cambiar especficamente las prioridades
decidiendo la lnea con la prioridad ms baja (el resto se fijar
automticamente).
- Ej.: Si IR5 se programa como la lnea de menor prioridad,
IR6 tendr la mayor prioridad, luego IR7, luego IR0,...
Hay dos formas de llevar a cabo la rotacin especfica:
- Rotacin al enviar una orden de EOI especfico.
- Orden set priority (fijar prioridad).

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259
OCW3
El bit ESMM permite activar/desactivar el modo de mscara
especial.
El bit P permite escribir una orden poll (sondeo).
El bit RR = 1 permite que los registros IRR e ISR sean ledos.

ECII
1.121

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.122

2004
2005

Special Mask Mode, modo de mscara especial:


Establece que todas las interrupciones puedan ser tratadas en
el momento en que se produzcan sin tener en cuenta las
prioridades, pero teniendo en cuenta los bits de mscara.
Interrupciones de niveles ms bajos que la que est siendo
atendida pueden interrumpir a la CPU si no estn
enmascaradas.
Poll command, orden de sondeo:
El 8259 pasa a no generar interrupciones a la CPU.
El 8259 tratar el siguiente pulso RD# como una aceptacin de
interrupcin. fijar el bit ISR apropiado y escribir en el bus de
datos lo siguiente:

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de circuito integrado controlador de


interrupciones: 8259

ECII
1.123

2004
2005

Read Register command, lectura de IRR e ISR:


Se enva una orden OCW3 con RR = 1.
El siguiente pulso RD# transfiere a la CPU por el bus de datos el
contenido de IRR (si RIS = 0) o el de ISR (si RIS = 1) (siempre con
A0 = 0).
(Para leer el IMR no se necesita una orden OCW3, basta con leer
con A0 = 1)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC
Interrupciones vectorizadas:
Existen 256 interrupciones posibles (0 a 255 = 0xFF),
vectorizadas.
Tabla de vectores de interrupcin:
primeros 1024 bytes de memoria (0 a 0x3FF).

Cada vector de interrupcin:


doble palabra (32 bits, 4 bytes)
direccin de la ISR asociada a esa interrupcin
Segmento
Segmento (CS)
(CS)
Desplazamiento
Desplazamiento (IP)
(IP)

ECII
1.124

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC

ECII
1.125

2004
2005

Interrupciones vectorizadas:
Slo unas pocas se generan por hardware (interna o
externamente).
si IF (Interrupt Flag) = 1, detienen temporalmente la ejecucin del
programa
si IF = 0, el procesador ignora las int. que llegan por la patilla INTR
IF se puede borrar con CLI / disable() y activar con STI /
enable()
Hay una interrupcin no enmascarable especial que se reconoce
siempre, independientemente de IF, cuando se activa la patilla NMI
(Non Maskable Interrupt)

Todas se pueden generar por software


A travs de las instrucciones INT e INTO
En este caso no interrumpen realmente nada
Son rutinas del SO que ejecutan tareas de E/S, gestin de ficheros,
gestin de memoria, etc.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC

ECII
1.126

2004
2005

Interrupciones vectorizadas:
Cuando se produce una interrupcin, el procesador:
almacena el estado actual de la mquina introduciendo en la pila el
registro de flags, el registro CS y el registro IP
pone IF a 0 para evitar nuevas interrupciones
multiplica por 4 el nmero de interrupcin (que le llega por el bus
de datos) para obtener la direccin de un vector de interrupcin
asigna a IP y CS el vector de interrupcin
se salta a la rutina que haya en esa direccin, que finalizar al
ejecutar IRET

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC

ECII
1.127

2004
2005

Para gestionar las interrupciones hardware que provienen


de la patilla INTR se dispone de dos 8259 (slo uno en el
PC/XT), con varios niveles de prioridad
PC/XT
PC/XT

AT
AT

ECII
1.128

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC

ICW1
ICW2
ICW3
ICW4

0x20
0x21
0x21
0x21

OCW1 - IMR
OCW2
AT
AT
OCW3
Leer IMR

0x21
0x20
0x20
0x21

ICW1
ICW2
ICW3
ICW4

0xA0
0xA1
0xA1
0xA1

OCW1 - IMR
OCW2
OCW3
Leer IMR

0xA1
0xA0
0xA0
0xA1

ECII
1.129

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC
8259
maestro
IRQ0
IRQ1
IRQ2

8259
esclavo

IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
IRQ3
IRQ4
IRQ5

IRQ6
IRQ7

PC

AT y post.

temporizador
teclado
Bus
PC
reloj tiempo
real
Bus ISA/PCI
(tarjeta
sonido)
Bus ISA/PCI
Bus ISA/PCI
(ej. tarjeta
video, NIC)
Bus ISA/PCI
Ratn PS/2
Procesador
matemtico
IDE1
IDE2
COM1
COM2
COM2
COM1
Disco
Normalmente
duro
LPT2 o
tarjeta de
sonido ISA
Disquetera
LPT1

Vector
0x08
0x09
0x0A
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x0B
0x0C
0x0D

0x0E
0x0F

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC

ECII
1.130

2004
2005

Ejemplo de ISR:
;rutina de interrupcin
ISR
proc far
sti
; Si queremos que entren las...
; ...interrupciones prioritarias
push ax
; guardar AX
push bx
; guardar otros regs. cambiados
.
.
.
pop
bx
; recuperar otros regs. cambiados
mov
al,20h
; EOI
out
20h,al
; OCW2
Se
Se enva
enva al
al 8259
8259 maestro
maestro la
la
orden
pop
ax
; recuperar AX
orden de
de fin
fin de
de interrupcin
interrupcin
antes
antes del
del IRET
IRET
iret
(slo
(slo para
para interrupciones
interrupciones
ISR
endp
provenientes
provenientes del
del 8259)
8259)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC
Pasos en la ejecucin de una interrupcin:
SP SP 2
pila FLAGS
IF, TF 0
SP SP 2
pila CS
CS M[n int.
SP SP 2
pila IP
IP M[n int.
(Ejecucin de ISR)
IP pila
SP SP + 2
CS pila
SP SP + 2
FLAGS pila
SP SP + 2

Ejemplo
Ejemplo 1:
1: cmo
cmo afecta
afecta aa la
la
pila
pila la
la ejecucin
ejecucin de
de INT
INT 1Ah
1Ah

* 4 + 2]

* 4]

ECII
1.131

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC
Pasos en la ejecucin de una interrupcin:
Ejemplo
Ejemplo 2:
2: ejecucin
ejecucin de
de INT
INT 4Ah
4Ah

ECII
1.132

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC
Pasos en la ejecucin de una interrupcin:
Ejemplo
Ejemplo 3:
3: camino
camino seguido
seguido por
por INT
INT 21h
21h

ECII
1.133

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Interrupciones en el PC
Modificacin de una
interrupcin:
Funcin 35h de INT 21h
(getvect()) devuelve
el valor actual de un
vector
Funcin 25h de INT 21h
(setvect()) cambia el
valor de un vector

Ejemplo:
Ejemplo: modificacin
modificacin de
de la
la
int.
int. 16h
16h para
para que
que se
se ejecute
ejecute
despus
despus de
de nuestro
nuestro cdigo
cdigo

ECII
1.134

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Entrada/Salida
Leccin 1.1
Leccin 1.2
Leccin 1.3
Leccin 1.4

Introduccin
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
1.4.1 Concepto
1.4.2 Controlador de DMA (DMAC)
1.4.3 Seales de control
1.4.4 Secuencia de eventos
1.4.5 Mtodos de control de DMA
1.4.6 Ejemplo de DMAC: 8237

Leccin 1.5 Ejemplos de programas de E/S

ECII
1.135

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Concepto de DMA

ECII
1.136

2004
2005

DMA (Direct Memory Access):


Tcnica que permite realizar transferencias de datos entre
la memoria y los dispositivos de E/S sin intervencin
directa del procesador.
No se ejecutan instrucciones en el procesador para realizar la
transferencia.

Permite transferencias a la mxima velocidad permitida


por el bus del sistema, la memoria y el perifrico.
En sistemas con un nico bus, esta velocidad es mucho mayor que la
mxima posible con E/S controlada por el procesador:
DMA: un ciclo del bus por palabra (pocos ciclos de reloj)
E/S controlada por procesador: ejecucin de varias
instrucciones para transferir cada palabra (muchos ciclos de
reloj).

Se utiliza con dispositivos rpidos:


Discos, tarjetas grficas, tarjetas de red, etc.

ECII
1.137

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Controlador de DMA
El DMA utiliza un controlador de DMA (DMAC).

Chip que genera las seales de control y direcciones, actuando


como maestro del bus.

Posicin
Posicin de
de
memoria
memoria aa usar
usar
como
como fuente
fuente oo
destino
destino del
del prximo
prximo
dato
dato aa transferir
transferir
Especifica
Especifica el
el n
n de
de palabras
palabras
que
que quedan
quedan por
por transferir
transferir

Si
Si existe,
existe, almacena
almacena
datos
datos en
en ruta
ruta entre
entre
memoria
memoria yy E/S
E/S

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Controlador de DMA

ECII
1.138

2004
2005

Existen DMAC que permiten varias operaciones de DMA


independientes.
La lgica de control y los registros asociados con cada una de esas
operaciones se denomina canal de DMA.
Cada
Cada canal
canal tiene
tiene sus
sus
propios
propios registros
registros
AR
ARii,, WC
WCii yy DR
DRii..

El
El registro
registro de
de
prioridades
prioridades especifica
especifica la
la
prioridad
prioridad de
de cada
cada canal
canal
para
para acceder
acceder al
al bus
bus

Es
Es habitual
habitual que
que existan
existan
registros
registros de
de rdenes
rdenes oo
control
control (CR
(CRii)) que
que
especifican
especifican el
el modo
modo de
de
control
control (bloques,
(bloques, robo
robo
de
de ciclo,
ciclo, etc.)
etc.) usado
usado por
por
cada
cada canal.
canal.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Seales de control

ECII
1.139

2004
2005

El DMAC y el procesador deben compartir el bus.


Necesidad de un mecanismo de control de acceso al bus.
Usualmente se usan dos lneas de control entre DMAC y
procesador:
Peticin / solicitud de DMA (DMA Request) o del bus (Bus Request):
HOLD o BSRQ#
Reconocimiento / cesin de DMA (DMA Acknowledge) o del bus
(Bus Acknowledge):
HLDA o BSAK#

Cuando el DMAC necesita obtener el control del bus, activa


HOLD.
El procesador responde aislndose del bus y activando
HLDA, para indicar que ha entregado el bus.
El DMAC realiza la transferencia.
El DMAC se desconecta del bus y desactiva HOLD.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Seales de control

RS:
RS: seleccin
seleccin del
del registro
registro aa leer
leer // escribir
escribir

ECII
1.140

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Secuencia de eventos

ECII
1.141

2004
2005

Una operacin de E/S por DMA se establece


ejecutando una corta rutina de inicializacin:
Varias instr. de salida para asignar valores iniciales a:
AR: Direccin de memoria de la regin de datos de E/S IOBUF
WC: Nmero N de palabras de datos a transferir

Una vez inicializado, el DMAC procede a transferir


datos entre IOBUF y el dispositivo de E/S:
Se realiza una transferencia cuando el dispositivo de E/S
solicite una operacin de DMA a travs de la lnea de
peticin del DMAC.
Despus de cada transferencia, se hace WC y AR++
La operacin termina cuando WC = 0 el DMAC indica la
conclusin de la operacin enviando al procesador una
peticin de interrupcin.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Secuencia de eventos

ECII
1.142

2004
2005

Secuencia de eventos detallada (para entrada):


1.
2.
3.
4.
5.

El procesador inicializa el DMAC programando AR y WC.


El dispositivo de E/S realiza una peticin de DMA al DMAC.
El DMAC le responde con una seal de aceptacin.
El DMAC activa la lnea de peticin de DMA al procesador.
Al final del ciclo del bus en curso, el procesador pone las lneas
del bus del sistema flotantes y activa la cesin de DMA.
6. El DMAC asume el control del bus.
7. El dispositivo de E/S transmite una nueva palabra de datos al
registro intermedio de datos del DMAC.
8. El DMAC ejecuta un ciclo de escritura en memoria para transferir
el contenido del registro intermedio a la posicin M[AR].
9. El DMAC decrementa WC e incrementa AR.
10.El DMAC libera el bus y desactiva la lnea de peticin de DMA.
11.El DMAC compara WC con 0:
Si WC > 0 se repite desde el paso 2.
Si WC = 0 el DMAC se detiene y enva una peticin de
interrupcin al procesador.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Mtodos de control de DMA

ECII
1.143

2004
2005

Formas de realizar el DMA:


Robo de ciclo (Cycle Stealing DMA)
Transferencia de bloques o parada de CPU (Block Transfer
DMA)
DMA intercalado o transparente (Interleaved DMA)
Memoria multipuerto

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Mtodos de control de DMA

ECII
1.144

2004
2005

Robo de ciclo (Cycle Stealing DMA)


La transferencia de un bloque se produce palabra a palabra.
El DMAC roba peridicamente uno o varios ciclos mquina al
procesador, durante los cuales utiliza el bus. El procesador utiliza el
resto de ciclos del bus.
Cuando el DMAC solicita el bus, debe esperar a que el procesador
complete el ciclo mquina en curso.
Un robo de ciclo puede aceptarse en mitad de una instruccin
(hace que la duracin de las instrucciones no sea fija).

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Mtodos de control de DMA

ECII
1.145

2004
2005

Transferencia de bloques o parada de CPU (Block Transfer


DMA)
Se transmite un bloque (secuencia de palabras de datos) en una
rfaga continua.
El DMAC toma el control del bus durante todo el perodo que dura la
transferencia de datos.
El procesador no tiene acceso al bus hasta que la transferencia
termina, lo que le obliga a esperar perodos de tiempo
relativamente grandes.

DMA intercalado o transparente (Interleaved DMA)


El DMAC toma el bus cuando el procesador no lo utiliza.
Por ej., mientras est decodificando un cdigo de operacin o
efectuando operaciones internas de transferencia de registros.
Para ello, el procesador debe emitir las seales de control
adecuadas.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Mtodos de control de DMA

ECII
1.146

2004
2005

Memoria multipuerto
Existen memorias multipuerto con varios mdulos y varios registros
de direccin y de memoria que pueden operar simultneamente
conectados a varios buses, siempre que no direccionen un mismo
bloque de memoria.
Se puede conectar a un puerto el procesador y a los dems puertos
varios controladores de perifricos:

Si hay conflictos de acceso (peticiones simultneas a un mismo


mdulo), se concede un acceso y se retardan los dems, segn
un sistema de prioridades.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Controlador de DMA programable 8237
(Programmable DMA Controller)

4 canales de DMA independientes:

ECII
1.147

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.148

2004
2005

Cada canal dispone de:


un registro de direcciones de 16 bits:
dir. a partir de la cual se comenzar a realizar la transferencia.
un contador de 16 bits:
nmero de bytes a transmitir (65536 como mximo).

Adems existen otros registros para establecer las


condiciones de trabajo de cada canal.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.149

2004
2005

Funcionamiento del 8237:


Ciclo inactivo:
Cuando ningn canal est realizando una transferencia.
El procesador puede escribir los registros de direcciones, contador
de bytes, modos de trabajo y tipos de transferencia.

Ciclo activo:

Un perifrico solicita una transferencia activando DREQi.


El 8237 activa HRQ (pide los buses al procesador).
El procesador pasa los buses a alta impedancia y activa HLDA.
El 8237 activa DACKi permitiendo la transferencia al perifrico.
El 8237 genera IOR#, IOW#, MEMR# y MEMW# segn la operacin.
El registro de direcciones se incrementa o decrementa para apuntar
a la siguiente posicin de memoria.
El contador de bytes se decrementa. Si pasa de 0000 a FFFF se
genera la seal EOP (End Of Process).
El 8237 retira la seal HRQ.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.150

2004
2005

Tipos de transferencia:
Lectura:
De memoria a perifrico.
Se activan MEMR# e IOW#.

Escritura:
De perifrico a memoria.
Se activan IOR# y MEMW#.

Memoria a memoria:
Se copian bytes desde un rea de memoria, indicada por el registro
de direcciones del canal 0, a otra rea de memoria apuntada por el
registro de direcciones del canal 1.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.151

2004
2005

Modos de transferencia:
Transferencia simple:
Se transfiere un byte y se devuelve el control a la CPU.
El contador se decrementa y si pasa de 0000 a FFFF se activa EOP.
La lnea DREQi debe mantenerse activa hasta que el 8237 responda
con DACKi.

Transferencia en bloques:
Se transfieren tantos bytes, de forma consecutiva, como indique el
contador.
Cuando el contador pasa de 0000 a FFFF se genera EOP.
La lnea DREQi debe mantenerse activa hasta que el 8237 respnda
con DACKi.

Transferencia por demanda:


No se tiene en cuenta el contador.
La transferencia se realiza de forma continua hasta que
desaparezca la activacin de DREQi, o hasta que se introduzca un
nivel bajo por EOP.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.152

2004
2005

Modo cascada:
El canal correspondiente no acta como un canal de transferencia
propiamente dicho, sino que da paso a un segundo 8237, que es el
que la realiza.
Cada canal puede activar otro 8237 (un 8237 puede activar a 4).
Los otros 8237 podran controlar a otros 8237 en cascada.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.153

2004
2005

Otras opciones:
Autoincremento / autodecremento:
La transferencia puede seguir un curso ascendente (desde la
direccin de memoria inicial a otras superiores) o descendente.

Autoinicio:
Cuando finaliza la transferencia de un bloque, se reponen los
valores originales de direccin y contador, y se comienza de nuevo
automticamente.

Prioridad fija:
El canal 0 es el de mayor privilegio, el 4 el menos prioritario.

Prioridad rotatoria:
Cuando un canal termina una transferencia, pasa a tener el mnimo
nivel de privilegio, y el siguiente canal, el mximo nivel.

Nivel de activacin (a 0 a 1):


Es posible fijar cules son los niveles activos (0 1) de las lneas
DREQ y DACK.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Registros del 8237:

ECII
1.154

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Direcciones de registros y rdenes:

ECII
1.155

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.156

2004
2005

Registros direccin (Address) y contador (Word Count):


Base: valores iniciales
Current: valores actuales

Registro de estado (Status Register):


Informacin sobre el estado de los canales.

Registro de peticiones (Request Register):


Permite comenzar operaciones de DMA por software.

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Registro de rdenes (Command Register):
Controla el funcionamiento del 8237.

ECII
1.157

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Registros de modo (Mode Registers):
Modo de transferencia de cada canal.

ECII
1.158

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Registro de mscara (Mask Register):
Permite deshabilitar (bit = 1) algunas lneas DREQi.

ECII
1.159

2004
2005

ECII
1.160

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


El 8237 en PC/XT y AT:

Libre
Libre
Libre
Libre

AT
AT

Disquetera
Disquetera

PC/XT
PC/XT

Libre
Libre
Refresco
Refresco DRAM
DRAM

Libre
Libre

Libre
Libre

Libre
Libre

Disquetera
Disquetera

Libre
Libre

HD
HD

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237

ECII
1.161

2004
2005

Generacin de direcciones de DMA en PC/XT y AT:

Registro
Registro de
de pgina
pgina

PC/XT
(16 blq. de 64 KB)

AT 8 bits
(256 blq. de 64 KB)

AT 16 bits
(128 blq. de 128 KB)
Transf. de palabras
en direcciones pares

Registro
Registro de
de direccin
direccin del
del 8237
8237

A19
A19A18
A18A17
A17A16
A16A15
A15A14
A14A13
A13A12
A12A11
A11A10
A10 A9
A9 A8
A8 A7
A7 A6
A6 A5
A5 A4
A4 A3
A3 A2
A2 A1
A1 A0
A0
D3 D2 D1 D0
A23
A23A22
A22A21
A21A20
A20A19
A19A18
A18A17
A17A16
A16A15
A15A14
A14A13
A13A12
A12A11
A11A10
A10 A9
A9 A8
A8 A7
A7 A6
A6 A5
A5 A4
A4 A3
A3 A2
A2 A1
A1 A0
A0
D7 D6 D5 D4 D3 D2 D1 D0
A23
A23A22
A22A21
A21A20
A20A19
A19A18
A18A17
A17A16
A16A15
A15A14
A14A13
A13A12
A12A11
A11A10
A10 A9
A9 A8
A8 A7
A7 A6
A6 A5
A5 A4
A4 A3
A3 A2
A2 A1
A1 00
D7 D6 D5 D4 D3 D2 D1

ECII
1.162

2004
2005

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de DMAC: 8237


Direcciones de puertos importantes:

Registro direccin
Registro contador
Registro rdenes
Registro mscara (set/reset 1 bit)
Registro modo
Borrar flip-flop byte-pointer

Canal * 2
Canal * 2 + 1
0x08
0x0A
0x0B
0x0C

Canal DMA

Puerto E/S del registro de pgina

0x87 (slo AT)


En el XT, para el refresco, se usa el
registro de pgina del canal 3
0x83
0x81
0x82
0x8B (slo AT)
0x89 (slo AT)
0x8A (slo AT)

1
2
3
5
6
7

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Entrada/Salida
Leccin 1.1
Leccin 1.2
Leccin 1.3
Leccin 1.4
Leccin 1.5

ECII
1.163

2004
2005

Introduccin
E/S programada
Interrupciones
Acceso directo a memoria (DMA)
Ejemplos de programas de E/S
1.5.1 Ej. de transfer. de E/S usando las tres tcnicas

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.164

2004
2005

Objetivo:
Enviar un bloque a la impresora (200 caracteres,
almacenado a partir de la direccin 3000h)
Configuracin para E/S programada y por interrupciones:

Status
Status Register:
Register:
SR
impresora
impresora lista
lista
SR77 == 11
para
para aceptar
aceptar caracteres
caracteres
SR
generacin
generacin de
de
SR00 == 11
interrupciones
interrupciones habilitada
habilitada
Cuando
Cuando la
la impresora
impresora
est
est lista
lista para
para recibir
recibir un
un
carcter,
carcter, pone
pone RDY
RDY == 11

Buffer
Buffer Register:
Register: contiene
contiene el
el
carcter
carcter que
que se
se enva
enva
Parallel Output Controller (interfaz)
Carcter
Carcter de
de 88 bits
bits enviado
enviado aa
la
la impresora
impresora
Transfer
Transfer Request:
Request: la
la interfaz
interfaz
genera
genera un
un pulso
pulso para
para que
que la
la
impresora
impresora lea
lea el
el dato
dato

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.165

2004
2005

E/S por programa:


; Inicializacin
LDX
#$3000
LDAB
JSR
...

#200
PRBLQ

E/S programada
;
;
;

RegIX<-3000h (bloque almacenado


a partir de la dir. 3000h)
RegB<-200 (200 caract.)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.166

2004
2005

E/S programada
; Imprimir bloque
PRBLQ LDAA 0,X
; RegA <- M[RegIX+0]
JSR
PRCHR
INX
; RegX++ (apuntar a sig. carct.)
DECB
; RegB- (actualizar contador)
BNE
PRBLQ
; Si RegB!=0 => enviar otro car.
RTS
; Imprimir el carcter almacenado en RegA
PRCHR TST
PSR
; N (bit de signo) <- SR7
BPL
PRCHR
; Si N = 0 => esperar
STAA PBR
; BR <- A, impresora pone SR7 a 0
RTS
PSR
PSR yy PBR
PBR son
son etiquetas
etiquetas para
para los
los puertos
puertos SR
SR yy BR,
BR,
mapeados
mapeados en
en memoria
memoria

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.167

2004
2005

E/S por interrupciones:


Cuando la interfaz est lista para recibir datos (impresora
lista), interrumpe al 6800 por su lnea IRQ#, forzndole a
transferir el control a una ISR
; Inicializacin
LDX
#$3000

BA
BC

STX
LDAA
STAA
LDAA
STAA

BA
#200
BC
#$01
PSR

RMB
RMB

2
1

E/S por interrupciones


;
;
;
;
;
;
;
;

RegIX<-3000h (bloque almacenado


a partir de la dir. 3000h)
BA (Byte Address) <- RegIX
RegA<-200 (bloque 200 caract.)
BC (Byte Count) <- RegA
RegA <- 1
SR0 <- 1 (interfaz generar
interrupciones)

; Reserve Memory Byte (2 bytes)


; Reserve Memory Byte (1 byte)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.168

2004
2005

Puede haber varios dispositivos conectados a IRQ#.


La ISR comienza chequeando los bits listo de cada dispositivo,
para ver cul ha interrumpido. Se supone que la impresora tiene la
mayor prioridad en este caso es chequeada en primer lugar.
; ISR
ORG
ISR
TST
BPL
BRA
POLLTERM
TST
...

ORG
FDB

E/S por interrupciones


$5000
PSR
POLLTERM
PRINT
TSR

$FFF8
ISR

; Sondear impresora
; Si SR7 = 1 => saltar a Terminal
; Si SR7 = 0 => saltar a PRINT
; Sondear otros dispositivos,
; comenzando por el terminal
Cuando
Cuando tiene
tiene lugar
lugar una
una interrupcin,
interrupcin, el
el 6800
6800
toma
toma la
la direccin
direccin de
de la
la ISR
ISR de
de M[FFF8h]
M[FFF8h]

; Form Double Byte


; (Vector de interrupcin)

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas
PRINT LDX
LDAA
STAA
INX
STX
DEC
BNE
CLR
RETURN
RTI
TERM ...

BA
0,X
PBR
BA
BC
RETURN
PSR

ECII
1.169

2004
2005

;
;
;
;

E/S por interrupciones


RegIX <- Byte Address
RegA <- M[RegIX+0] (sig. car.)
Enviar carcter
RegX++ (apuntar a sig. carct.)

;
;
;

RegB- (actualizar contador)


Si BC!=0 => retorno subrutina
SR0 <- 0 si trans. blq. compl.

; Return From Interrupt


; Rutinas de otros dispositivos

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

E/S por DMA:


Configuracin:

Peticin
Peticin de
de DMA:
DMA: cuando
cuando se
se activa
activa
TRQ#,
TRQ#, el
el DMAC
DMAC pide
pide el
el bus
bus (BR=1)
(BR=1)
yy el
el 6800
6800 se
se lo
lo concede
concede (BG=1).
(BG=1).
El
El DMAC
DMAC lee
lee el
el carcter
carcter de
de
memoria
memoria (1er
(1er ciclo
ciclo del
del bus)
bus) yy lo
lo
escribe
escribe en
en BR
BR (2
(2 ciclo
ciclo del
del bus)
bus)

Direccin
Direccin destino
destino
Direccin
Direccin fuente
fuente
Contador
Contador de
de bytes
bytes
Registro
Registro buffer
buffer (recibe
(recibe el
el
byte
byte ledo
ledo por
por el
el DMAC)
DMAC)

ECII
1.170

2004
2005

Registro
Registro de
de estado
estado

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.171

2004
2005

Escribir un 0 en SR7 inicia la transferencia de un bloque. Al


completarse, el DMAC pone a 1 SR7 (bit listo).
SR0 = 1 habilita las interrupciones.
Cuando SR7 = 1 y SR0 = 1, el DMAC genera una interrupcin para
indicar al 6800 el fin de la transferencia.
El tipo de transferencia se selecciona escribiendo en SR[2:1].
SR[2:1] = 10 transferencia de mem. a perifrico.
E/S por DMA
; Inicializacin del DMA
LDX
#$3000
; SA <STX
DSA
;
3000h (bloque en 3000h)
LDX
#200
; BC <STX
DBC
;
200 caracteres
LDX
#PBR
; DA <STX
DDA
;
direccin de BR
LDAA #$05
; 00000101b (Memoria->perifrico,
STAA DSR
;
IRQ permitida)
LDAA #$01
; PSR <- Peticin del POC
STAA PSR
;
al DMAC permitida

Antonio Caas, Dpto. ATC. UGR. 2003-2005

Ejemplo de transferencia de E/S usando las tres


tcnicas

ECII
1.172

2004
2005

Comparacin de tiempos (de procesador):


E/S por programa
Suponiendo una impresora de 200 caracteres/s, el tiempo de
procesador ser 1 s (1 000 000 s).

E/S por interrupciones


Suponiendo un perodo de reloj = 1 s (f = 1 MHz), una ejecucin
de la ISR requiere 59 s.
Adems el hardware consume 9 ciclos de reloj cada vez que se
atiende la interrupcin.
En total: 13 600 s de tiempo de procesador.

E/S por DMA


Se requieren dos ciclos del bus para transferir cada carcter.
Suponiendo un ciclo de reloj por ciclo del bus, el 6800 est inactivo
2 s por cada carcter.
Despreciando el tiempo para inicializar el DMA, tenemos 400 s.

Vous aimerez peut-être aussi