¿Qué son IRQ’s?

IRQ – CANALES DE SOLICITUD DE INTERRUPCIÓN

Los canales IRQ son los que más causan problemas cuando se planea agregar un nuevo dispositivo a la computadora.
Su configuración es conflictiva ya que prácticamente todo dispositivo o tarjeta de expansión que se agregue a una computadora requiere de un IRQ, lo que no sucede con los DMA, que son empleados por muy pocas tarjetas.
Por cierto que no todos los dispositivos tienen los mismos tipos de requerimientos, varían de uno a otro, pero los IRQ son siempre solicitados.

¿Pero, qué es un IRQ?

Un IRQ es una señal que envía un dispositivo cualquiera, por medio de los circuitos impresos de la tarjeta madre hacia el CPU para solicitar atención.

Estos canales IRQ son en la práctica, circuitos o cableado impreso sobre la tarjeta madre que conecta físicamente una determinada ranura del bus de expansión, a través de la tarjeta madre, con el CPU, de forma tal que el dispositivo conectado sobre la ranura puede enviar una señal eléctrica por dicho canal hacia el CPU, cuando requiera de atención.
Cuando esto sucede, el CPU interrumpe lo que se hallaba haciendo, y pasa a ejecutar un programa especial diseñado para atender el dispositivo.
Este programa se conoce normalmente con el nombre de driver, que no es más que un software diseñado específicamente para administrar un dispositivo y todos los eventos relacionados al mismo que por lo general viene con el respectivo disquete de instalación. Para saber qué rutina debe ejecutar el CPU cuando recibe una interrupción, maneja una tabla donde contiene literalmente para cada interrupción, el nombre del programa a ejecutar. Una vez finalizada la atención de la interrupción, el CPU retorna a continuar aquello que se encontraba haciendo, eso, hasta la próxima interrupción.

Dentro de las interrupciones, existen una jerarquía, representada por un número asignado a cada dispositivo, mientras más bajo sea el número, mayor la prioridad que tiene el dispositivo para ser atendido, de esta forma, cuando se presentan varias interrupciones simultáneamente, el CPU decide según la prioridad de cada una, a cual atender primero, pero si en el transcurso de esta atención se presenta una de mayor prioridad, el CPU detiene ejecución y pasa a atender a la de mayor prioridad. En resumen, las interrupciones también se interrumpen, pero esto no tiene mayor importancia dentro del contexto de lo que buscamos comprender.
En algunos casos particulares, las interrupciones se suceden tan rápidamente, que el CPU se satura, dando origen a un error muy conocido: STACK OVERFLOW.

El CPU emplea una estructura tipo pila (stack) para almacenar la información del proceso que atiende cuando una interrupción se presenta, así, si muchas interrupciones se presentan, esta pila se desborda, o dicho de otra forma, se da un Desborde de Pila. Pero es un problema sencillo de resolver, basta con incrementar el tamaño de la pila definido dentro de archivo CONFIG.SYS, en el punto STACKS.

Vale la pena mencionar que dentro de la arquitectura MCA o Micro Canal de IBM, esta concepción de IRQ no es la misma. En las computadoras de microcanal, que hoy en día son prácticamente historia, todas los dispositivos pueden ser asignados al mismo IRQ sin ningún problema; por otra parte, los sistemas EISA nativos, que también son extremadamente raros, pueden compartir IRQ solamente para tarjetas de expansión nativas EISA.

HARDWARE DE LOS IRQ

Originalmente, las computadoras basadas en el procesador 8086 y 8088 (denominadas comúnmente tipo XT), poseían tan solo 8 posibles IRQ para los diferentes dispositivos que se deseen agregar a esas computadoras.

El IRQ número 0 estaba siempre asignado para el reloj del sistema, el IRQ 1 para el controlador de teclado, el 2 libre, el 3 para el puerto serial COM2 donde habitualmente se conecta el modem, el 4 para el puerto serial COM1 donde habitualmente se conecta el ratón, el 5 para la atención del disco duro, el 6 para la atención de las disqueteras, y el 7 para el puerto paralelo, donde va generalmente una impresora o un scanner.

En definitiva, tan solo se podría agregar una tarjeta, con el IRQ 2 disponible (available). Afortunadamente esto ha cambiado para las computadoras actuales, que poseen 16 IRQs disponibles (de 0 a 15).
Toda computadora basada en un procesador 80286 o superior tiene esta cantidad de interrupciones disponibles. Pero la pregunta interesante es ¿cómo se ha logrado esto?, bueno, acá la respuesta:
Originalmente, en las computadoras XT, cualquier interrupción es atendida por un chip cuyo número es el 8259, también denominado Controlador De Interrupciones.

Este chip tan solo tiene la capacidad de atender 8 interrupciones, es decir tienen físicamente 8 entradas, así que para los equipos AT (286 o superior) se han empleado simplemente dos de estos controladores, redireccionando todas las interrupciones generadas por el segundo chip hacia el primero a través del IRQ 2. Ya que el IRQ 2 del primer chip ha de estar ocupado permanentemente, tan solo quedan 15 posibles IRQs.

Recordemos que las interrupciones tienen una prioridad dada por su número, y como todas las interrupciones del segundo controlador entran por la interrupción 2 del primero, las interrupciones número 8 a la número 15 tienen todas prioridad 2.

Un aspecto importante a comprender es qué sucede con los dispositivos que requieren de forma obligatoria el IRQ 2, cosa bastante normal. En realidad en los equipos AT, cualquier tarjeta conectada al IRQ 2 funciona perfectamente, con la salvedad de que en realidad está funcionando en el IRQ 9, y no en el 2. Este hecho es completamente transparente y no requiere de mayor cuidado, salvo entender que si algún dispositivo está empleando el IRQ 2, ningún otro podrá ser asignado al IRQ 9, por la razón antes mencionada.

Existen 16 IRQs (15 utilizables) en una computadora. Aquí se presenta una asignación típica de estas IRQs:

IRQ 0 Sistema – Temporizador del Sistema
IRQ 1 Sistema – Teclado
IRQ 2 Sistema – PIC en cascada (controlador de interrupción programable), controla IRQ 8-15
IRQ 3 Sistema – Puerto Serial (COM 2 y COM4)
IRQ 4 Sistema – Puerto Serial (COM 1 y COM3)
IRQ 5 Libre – Adaptador de uso general
IRQ 6 Sistema – Controlador de Diskette
IRQ 7 Sistema – Impresora 1
IRQ 8 Sistema – Reloj en tiempo real CMOS Real
IRQ 9 Libre – Adaptador de uso general
IRQ 10 Libre – Adaptador de uso general
IRQ 11 Libre – Adaptador de uso general
IRQ 12 Sistema – Puerto para el Mouse
IRQ 13 Sistema – Coprocesador Matemático (aun cuando esté incorporado al procesador, sigue usando una IRQ)
IRQ 14 Sistema – Controlador de disco duro
IRQ 15 Libre – Adaptador de uso general

Como puede ver, existen (5) IRQs que no son asignadas por el sistema. De estas, una es asignada generalmente a la tarjeta de gráficos, una a los puertos USB y otra al módem. Esto deja dos (2) IRQs libres para todo lo demás. Teniendo cuidado y con las tarjetas adecuadas, esto debería ser suficiente.