Sunteți pe pagina 1din 14

CONTROLADOR DE INTERRUPCIONES PROGRAMABLES

ARQUITECTURA DE COMPUTADORES
El CPU ejecuta las instrucciones secuencialmente a menos que se ejecute una
instruccin que altere esta secuencia y modifique al PC.

Cmo se indica al CPU que ha sucedido esto?

Interrumpiendo al CPU para que atienda estos eventos, que eventos?
INTERRUPCIONES
Fallas en el hardware
Finalizacin de un proceso (falta hojas en la impresora)
Fallas en un software
CLASIFICACIN DE LAS INTERRUPCIONES
INTERRUPCIONES SINCRONAS
Las interrupciones sncronas son originadas por la ejecucin de una instruccin de
programa por el CPU . Estas son interrupciones internas al programa por lo que la
nica fuente puede ser:

Interrupciones de programa
Interrupciones del supervisor de llamadas
INTERRUPCIONES ASINCRONAS
Las interrupciones asncronas son originadas por generadas por eventos externos al
programa que se ejecuta y su objetivo es notificar al sistema operativo de algun
cambio en la operatividad del sistema . Ejemplos:

Interrupciones por falla de la mquina
Interrupciones de entrada/salida
Interrupciones externas
TIPOS DE INTERRUPCIONES
Internas o
excepciones
Externas
o de hardware
Software
No Enmascarables
NMI
Enmascarables
INTR
Operacin de las instrucciones INT e IRET
Int
16H
00
2E
EB
04
00
15
09
0915:0002
0915:0003
0915:0004
F000:EB2E
F000:E82F
IRET
0000:0000
F0
0000:0058
0000:0059
0000:005A
0000:005B
FLAGS
PROGRAMA INVOCANTE
STACK
TABLA DE VECTOR
DE INTERRUPCIONES
RUTINA DE LA
ROM BIOS
1
2
3
4
IRET produce un retorno de la rutina de
interrupcin al programa invocante,
recuperando del STACK la direccin
CS:IP de la instruccn que qued
pendiente
INT 16h produce un FAR CALL a la
direccin contenida en el vector
de la interrupcin 16h, la direccin
de retorno se carga al STACK
PROCESO DE UNA INTERRUPCIN
Cuando una interrupcin ocurre, independientemente de la fuente, el 80x86
realiza lo siguiente:

1) El CPU carga (push) el registro de banderas al STACK

2) La CPU carga al STACK la direccin de retorno lejano ( segmento:offset ) primero el valor
del segmento.

3) La CPU determina la causa de la interrupcin ( esto es, lee el nmero o tipo de la
interrupcin)
4) La CPU transfiere el control a la rutina especificada por la tabla de vectores de
interrupcin.

Despus de completados estos pasos,la rutina de servicio de la interrupcin toma el
control. Cuando la interrupcin desea regresar el control , debe ejecutar una
instruccin IRET ( Interrupt Return). El retorno de una interrupcin recupera del STACK
la direccin de retorno lejano y las banderas.
La familia de microprocesadores 8086 pueden reconocer 256 diferentes
interrupciones, cada una con un cdigo nico de TIPO (nmero) con el que el
microprocesador lo identifica.

El procesador usa este cdigo de TIPO ( un nmero entre 00 y FF en hexadecimal )
para apuntar a una localidad dentro de la tabla de vectores de interrupcin.
INTERRUPCIONES INTERNAS
Se producen cuando el CPU detecta una condicin extraordinaria durante la
ejecucin de una instruccin del programa.

Ejemplos:

Desbordamiento de la pila
Direccionamiento invlido
Instruccin invlida

INT 0: error de divisin, generada automticamente cuando el cociente no cabe en el
registro o el divisor es cero. Slo puede ser generada mediante DIV o IDIV.

INT 1: paso a paso, se produce tras cada instruccin cuando el procesador est en modo
traza (utilizada en depuracin de programas).

INT 7: dispositivo no disponible (slo a partir del 286).



Son producidas por el propio programa usando la instruccin
INT para invocar ciertas subrutinas. La BIOS y el DOS utilizan
algunas interrupciones a las que se puede llamar con
determinados valores en los registros para que realicen ciertos
servicios.
Ejemplos:

Lectura o escritura en disco
Asignacin de memoria
Operaciones de entrada/salida
INTERRUPCIONES POR SOFTWARE
INTERRUPCIONES POR HARDWARE
Son generadas por dispositivos perifricos externos a travs de
una seal elctrica.

Se solicita la atencin de la CPU aplicndole la seal a sus
terminales INT y NMI
Las Enmascarables por INT : activa a nivel alto
Las No Enmascarables por NMI: activa en flanco de subida
INTR
NMI
INTA
CPU
SE HABILITAN O DESHABILITAN POR PROGRAMA:

Con la instruccin SETI se habilitan las interrupciones y pone la bandera IF a 1
Con la instruccin CLI se inhiben todas las posibles interrupciones de este tipo y
se pone la bandera IF a 0.

LA CPU RESPONDE AL SER ACEPTADA LA INTERRUPCIN, CON UNA SEAL EN SU
TERMINAL INTA ( INTERRUPT ACNOWLWDGE)

INTERRUPCIONES ENMASCARABLES
son solicitadas por perifricos externos, a
travs de un Controlador de interrupciones
programable ( Programmable Interrupts
Controller : PIC) que se conecta a la
terminal INT del mprocesador, La aceptacin
o no depende del status de la bandera de
interrupciones IF
Originalmente se us el controlador de interrupciones 8259. Este permita que se
pudieran generen hasta 8 seales de interrupcin ( numeradas de 0 a 7).
Estas lneas de interrupcin son llamadas lneas de Interrupt
Request(requerimiento de interrupcin) o IRQs
Interrupciones reservadas:

IRQ0 Temporizador (Timer)
IRQ1 Teclado
IRQ8 Reloj de tiempo real
IRQ13 Errores del coprocesador
IRQ14 Controlador de disco duro
IRQ3 Puerto serie COM1
IRQ4 Puerto serie COM2
IRQ6 Controlador de diskette
IRQ7 Puerto paralelo
Proceso de una interrupcin en el PIC

1. Un perifrico solicita interrupcin
2. El PIC solicita interrupcin a la CPU (INT)
3. La CPU reconoce la peticin con un primer pulso de INTA
4. Se activa el bit correspondiente de ISR y se desactiva en IRR
5. La CPU enva el segundo pulso de INTA
6. El PIC coloca un puntero de 8 bits en el bus de datos
El valor del puntero es distinto para cada entrada IRQ
Es programable
7. A partir de entonces comienza a ejecutarse la rutina de atencin

8-Fin de interrupcin (EOI). Los bits activos de ISR bloquean futuras peticiones por
esa lnea

S-ar putea să vă placă și