IRQ : Interrupt Request


Si chiamano IRQ (Interrupt request) i segnali che le componenti del computer mandano alla CPU per richiederne l'uso. Quando la CPU riceve uno di questi segnali (un interrupt) interrompe il suo lavoro, salva i valori dei registri e tutte le grandezze che descrivono lo stato del programma in esecuzione, quindi esegue la funzione che corrisponde all'IRQ in questione, e puo' passare il controllo ad un driver per la lettura della tastiera, per l'I/O da disco etc.
Una volta eseguita la funzione richiesta la CPU recupera i vecchi valori dei registri e riprende l'esecuzione del programma che era stato interrotto.

Gli interrupt sono gestiti da un hardware dedicato sulla scheda madre, l'interrupt controller, che raccoglie i vari segnali di interrupt e li manda alla CPU. Il primo interrupt controller, (l'integrato Intel I8259A) aveva in input solo 8 linee, corrispondenti ad 8 diversi IRQ, ed una linea in uscita, verso la CPU; con l'aumentare della complessita' del PC questo numero si dimostro' insufficiente; si ricorse quindi al trucco di mettere 2 interrupt controller in cascata, per questo l'IRQ 2 non e' usato (serve a collegare i 2 controllers) ed al suo posto si usa il 9.

Una volta l'assegnazione degli IRQ avveniva settando a mano appositi ponticelli sulle varie schede ed era difficile assegnare gli IRQ in modo da evitare conflitti.
Il sistema Plug and Play cerca di automatizzare la gestione degli IRQ ed e' il BIOS a creare una tabella degli IRQ disponibili, ad inizializzare le varie schede e ad assegnare ad esse degli IRQ univoci, il sistema operativo fa poi riferimento alla tabella degli IRQ fornita dal BIOS. Ma nonostante tutto 15 IRQ sono pochi nei PC moderni, varie periferiche condividono gli stessi IRQ (IRQ sharing) ed e' il sistema operativo che deve di volta in volta capire quale componente ha emesso il segnale. Anche in Windows 98 od XP, che gestiscono loro gli IRQ ed il Plug and Play, problemi di conflitti restano.

Attualmente i vecchi interrupt controller sono caduti in disuso, e molte schede madri sono equipaggiate con l'integrato Intel 82093AA , o similari, che implementano il sistema detto "IO/APIC" per la gestione degli interrupt, adatto anche a PC a piu' CPU. Questo sistema pero' simula il comportamento dei vecchi sistemi con 16 IRQ, per cui al boot di sistema il BIOS ci mostra sempre la vecchia numerazione.

Il Bus PCI ha un suo sistema di interrupt, denominati A,B,C,D , che poi mappati dal BIOS sugli IRQ, in genere dal 9 al 12.




Tavola degli IRQ
numero di IRQ uso
0interval timer (System Timer)orologio programmabile di sistema, il PC e' interrotto periodicamente da questo segnale, in modo che la CPU possa riesaminare la coda dei processi in attesa
1tastiera
2corrisponde al 9
3porte seriali 2 e 4 (COM2,COM4)
4porte seriali 1 e 3 (COM1,COM3)
5porta parallela (LPT2), in genere per stampantequesto IRQ e' anche usato dalle schede audio
6 controller del floppy
7porta parallela (LPT1) usato anche da schede SCSI o audio
8real time clock
9 per varie schede ausiliarie
10 per varie schede ausiliarie
11 per varie schede ausiliarie
12 mouse PS/2
13 coprocessore matematico
14controller IDE primario
15controller IDE secondario

Gli interrupt di numero piu' basso hanno la priorita' su quelli di numero alto.