cerca
Interrupt e loro gestione
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Interrupt e loro gestione

Torna alla pagina di Architettura degli elaboratori


Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! È SERVITA A QUALCOSA, NO?! ;)

 :: Interrupt e loro gestione ::

Cos'è

L’interrupt è uno dei tre modi di sincronizzazione tra cpu e interfacce di I/O, e cioè una richiesta di interruzione, da parte dell’interfaccia alla cpu, dello svolgimento dell’attività della CPU. Consente alla periferica di segnalare lo stato di servizio alla cpu mediante la linea dedicata INTREQ del bus di controllo e la cpu risponde, quale riconoscimento di interruzione, con la linea di INTACK.
Ha una visione copernicana della CPU in quanto i ritmi di lavoro sono dettati dagli eventi esterni.
E’ particolarmente adatto a gestire fenomeni urgenti che non possono attendere il tempo di interrogazione di una soluzione a controllo di programma.

Interrupt vettorizzato

Alla ricezione di un interrupt la CPU compie le seguenti operazioni:

  • salva il valore del PC;
  • disabilita il riconoscimento di ulteriori interrupt;
  • attiva INTACK;
  • attende sul databus la comparsa di un identificativo a 8 bit - inserito dall'interfaccia a periferica - che usa (come per l'istruzione TRAP) come indice in un vettore di interrupt:
    • tabella di celle di memoria, una associata a ogni possibile sorgente di interrupt;
    • ogni cella contiene l'indirizzo di inizio della routine di risposta all'interrupt associato.

Con l'interrupt vettorizzato:

  • il tempo di riconoscimento della sorgente di interrupt è minimizzato, perché non serve polling;
  • le interfacce a periferica si complicano, perché ogni interfaccia deve essere capace di generare il proprio identificativo sul Data Bus e lo deve conoscere in seguito;
  • non risolve i problemi di priorità, perché se la CPU viene riabilitata a sentire gli interrupt, può essere interrotta da chiunque.

PIC

Un Controllore di Interruzioni Programmabile (PIC, Programmable Interrupt Controller) è un dispositivo hardware che consente di gestire interruzioni vettorizzate con priorità per conto di un processore. Con il PIC l’interfaccia comunica al PIC stesso la richiesta di interrompere l’unita centrale. Se l’interfaccia e abilitata a farlo, il PIC attiva la linea di richiesta a INTREQ. Quando riceve INTACK il PIC comunica l’identificativo sul Data Bus: gli identificativi delle periferiche sono gestiti dal PIC, senza aggiunta di complessità per le interfacce. Inoltre se il PIC riceve più richieste di interrupt da diverse periferiche, dà precedenza a quella più prioritaria.

Funzionamento del PIC

Il PIC (Programmable Interrupt Controller) è il circuito integrato di supporto alla gestione degli interrupt. La sua struttura prevede un'unità di controllo e tre registri accessibili dalla CPU, ovvero:

  • IVR (Interrupt Vector Register), che contiene l'identificativo associato a ciascuna periferica collegata;
  • IPR (Interrupt Priority Register), che contiene le informazioni necessarie per stabilire l'ordine di priorità delle periferiche;
  • IMR (Interrupt Mask Register), che contiene le informazioni per sapere quali periferiche possono generare interruzioni e quali no.

Vediamo come funziona. La periferica chiede interrupt all’interfaccia e genera un suo “codice identificativo”. L’interfaccia comunica al PIC la richiesta di interrupt e a sua volta il PIC richiede interrupt alla CPU attivando la linea INTREQ. Quando la CPU è pronta a gestire la richiesta di interrupt attiva INTACK e quando il PIC riceve INTACK deposita sul bus dati l’indice del vettore di interrupt relativo all’IVR che gestisce l’interazione con il dispositivo.


Torna alla pagina di Architettura degli elaboratori