Niveles de interrupción (IRQ´s)
Una interrupción es una señal recibida por el microprocesador de una Computadora Personal, indicando que debe «interrumpir» el curso de ejecución actual y pasar a ejecutar una llamada a una subrutina para atender esta solicitud de interrupción. La petición de una interrupción es asíncrona, esto es, puede ocurrir en cualquier momento durante la ejecución del programa principal. Para atender el uso de las interrupciones se propusieron dos técnicas: una utiliza al microprocesador y la otra utiliza una unidad funcional conocida como controlador de interrupciones.
1. Atención de una interrupción utilizando un microprocesador
Esta primera técnica emplea al propio microprocesador, el cual se encarga de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. El principal inconveniente es que es muy ineficiente, ya que el procesador constantemente consume tiempo en realizar todas las instrucciones de sondeo.
2. Atención de una interrupción utilizando un controlador de interrupciones
Esta segunda técnica, utiliza un nuevo mecanismo de interrupciones, el cual le permite al microprocesador olvidarse de esta problemática y delegar a un dispositivo la responsabilidad de comunicarse cuando lo necesite. El microprocesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le «interrumpan») cuando tengan un evento, una transferencia de información, una condición de error, etc. Una computadora personal utiliza este tipo de técnica.
El mecanismo de las interrupciones consiste en cada dispositivo que desea comunicarse con el microprocesador por interrupciones; debe tener asignada una línea única capaz de avisar a éste de que le requiere para una operación. Esta línea es la llamada petición de interrupción IRQ (del inglés «Interrupt ReQuest»). Las IRQ son líneas que llegan al controlador de interrupciones, el cual es un componente de hardware dedicado a la gestión de las interrupciones y que puede o no estar integrado en el microprocesador. El controlador de interrupciones debe ser capaz de habilitar líneas de interrupción (operación llamada «enmascarar») y establecer prioridades entre las distintas interrupciones habilitadas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al microprocesador.
Un microprocesador (con el controlador de interrupciones integrado) suele tener una única línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el microprocesador consulta los registros del controlador de interrupciones para averiguar qué IRQ es la que ha de atender. A partir del número de IRQ busca en el vector de interrupciones qué rutina debe llamar para atender una petición del dispositivo asociado a dicha IRQ.
Las rutinas de interrupción generalmente toman un pequeño tiempo de ejecución y la mayoría no pueden ser interrumpidas cuando se están atendiendo, porque al entrar en ellas se almacena el estado de los registros en una pila y si se interrumpen muchas veces, la pila se puede desbordar.
Fuente: Apuntes de Arquitectura de computadoras de la FCA de la UNAM