Ac - S11
Ac - S11
Ac - S11
ARQUITECTURA DE COMPUTADORAS
Objetivos
Al finalizar esta semana el alumno ser capaz de: Definir qu es una interrupcin y para qu sirve el PIC 8259. Configurar y programar el PIC 8259 interno de la computadora personal. Identificar su estructura interna. Identificar sus registros y cmo se programa.
Introduccin
Las interrupciones constituyen quiz el mecanismo ms importante para la conexin del computador con el mundo exterior, sincronizando la ejecucin de programas con acontecimientos externos.
Las
interrupciones surgen de la necesidad que tienen los dispositivos perifricos de enviar informacin al procesador principal de un sistema de computacin.
Introduccin
La primera tcnica empleada para la atencin de perifricos consisti que el propio procesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tena pendiente alguna comunicacin para l.
Este
mtodo presentaba el inconveniente de ser muy ineficiente: el procesador constantemente consume tiempo en realizar todas las instrucciones de sondeo.
Introduccin
El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de este problema y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitaba.
El procesador, en este caso, no sondea a ningn dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de informacin, una condicin de error, etc.).
Introduccin
la eficiencia de uso del CPU. Brindar atencin inmediata a dispositivos en cuanto lo soliciten.
Interrupcin
Todas estas ideas estn referidas a un tipo de interrupcin: la interrupcin hardware (hardware interrupt). En general una interrupcin es
una
seal asincrnica generada desde el hardware, que indica la necesidad de atencin (interrupcin hardware); o, un evento sincrnico generado por software que indica la necesidad de un cambio en la ejecucin (interrupcin software).
Interrupcin
Las interrupciones software se implementan y utilizan de manera similar que las llamadas a procedimientos (subrutinas) pero se diferencian de stos por el tipo de tareas que realizan, las cuales tpicamente estn ligadas al hardware de la computadora:
solicitar el cdigo de la ltima tecla presionada, envo de datos a pantalla, transmisin y recepcin de datos vas algn canal de comunicacin, etc..
Interrupcin
cuando la atencin de estas interrupciones pueden ser permitidas o inhibidas por programa. No enmascarables, cuando la atencin de este tipo de interrupciones no pueden ser inhibidas por programa (siempre se atienden).
Interrupcin
Externas, cuando son generadas externamente al CPU, pudiendo ser generadas por dispositivos de la mainboard o por algn perifrico fuera de la mainborad conectado a sta mediante una unidad de E/S. Por ejemplo:
o o o o
Interrupcin
Las interrupciones en la totalidad de la familia de microprocesadores INTEL incluyen dos pines para peticin de interrupcin (INTR y NMI) y un pin (#INTA) para reconocimiento de la peticin de interrupcin recibida por INTR. Estos microprocesadores tambin disponen de interrupciones de software INT, INTO, INT 3, y BOUND. Dos banderas (flags), IF (Interrupt Flag) y TF (Trap Flag), son tambin usadas con la estructura de3 interrupcin y una instruccin especial para retorno de la interrupcin, IRET (IRETD en el 80386, 80486, o Pentium-Pentum 4).
PIC 8259
El controlador de interrupciones es un mdulo que tiene por funcin gestionar las interrupciones de entrada/salida para el procesador. Esto ahorra disear lgica y aadir patitas al procesador pues este maneja una nica seal de control para las interrupciones del tipo mascarables. Tambin proporciona flexibilidad porque permite idealmente, gestionar un nmero ilimitado seales de interrupcin (favoreciendo la expansin del sistema de entrada salida).
PIC 8259
El controlador:
recibe
el conjunto de seales de interrupcin procedentes de los dispositivos, toma la decisin de cual es la ms prioritaria, y enva una nica seal al procesador.
La respuesta del procesador es transmitida al dispositivo y el propio controlador se encarga de depositar en el bus el vector de la interrupcin.
PIC 8259
Este chip admite hasta 8 seales de interrupcin. Tambin admite ser configurado en cascada (sus entradas proceden a su vez de otro controlador) de modo que un conjunto de controladores 8259 pueden gestionar hasta un mximo de 8*8 seales de interrupcin procedentes de otros tantos dispositivos de entrada salida.
#WR
#RD
Interrupt Request Register/Interrupt Service Register (IRR/ISR) Cuando se activan una o varias de las entradas IR, estas quedan reflejadas en los bits correspondientes del IRR. Entonces el controlador usa este registro para decidir a qu interrupcin atender. De aquellos bits activados en el IRR el ms prioritario queda reflejado en el bit correspondiente del ISR. Mientras la interrupcin est siendo atendida este bit se mantiene activo. Este bit se desactiva, bien automticamente o bien despus de recibir el controlador una orden de EOI (fin de interrupcin, emitido antes del IRET). Cuando se configura para que lo haga automticamente, el controlador desactiva la interrupcin en el flanco de bajada de la segunda seal INTA procedente del procesador.
Interrupt Mask Register (IMR) El programador puede enmascarar algunas interrupciones de manera que si se activase la IR correspondiente, el controlador la ignorar (nunca alcanzar el ISR).
Modo completamente anidado Es el modo de prioridad bsica consistente en asignar mayor prioridad a la interrupcin 0 y menor prioridad a la interrupcin 7. En este modo, cuando un bit est activo en el ISR indicando que tal interrupcin est siendo atendida (desactivado, por lo tanto el EOI automtico), ninguna interrupcin de prioridad igual o inferior va a ser considerada por el controlador. Sin embargo si entrase una interrupcin de prioridad superior, sta s pasar al registro ISR y se emitir el aviso correspondiente al procesador. (En el procesador se interrumpir la ejecucin de la rutina de atencin a la interrupcin anterior para cargar la nueva rutina, ms prioritaria. Al finalizar sta se reanudar la primera).
Modo de rotacin automtica En este modo, cada vez que una interrupcin es atendida, como la de mxima prioridad, queda degradada al rango de menor prioridad para la siguiente ocasin. Ello permite que ninguna interrupcin pueda acaparar la atencin del procesador. Rotacin especfica Es un tercer modo en el cual el programador puede indicarle al controlador, por medio de un comando, cual es el orden de prioridad que desea darle a las interrupciones, concretamente le indica cual es la interrupcin de mayor prioridad y el resto se ordenarn entorno a ella. (Por ejemplo, si decide que la IR5 va a ser la de mayor prioridad, la IR6 ser la siguiente, despus IR7 y a continuacin IR0, etc.)
4 palabras de control diferentes y en caso de enviarlas todas hay que hacerlo siempre en secuencia.
ICW1 Es la primera escritura que se hace sobre el 8259 y marca su reinicio. Se escribe sobre el A0=0. Siempre que se escriba en este puerto un byte con el bit 4 a 1, se interpretar como un comando de inicializacin. Otra informacin de configuracin que aporta esta palabra de inicializacin es:
a) b) c) d)
las interrupciones se activarn por flanco o por nivel el controlador funcionar slo o en modo cascada el controlador trabaja con el 8086 o con el 8085 se enviar o no la palabra de inicializacin ICW4
ICW2 Se enva por el puerto A0=1, y ha de seguir inmediatamente al envo de ICW1. Contiene el ndice en el vector de interrupciones correspondiente a la interrupcin 0. El resto de ndices lo calcular el controlador incrementando correspondientemente este valor para cada una de las dems interrupciones.
o o
ICW3 Esta palabra se enva nicamente si la configuracin es en cascada (indicado en la ICW1). Se enva por el puerto A0=1 y ha de seguir inmediatamente a ICW2. Al maestro se le enviar una ICW3 indicndole en cuales de sus entradas IR hay colgado un controlador. A cada uno de los controladores esclavos se le enva una ICW3 indicndoles su nmero de identificacin, el valor que aparecer en las CAS cuando el dispositivo es seleccionado.
ICW4 Esta es una palabra opcional que se enva tambin por A0=1, siguiendo a ICW3. En ICW1 se ha indicado en su momento si se enviar o no esta ltima palabra de inicializacin. La opcionalidad de esta palabra se debe sencillamente a que si no se usa, las caractersticas que configura estn sencillamente anuladas en su conjunto.
Activar un modo especial de arbitraje anidado (Special fully nested mode), que contemple la existencia de controladores esclavos. Este modo especial tiene la particularidad, frente al modo completamente anidado, de que cuando en una IR est conectado un esclavo, esta entrada no queda inhabilitada aunque haya pasado a ser atendida (activa en el ISR), de manera que el esclavo puede volver a enviar por la misma lnea una nueva interrupcin (en su caso procedente de otra IR). Programar el modo buffered. Lo que redundar en que la lnea SP#/EN# ser utilizada en su funcin EN#. Esto lleva a la siguiente pregunta: Cmo sabe ahora un controlador si l mismo es un maestro o un esclavo.?
4.
Indicar al controlador, en el modo cascada, si se trata de un maestro o un esclavo. Programar el AEOI. Los bits en el ISR se limpiarn automticamente cuando el controlador reciba el segundo pulso de la seal INTA. Por ltimo se indica si el controlador va a trabajar con el 8085, de 8 bits de palabra y con un protocolo de reconocimiento de interrupciones diferente al del 8086 (tres pulsos de INTA, durante el primero hay que facilitarle al procesador el cdigo de la instruccin Call y durante los otros dos pulsos le enva la direccin de la rutina de atencin) o con el propio 8086.
partir de ahora, y hasta una nueva inicializacin el procesador puede intervenir en el funcionamiento del controlador a travs del intercambio de Comandos de operacin (OCW).
pueden enviar en cualquier orden y en cualquier momento y permitirn al procesador controlar actividades del controlador como:
o o
OCW1 Se enva al puerto A0=1 y el contenido del buffer se cargar directamente en el registro IMR. El valor de cada bit indicar:
(1): la correspondiente IR del controlador quedar inhibida para nuevas peticiones de interrupcin; (0): la correspondiente IR del controlador queda habilitada para serle atendidas las nuevas peticiones de interrupcin.
OCW2 Se enva al puerto A0=0. Para evitar que sea interpretada como una ICW1, el bit 4 estar siempre a cero.
OCW2 Las acciones que se pueden realizar con este comando son:
1.
2.
Especificar el tipo de rotacin que se desea dar al registro IRR para resolver las prioridades una vez se ha atendido a la ltima interrupcin. Enviar un EOI genrico ( a la ltima interrupcin atendida - de los bits activos en el ISR el ms prioritario - ) o especfica (en el propio comando se especifica qu interrupcin se desea dar por atendida).
Durante este modo no funcionan las prioridades y toda interrupcin que no tenga una marca en el IMR est habilitada aunque en determinado instante haya activo un bit del ISR (est siendo atendida ya una interrupcin de determinada prioridad. Recurdese que en el modo normal ocurrira que todas las interrupciones de niveles inferiores a la que est actualmente siendo atendida quedaran automticamente inhibidas).
la lectura de los registros ISR e IRR para que el procesador pueda consultar en cualquier momento las interrupciones pendientes o las que estn en servicio; configurar el controlador para que funcione en modo de consulta.
En el modo de consulta el controlador se comporta exactamente como se ha explicado, pero es el procesador el que no lo hace.
o
En lugar de generar un ciclo de reconocimiento de interrupciones al activarse su entrada INT, el procesador genera un ciclo de lectura dirigido al controlador, el cual le responde con un registro que le indica cual de las entradas IRQ activadas en ese momento es la ms prioritaria. El procesador utilizar esta informacin para invocar a la rutina de interrupcin correspondiente.
En el modo de consulta el controlador se comporta exactamente como se ha explicado, pero es el procesador el que no lo hace.
o
Al generarse un ciclo de lectura simple nunca se activa la seal INTA y por lo tanto el controlador no acta de la forma habitual. Este modo est previsto para que el controlador pueda trabajar con otros procesadores no x86 ya que estos generan el ciclo de reconocimiento de interrupcin de forma automtica al recibir la INT. No obstante, naturalmente, pueden aprovechar este recurso para obtener informacin del controlador.
Igualmente el procesador puede consultar en cualquier momento el estado del registro IMR haciendo una lectura a la misma direccin a la que envi el OCW1.
Interrupcin en PC
El 80x86 tiene tan slo un par de pines INTR y INTA para interrupcin del tipo mascarable que permitira conectar un nico dispositivo de E/S. El 8259 sirve entonces para expandir el nmero de interrupciones a travs de esos dos pines.
Interrupcin en PC
Dos controladores 8259 conectados en cascada en configuracin maestroesclavo proporcionan hasta 16 lneas IR, numeradas desde el 0 hasta el 15. En las placas madres ms recientes estos circuitos estn integrado junto con el resto del chipset y permite hasta 24 interrupciones.
Interrupciones en PC
Es importante notar la conexin del esclavo a travs de IRQ2 en el maestro redefiniendo las prioridades de las peticiones de interrupcin. Aunque la ms alta prioridad dentro de cada 8259 es la IRQ0 para el maestro e IRQ8 para el esclavo, la conexin a travs de IRQ2 causa que IRQ8IRQ15 sean las siguientes peticiones de prioridad ms alta despus de IRQ1. As, el orden de prioridad por omisin para las peticiones de interrupcin es IRQ0, IRQ1, IRQ8-IRQ15, IRQ3IRQ7.
2.
Tras la activacin de una lnea IR, el controlador activa la salida INTR sealndole a la CPU la existencia de una interrupcin activada. Al recibir la seal, el procesador da un pulso en su salida INTA indicando que comienza un ciclo de reconocimiento de interrupcin. (En el modo mximo la respuesta ser el cdigo de reconocimiento de interrupcin en las seales S0-2 que ser utilizado por el controlador de bus para generar la seal INTA).
4.
Al recibir el controlador el pulso por su entrada INTA comienza a arbitrar las interrupciones recibidas y selecciona la ms prioritaria. Se emite un segundo pulso por la lnea INTA del procesador (o controlador de bus) que utiliza el controlador para depositar en el bus el vector correspondiente a la interrupcin de mayor prioridad.
El procesador obtiene la direccin de la rutina de interrupcin a partir de este dato y salta a ella. Almacena el registro de flags y la direccin de retorno, deshabilita las interrupciones y comienza a ejecutar la rutina.
Interrupciones en PC
El 8259 es complejo de manejar, afortunadamente para nosotros, mucha de su complejidad es manejada por el BIOS, el cual pone la configuracin apropiada en el 8259 en el encendido de la PC. El 8259 (el primero de los dos en cascada, el maestro) se configura para sealar vectores de interrupcin de 08h a 0Fh correspondiendo con las fuentes IRQ0 a IRQ7 y el segundo (el esclavo), de 70h a 77h correspondiendo con las fuentes de IRQ8 a IRQ9.
Interrupciones en PC
Entrada al 8259 IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 Vector 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 70H 71H 72H 73H 74H 75H 76H 77H Teclado 8259 esclavo COM2/COM4 COM1/COM3 Reservada/ Tarjeta de sonido Disco flexible LPT1 Reloj de tiempo real Reservada Reservada Reservada Ratn PS/2 Coprocesador matemtico Disco duro Reservada Dispositivo Timer del sistema
Interrupciones en PC
Bsicamente cualquier procesador 8086 tiene un conjunto de 256 vectores de interrupcin numerados del 0 al 255. Cada uno de estos vectores contiene un cdigo de 4 bytes el cual es una direccin de la Rutina de Servicio a Interrupcin (RSI).
Fin
Ing. Luis Raymi Romn