¿Qué son los IRQ’s, los
DMA’s y las direcciones I/O?
Las IRQ’s (Interruption
Request) son solicitudes de interrupción. Desde que surgieron los primeros
microprocesadores, los diseñadores contemplaron la necesidad de incorporar una
o varias líneas que sirvieran como una especie de aviso al CPU para indicarle
la llegada de instrucciones adicionales. Esta función era necesaria para evitar
que, en un momento dado, el circuito ignorara una orden externa por estar
ocupado realizando algún cálculo. Al mismo tiempo, serviría como una protección
contra loops (ciclos) infinitos.
Suponga que algún
programador inexperto hace un programa que obliga al microprocesador a realizar
sin parar una misma operación; si no hubiera alguna forma de interrumpir ese
proceso cíclico, la única manera de sacar al CPU de dicho lazo (loop) sería
retirando la alimentación o aplicando un Reset físico, lo cual haría que
se perdieran todos los datos que hasta el momento se hubieran obtenido en
operaciones previas.
Y como la función de las
líneas de aviso es "interrumpir" la instrucción (o serie de
instrucciones) que el microprocesador esté ejecutando en ese momento para
atender las órdenes que llegan de algún elemento periférico, a este tipo de
señales se les llama "líneas de interrupción". Todo sistema basado en
microprocesador hace uso intensivo de esta característica para garantizar el
funcionamiento adecuado del sistema.
En la PC-XT original, los
ingenieros encargados del diseño llegaron a la conclusión de que, debido a la
escasa variedad de dispositivos externos que se podían añadir a esta
plataforma, bastaba con dotarla de ocho líneas de interrupción para que
prácticamente cualquier periférico externo pudiera solicitar la atención del
microprocesador. Por ello conectaron dentro del chipset un circuito integrado 8259.
Este integrado es el encargado de gestionar con el CPU el grado de atención que
dará a cada dispositivo externo.
También desde un principio,
IBM asignó a diversos elementos estándares dentro de la plataforma PC ciertas
líneas de interrupción. Así, el circuito Timer, que controla la
sincronización de todas las operaciones en la máquina, ocupa la más alta
prioridad en esta lista de interrupciones, con IRQ0; el teclado,
el principal método de introducción de datos en la computadora, tiene asignada
la interrupción 1 (IRQ1); la interrupción 2 la dejó disponible para usos
externos. Las interrupciones 3 y 4 (IRQ3, IRQ4) fueron asignadas
a los puertos seriales, IRQ5 al puerto paralelo 2 (LPT2), IRQ6
a la controladora de discos flexibles y finalmente IRQ7 al puerto
paralelo 1 (LPT1).
Ante este panorama, los
diseñadores de elementos externos tenían como opciones únicamente a IRQ2 e IRQ5
(casi ninguna PC posee un puerto paralelo secundario); y en caso de extrema
necesidad, se podía desactivar alguno de los puertos seriales, lo que dejaba
libre una IRQ adicional. Pero al añadir un disco duro, un coprocesador
matemático y algún otro dispositivo, nuevamente el sistema quedaba con las ocho
líneas de interrupción ocupadas, lo que impedía colocar cualquier otro elemento
adicional.
Ante esta situación, en el
estándar AT de IBM se colocó un segundo circuito 8259, lo que
teóricamente daría un total de 16 IRQ’s disponibles en máquinas 286 ó
superiores; sin embargo, para no perder compatibilidad con el software diseñado
para XT (el cual sólo puede acceder directamente a 8 IRQ’s), se tuvo que
recurrir a un truco que consistió en "redireccionar" las ocho
interrupciones superiores utilizando una de las inferiores.
Para ello se utilizó a IRQ2
(que era la única que estaba realmente libre), lo que finalmente da un total de
quince líneas de interrupción. Obviamente, gracias a la adición del segundo chip
controlador de interrupciones, fue posible asignar una interrupción fija a
elementos que originalmente no la tenían. Esta es la forma como quedaron
distribuidas en máquinas AT y superiores:
IRQ0 Circuito Timer
IRQ1 Teclado
IRQ2 Cascada con el segundo 8259
IRQ4 Puertos seriales 1 y 3
IRQ5 Puerto paralelo 2 (disponible en la mayoría de los
sistemas)
IRQ6 Controladora de unidades de disquetes
IRQ7 Puerto paralelo 1 (disponible en ciertas circunstancias)
IRQ8 Reloj de tiempo real
IRQ9 Cascada con primer 8259 (disponible en ciertas
circunstancias)
IRQ10 (Disponible)
IRQ11 (Disponible)
IRQ12 Ratón PS/2 (Disponible en máquina que no lo usen)
IRQ13 Coprocesador matemático (disponible en máquinas que no posean
FPU)
IRQ14 Controladora de disco duro IDE primario
IRQ15 Controladora de disco duro IDE secundario (disponible en
algunos sistemas)
Es fácil notar que esta gama de posibilidades resulta más funcional para añadir nuevo hardware periférico que por sus condiciones de operación forzosamente necesita la asignación de una línea de interrupción particular (como tarjetas de sonido o lectores de CD-ROM propietarios); sin embargo, aún hay que tener mucho cuidado al instalar estos elementos, ya que hay cierto software tradicional que requiere de un cierto acomodo peculiar de estos dispositivos.
Los DMA’s o accesos directos
a memoria (Direct Memory Access) son unos circuitos de comunicación que
permiten que determinados elementos periféricos se comuniquen de manera directa
con la memoria RAM sin tener que pasar por el microprocesador. Esta operación
permite un acceso más rápido a la información que necesita fluir con una
velocidad constante. Es el caso de los datos que se envían a la tarjeta de
sonido.
Al igual que ocurrió con los
IRQ’s, en la plataforma PC-XT los diseñadores de IBM colocaron un chip 8237,
capaz de manejar hasta cuatro accesos a memoria, los cuales se repartió como
sigue: DMA0 para el refresco de la memoria; DMA1
disponible; DMA2 para comunicación con la unidad de disquete y DMA3
para comunicación con el disco duro.
Resulta obvio que sólo queda
un DMA para uso de los diseñadores de hardware periférico, situación que limita
considerablemente la adición de nuevos elementos. Por tal razón, como sucedió
con las IRQ’s, en la plataforma AT los diseñadores de IBM colocaron un segundo 8237
en cascada con el primero, de modo que ahora se contaba con 8 DMA’s (al menos
en forma teórica). Adicionalmente, algunas tareas que en XT’s requerían de un
DMA en la AT fueron rediseñadas para no necesitarlo; así, en máquinas 286 y
superiores, la distribución de los DMA’s quedó como sigue:
DMA0 Disponible
DMA1 Disponible
DMA3 Disponible
DMA4 Cascada con el primer 8237
DMA5 Disponible
DMA6 Disponible
DMA7 Disponible
Notará que ha desaparecido
la necesidad del DMA para el refresco de memoria (el cual se realiza ahora a
nivel del chipset) y que el disco duro tampoco tiene asignado un DMA. Esto se
debe a que la arquitectura del bus ISA-16 permite un método aún más rápido de
intercambio de información entre periféricos y la memoria, denominado como PIO
(Programmed I,/0), el cual es aprovechado por la interface IDE para el manejo
de los discos duros; sin embargo, otros tipos de unidades (como los discos SCSI
por ejemplo), sí necesitan un DMA, el cual se asigna al momento de configurar
la controladora respectiva.
El último parámetro de
configuración que debemos tomar en cuenta al instalar nuevo hardware en un
sistema, es el de la dirección I/O que le será asignada.
Explicar en qué consisten
estas direcciones sería un tanto complejo, pero podemos recurrir a un ejemplo
haciendo una analogía entre el bus de una computadora y una calle con diversos
domicilios a sus lados; pues bien, la dirección I/0 representa la
identificación particular de cada casa, de modo que una información que se
transmite hacia la tarjeta de video no afecte a los puertos seriales, o una
escritura hacia los disquetes no modifique la información almacenada en el
disco duro.
Es decir, cada periférico
conectado a la computadora posee su propia dirección I/0 que lo identifica, de
modo que una vez instalado el dispositivo, el CPU y el software de aplicación
"sepan" que siempre que se envíe, por ejemplo, un dato hacia la
dirección 1F0, significa que se está escribiendo en el disco duro IDE primario,
y cuando se reciba una información a través de la dirección 3F8 significará que
el dispositivo que la envía está conectado en el puerto serial 1 (por lo
general un ratón).
Por lo tanto, siempre que se
instale algún elemento nuevo en la PC que no posea un controlador interno, será
necesario asignarle su dirección I/O propia para, a partir de ese momento,
garantizar un libre intercambio de datos sin interferir ni ser interferido con
los elementos adyacentes.