¿Qué son los IRQ’s, los DMA’s y las direcciones I/O?

 

IRQ’s

 

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

IRQ3          Puertos seriales 2 y 4

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.

 

DMA’s

 

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

DMA2        Controladora de disquetes

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.

 

Direcciones I/O

 

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.




© 2001 Erick Taracena
http://members.fortunecity.com/cursoscr
E-mail: [email protected]

Sugerencias, comentarios y actualizaciones:
E-mail: [email protected]