Controllore di interruzioni programmabile: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: Aggiungo: ru:Контроллер прерываний |
Nessun oggetto della modifica |
||
Riga 1:
Un '''Controllore di Interruzioni Programmabile''' ('''PIC''', '''Programmable Interrupt Controller''') è un dispositivo hardware che consente di gestire
== Funzionamento ==
Per meglio comprenderne il funzionamento, immaginiamo che il PIC non ci sia e che il processore debba vedersela in prima persona nella gestione delle interruzioni. Quando un dispositivo, che può essere ad esempio un
Il PIC si frappone tra tutti i dispositivi che richiedono l'interruzione e il processore: si prende quindi carico di sentire se ci sono dispositivi che stanno interrompendo e se ce n'è più di uno adotta un meccanismo di priorità prefissato per scegliere quello più prioritario. A questo punto, il PIC attiva l'unica linea di interruzione del processore, dandogli anche il "vettore" dell'interruzione, dal quale si ottiene, grazie ad una tabella, l'indirizzo del programma (
Il PIC prevede un certo numero di
I PIC spesso consentono di essere messi in cascata in modo che possano essere sentite le interruzioni di moltissimi dispositivi. Ad esempio, si possono trovare dei PIC che utilizzati singolarmente possono sentire solo 8 diversi dispositivi interrompenti: per poterne invece sentire fino a 64, è possibile utilizzarne 9 collettivamente, con 8 di essi (detti '''Slave''') che sentono ciascuno 8 dispositivi interrompenti per un totale appunto di 64 e con un nono PIC (detto '''Master''') che sente le interruzioni provenienti dagli 8 PIC Slave. Sarà poi il PIC Master a interrompere il processore fornendogli uno dei 64 vettori possibili cosicché possa essere servito quello tra i 64 dispositivi con la priorità di interruzione più alta.
== Caratteristiche comuni ==
I PIC presentano di solito un insieme di
Come già detto, ci sono diversi meccanismi di priorità previsti dai PIC tra cui quelli a priorità fissa, a priorità prestabilita o a priorità rotante.
Riga 24:
Un '''vantaggio''' di un tale tipo di approccio sta nel fatto che si evita che un impulso spurio venga interpretato inavvertitamente come una richiesta di interruzione: se tale impulso è, come di solito capita, di breve durata allora esso non viene "sentito". Le interruzioni sul livello, pertanto, sono più robuste rispetto a quelle sul fronte in presenza di linee rumorose per questa loro capacità di filtrare i segnali spuri.
Molti dispositivi possono '''condividere''' una linea di interruzione sul livello se sono opportunamente progettati. La linea deve avere un
Quando la linea di interruzione condivisa da più dispositivi viene attivata, bisogna scoprire chi è stato a farlo. Una volta servito il dispositivo interrompente e richiestogli di smettere di tenere attiva la linea, può succedere che quest'ultima ritorni al suo stato inattivo, di riposo, o che continui ad essere attiva. Nel primo caso significa che una volta servito il dispositivo interrompente non ce n'erano altri che richiedevano attenzione. Nel secondo caso significa che un altro dispositivo ha cominciato a richiedere attenzione, ma si stava servendo il dispositivo precedente: bisogna di nuovo scoprire chi altro ha richiesto l'interruzione. Una volta servito, il discorso si ripete.
Riga 32:
Ci sono alcuni '''svantaggi''' con le interruzioni sul livello. Se la linea è condivisa e si sta servendo un dispositivo, non si può capire se ce n'è un altro che ha poco dopo cominciato a richiedere anch'esso l'interruzione: bisogna finire con il primo e dirgli di smettere di tenere attiva la linea per poi scoprire che ce n'era un altro che pure chiedeva attenzione. Appunto per questo non è consigliabile '''prendersela comoda''' a servire un dispositivo meno prioritario se sulla stessa linea ce n'è uno più prioritario: si corre il rischio che quest'ultimo debba aspettare a lungo per il completamento della ISR del primo dispositivo. Un altro inconveniente è dovuto al fatto che se non si sa come trattare l'interruzione di un dispositivo interrompente, quest'ultimo potrebbe tenere '''indefinitamente attiva la linea''' impedendo agli altri di segnalare la propria richiesta di interruzione.
La versione originaria del bus
===Interruzioni sul fronte===
Riga 44:
Uno '''svantaggio''' delle interruzioni sul fronte è che una attivazione della linea potrebbe non essere sentita: mentre con l'interruzione sul livello ciò non può succedere perché la linea è tenuta attiva per tutto il tempo richiesto al completamento della ISR, qui il rischio di perdere un'attivazione c'è e può portare a situazioni impreviste. Può verificarsi una situazione di stallo in quanto il dispositivo interrompente aspetta fiducioso di essere servito ma la ISR di cui ha richiesto l'esecuzione non venga mai eseguita perché l'attivazione della linea non è stata sentita.
Le prime versioni del bus
== Controllori di Interruzioni Programmabili noti ==
Uno dei PIC più conosciuti, l
Maggiori informazioni sul PIC 8259 dell'Intel possono essere trovate in ''IA-32 Intel® Architecture Software Developer’s Manual, Volume 3A: System Programming Guide, Part 1'', liberamente disponibili sul sito della
==Voci correlate==
|