Interrupciones (IRQ) y conflictos del hardware

Febrero 2017

¿Qué es una interrupción?

Debido a que el procesador no puede procesar múltiples datos al mismo tiempo (procesa un dato a la vez) el sistema de multitareas es en realidad una alternancia de fragmentos de instrucciones de muchas tareas diferentes. Es posible suspender momentáneamente un programa que se estaba ejecutando mediante una interrupción que dure el tiempo que lleva una rutina de servicios de interrupción. Luego, el programa interrumpido puede continuar ejecutándose. Existen 256 direcciones de interrupción diferentes.

Una interrupción se realiza cuando un componente del hardware de la ordenador requiere la interrupción del hardware. Un ordenador posee muchos periféricos. Generalmente, necesitan utilizar recursos del sistema, aunque sólo sea para comunicarse con éste...

Cuando necesitan un recurso, envían una petición de interrupción al sistema para que éste les preste atención. Cada periférico cuenta con un número de interrupción llamado IRQ (Interruption request [Petición de interrupción]). Una manera de poder entender este proceso es imaginar a cada periférico tirando de una "cuerda" conectada a una campana para indicarle al ordenador que requiere de su atención.

De hecho, la "cuerda" es una línea física que conecta la ranura a la placa madre. Para una ubicación ISA de 8 bits, por ejemplo, hay 8 líneas IRQ (Interruption Request [Petición de Interrupción]) que conectan la ranura ISA de 8 bits a la placa madre, IRQ 0 a IRQ7. Estas IRQ son controladas por un "controlador de interrupciones" que verifica qué IRQ tiene mayor prioridad. Para las ranuras de 16 bits, se agregan las IRQ que van desde la 8 a la 15, las cuales requieren de un segundo controlador de interrupciones. La conexión entre los dos grupos de interrupciones se realiza por medio de la IRQ 2 que está conectada a la IRQ 9 (denominada "cascada"). El término "cascada" se puede pensar como una manera de "insertar" las IRQ del 8 al 15 entre las IRQ del 1 al 3:

IRQ2 – Cascada


Dado que la prioridad se otorga a medida que va aumentando el orden en el número de IRQ, y debido a que las IRQ del 8 al 15 se insertan entre las IRQ del 1 al 3, el orden de prioridad es el siguiente:

0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7

¿Qué es un DMA?

Los periféricos con frecuencia necesitan contar con "memoria prestada" del sistema, la cual utilizarán como búfer. Este búfer será un área de almacenamiento temporal que permite que se escriban rápidamente datos de entrada y salida.

Para afrontar esta necesidad, se definió un canal de acceso directo a la memoria denominado DMA (Direct Memory Access por sus siglas en inglés).

El canal DMA es un acceso a una ubicación RAM en el ordenador, al que una "Dirección de Inicio RAM" y una "Dirección de Fin" hacen referencia. Este método permite que un periférico utilice canales especiales que le den acceso directo a la memoria, sin involucrar al microprocesador. Esto permite que el microprocesador se libere de la necesidad de hacer este trabajo.

Un ordenador tipo PC cuenta con 8 canales DMA. Los primeros cuatro canales DMA poseen 8 bits mientras que los DMA que van del cuarto al séptimo poseen 16 bits.
Normalmente, los canales DMA se asignan de la siguiente manera:

  • DMA0 - libre
  • DMA1 - (tarjeta de sonido)/ libre
  • DMA2 - controlador de disquetes
  • DMA3 - puerto paralelo (puerto de la impresora)
  • DMA4 - controlador del acceso directo a la memoria

(redirigido a DMA0)
  • DMA5 - (tarjeta de sonido)/ libre
  • DMA6 - (SCSI)/ libre
  • DMA7 - disponible

Direcciones de base

Debido a que a veces los periféricos necesitan intercambiar información con el sistema, se les asignan direcciones de memoria para enviar y recibir datos. Estas direcciones se denominan "direcciones de base" (los siguientes términos también se usan algunas veces: "puertos de entrada/salida", "puertos de E/S", "dirección E/S", "direcciones de puertos de E/S", "puertos de base"</i>, o "Direcciones de Entrada/Salida").

Por intermedio de esta dirección de base los periféricos se pueden comunicar con el sistema operativo. Por consiguiente, sólo puede haber una dirección de base por periférico.

A continuación, se podrá ver una lista de algunas direcciones de base comunes:

  • 060h - teclado
  • 170h/376h - controlador IDE secundario
  • 1F0h/3F6h - controlador IDE primario
  • 220h - tarjeta de sonido
  • 300h - tarjeta de red
  • 330h - tarjeta del adaptador SCSI
  • 3F2h - controlador de la unidad de disquete
  • 3F8h - COM1
  • 2F8h - COM2
  • 3E8h - COM3
  • 2E8h - COM4
  • 378h - LPT1
  • 278h - LPT2



Sin embargo, toda esta información es generalmente irrelevante para el usuario medio, que no necesita preocuparse por ésta.

¿Por qué existen conflictos con el hardware?

Una interrupción es una línea que conecta a un periférico con el procesador. También puede ser una interrupción del hardware, cuando un componente del hardware de la PC así lo requiere. Por ejemplo, esto sucede cuando se presiona una tecla y el teclado quiere que el procesador lo note. Sin embargo, no se pueden solicitar las 256 interrupciones como interrupciones del hardware. Los diferentes periféricos siempre solicitan interrupciones específicas.
Por este motivo, cuando instale y configure tarjetas de expansión, deberá asegurarse de que dos periféricos deferentes no usen la misma interrupción.

De hecho, si dos periféricos poseen la misma IRQ, el sistema no sabrá a qué hardware deberá darle el control...el sistema se bloqueará o no funcionará normalmente... generando lo que se denomina conflicto con el hardware. Un conflicto con el hardware no sólo se produce cuando dos periféricos sufren la misma interrupción del hardware. También puede generarse un conflicto si dos periféricos tienen la misma dirección de entrada/salida o si se les asignan los mismos canales DMA.

Cómo configurar las IRQ de los periféricos

La IRQ de una tarjeta puede modificarse, ya que es necesario asignarle un número de IRQ que otro periférico no utiliza.

  • En las tarjetas más antiguas, se configurara utilizando puentes en la tarjeta.
  • En las tarjetas más recientes (las que poseen un BIOS con sistema Plug and Play), los recursos (IRQ, DMA, Direcciones de Entrada-Salida) se configuran con una pequeña utilidad (que a menudo se ejecuta en DOS) que viene junto con la tarjeta de red (generalmente se la denomina setup.exe, install.exe, ezconf.exe, config.exe,...). Esta utilidad permite modificar la IRQ, el DMA, y otros valores por medio de un software.

Para poder modificar los parámetros en forma manual, normalmente debe deshabilitar el modo plug and play.
  • Sin embargo, muchas tarjetas pueden configurarse a voluntad (en Windows, es posible asignar un valor IRQ). Esto se aplica, en especial, a la mayoría de las tarjetas de sonido.

No siempre es fácil encontrar recursos para todos los periféricos. Por este motivo, a continuación podrá ver los recursos que ya fueron utilizados y que, por lo tanto, no pueden asignarse a sus tarjetas de expansión:


IRQPeriférico
0 Reloj interno
1 teclado
2 controlador programable de interrupciones
Redirigido a las IRQ 8 a 15
3 puerto de comunicación COM2/COM4
4 puerto de comunicación COM1/COM3
5 libre
6 controladores del disquete
7 puerto de la impresora LPT1
8 CMOS (Reloj en tiempo real)
9 libre
10 libre
11 libre
12 puerto del ratón PS2/libre
13 procesador de datos numéricos
(coprocesador matemático)
14 controlador primario del disco rígido (IDE)
15 controlador secundario del disco rígido (IDE)



Como se pudo ver anteriormente, los puertos COM1 y COM4 usan la misma interrupción, como también lo hacen los puertos COM2 y COM3. Si se tiene en cuenta que dos periféricos no pueden usar la misma interrupción, esto puede parecer ilógico. De hecho, es posible utilizar COM1 y COM4 (como también COM2 y COM3) siempre y cuando no estén activados simultáneamente. De lo contrario, el ordenador puede bloquearse o comportarse en forma anormal.

Cómo resolver conflictos con el hardware

Cuando tiene un problema que cree que está relacionado con la configuración del hardware de su máquina, lo primero que debe hacer es identificarlo. Es decir, debe tratar de eliminar todas las variables posibles, generalmente abriendo la máquina y quitando, uno por uno, todos los elementos que pudieran causar un conflicto, o aislándolos por medio de un software (que esté instalado en su sistema operativo), hasta encontrar el componente que provocó el conflicto.

Consulta también

El documento «Interrupciones (IRQ) y conflictos del hardware» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.