Perché le interruzioni?

39
Perché le interruzioni? Il sistema delle interruzioni non è essenziale per la descrizione concettuale di una computazione secondo il modello di V.N. Esso rappresenta una soluzione ingegneristica per un concreto ed efficiente utilizzo di un processore e delle risorse del sistema di calcolo di cui esso fa parte. Un calcolatore dotato di un processore privo di tale funzionalità, sarebbe, di scarso utilizzo, infatti, alla sua accensione, il processore si avvierebbe ad eseguire il programma in memoria, a partire da un indirizzo prefissato (cablato) del program counter, senza alcuna possibilità di arrestarlo se non ricorrendo al suo spegnimento.

description

Perché le interruzioni?. Il sistema delle interruzioni non è essenziale per la descrizione concettuale di una computazione secondo il modello di V.N. - PowerPoint PPT Presentation

Transcript of Perché le interruzioni?

Page 1: Perché le interruzioni?

Perché le interruzioni?● Il sistema delle interruzioni non è essenziale per la

descrizione concettuale di una computazione secondo il modello di V.N.

● Esso rappresenta una soluzione ingegneristica per un concreto ed efficiente utilizzo di un processore e delle risorse del sistema di calcolo di cui esso fa parte.

● Un calcolatore dotato di un processore privo di tale funzionalità, sarebbe, di scarso utilizzo, infatti, alla sua accensione, il processore si avvierebbe ad eseguire il programma in memoria, a partire da un indirizzo prefissato (cablato) del program counter, senza alcuna possibilità di arrestarlo se non ricorrendo al suo spegnimento.

Page 2: Perché le interruzioni?

Perché le Interruzioni?● Il ciclo di processazione sin qui utilizzato, non

contemplava la possibilità, a causa di un evento esterno, di interrompere il processore e, quindi, il normale susseguirsi della sequenza di istruzioni di un programma nell’ambito del ciclo di processazione.

● La necessità di distogliere il processore dall’esecuzione di uno specifico programma è indispensabile per la gestione efficiente dlle operazioni di I/O e per consentire ai sistemi operativi la getsione efficiente delle risorse di sistema.

Page 3: Perché le interruzioni?

Natura delle interruzioni

● L’interruzione è quasi sempre associabile ad un evento asincrono che richiede uno specifico servizio realizzato mediante l’esecuzione di una apposita procedura detta Interrupt Service Routine (ISR). Tale evento può essere di natura hardware o software, generato, in tal caso, per tramite dell’esecuzione di apposite istruzioni dette Software Interrupt o Trap.

Page 4: Perché le interruzioni?

Hw dedicato nel processore

● Per il servizio di un’interruzione occorre che il processore sia dotato di opportuno hardware in grado di eseguire un meccanismo di cambio di contesto elaborativo.

● I moderni processori consentono di gestire numerose interruzioni, di diverso tipo e con vari schemi prioritari.

Page 5: Perché le interruzioni?

Int e ciclo di von Neumann● In generale un evento di interruzione, se di tipo Hw, può

presentarsi in un punto qualsiasi del ciclo● esso viene memorizzato e preso in considerazione alla fine

della fase di esecuzione del ciclo stesso, in modo da consolidare l’esecuzione dell’istruzione corrente.

● A tale regola si deve fare eccezione in tutti quei casi in cui non ha più senso continuare ad eseguire l’istruzione corrente e occorre interromperla (fault di sistema)

● Se il processore è dotato di parallelismo interno ed esegue simultaneamente più istruzioni si richiede di operare in modo tale da mantenere la consistenza dell’esecuzione dell’intera fase elaborativa rispetto all’evento interrompente (precise interrupt).

Page 6: Perché le interruzioni?

Ciclo di v.N. con Intwhile (system=ON){//Fase di Fetch

Preleva istruzione e decodificaprepara operandi

//Fase di ExecuteEsegue istruzione

}//Test interruzioni

if(exception){processing_state=EXCEPTIONservizio interruzione

riconoscimento dell’interruzione e cambio contesto elaborativo;

esecuzione ISR;ripristino contesto e prosecuzione

programma interrottoprocessing_state=NORMAL}

Page 7: Perché le interruzioni?

Livelli di privilegio

● Nell'ambito della processazione un processore può operare in uno dei sue seguenti livelli di privilegio:– livello utente– supervisore

Page 8: Perché le interruzioni?

Gestione eccezioni

● copia temporanea del registro di stato● determinazione vettore eccezioni● salvataggio contesto corrente● instanziazione nuovo contesto e avvio

processazione istruzioni

Page 9: Perché le interruzioni?

Gestione eccezioni in un processore

● Stati di processazioni● Stati di privilegio

– Stato supervisore– Stato utente

● Passaggio di stato di privilegio● Il sistema delle interruzioni● Meccanismi

– Vettori

Page 10: Perché le interruzioni?

Eventi connessi alla gestione delle interruzioni

● Maschera delle interruzioni● Arrivo interruzione e suo accodamento● Selezione su base prioritaria e

mascheramento livello● Cambio contesto e acquisizione vettore● Salto ad ISR su nuovo contesto● Ripristino vecchio contesto

Page 11: Perché le interruzioni?

Protocollo Gestione Interruzione ● Manifestazione Evento eccezione (interno o

esterno) al processore– Passo 1: copia temporanea SR e set di SR per

la gestione delle interruzioni– Passo 2: determinazione del vettore delle

interruzioni– Passo 3: salvataggio del contesto corrente di

elaborazione– Passo 4: inizializzazione del nuovo contesto e

avvio processazione ISR

Page 12: Perché le interruzioni?

Vettori Eccezione

● Vettori eccezione sono locazioni di memoria in cui sono memorizzati i puntatori alle ISR

● Vector number è un numero (tipicamente su 8-16 bit da cui derivare il vettore eccezione che punta ad un’apposito spazio indirizzi (tipicamente in ROM)

● Il vector number è fornito dalla periferica interrompente in un apposito ciclo di bus

Page 13: Perché le interruzioni?

Pseudovettori o autovettori

● All’interno del processore sono cablati gli indirizzi delle locazioni su cui si trovano i puntatori alle ISR. Tale schema è anche generabile dallo schema precedente se agli indirizzi delle ISR si pone, come prima istruzione, un salto incondizionato “jmp” ad una locazione su cui è posto l’entry point della ISR.

Page 14: Perché le interruzioni?

Linee Int processori Motorola 8 bit MC68xx

Microprocessore68xx

NMI

FIRQ

IRQ

Page 15: Perché le interruzioni?

Polling

Microprocessore

Encoder

Int1Int2

Int3Int4

Dat

a

Int

Page 16: Perché le interruzioni?

Microprocessore

I/O Port EncoderData

Int1Int2

Int3Int4

Dat

aInt_ACK

Int

Sistema vettorizzato

Page 17: Perché le interruzioni?

Un caso particolare di vettorizzazione hardware: Daisy-chain

Page 18: Perché le interruzioni?

Esempio di semplice gestione prioritaria

Page 19: Perché le interruzioni?

Gestione Prioritaria a Livelli

Page 20: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● Vector number un numero su 8 bit che moltiplicato per 4 da l’indirizzo di un vettore eccezione

● Il vector number è comunicato dalla periferica che interrompe il processore. Tale numero moltiplicato per 4 fornisce l’indirizzo del vettore associato alla specifica interruzione.

Page 21: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● Occupano due parole macchina (word0 (H) e word1(L)) per un indirizzo espresso su 32 bit

● Il vettore RESET è espresso su due indirizzi da 32 bit: le prime due word contengono l'indirizzo del supervisor stack e le seconde due il valore del PC

Page 22: Perché le interruzioni?

Classificazione delle eccezioni nel processore 68000

● gruppo 0: reset, bus error, address error● gruppo 1: trace, interrupt, privilege violation,

illegal instruction● gruppo 2: TRAP, TRAPV, CHK, divisione per

zero

Page 23: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● Le interruzioni sono abilitate se PI (Priority Interrupt) > livello maschera

● PPI process priority interrupt (in status word maschera)

● IPL interrupt priority level● Interruzioni abilitate se IPL>PPI, inibite se

IPL<=PPI

Page 24: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● All’atto del servizio PPI=IPL che disabilita le interruzioni del livello corrente. Le interruzioni sono totalmente abilitate se PPI=0, mascherate se PPI=7 eccetto le NMI (Non Maskerable Interrupt). I due estremi 0 e 7 rappresentano due condizioni particolari:

● IPL=0 rappresenta la base neutra su cui si poggiano le informazioni codificate dei segnali di interruzione. A tale valore corrisponde, quindi, la condizione di assenza di interruzioni. La presenza di interruzione si ha se IPL>0, cioé a partire da IPL=1 e a finire a IPL=7. Il valore PPL=0 della maschera abilita, pertanto, tutte le interruzioni.

● IPL=7 è considerato NMI (non maskerable interrupt). Tale richiesta di interruzione è sempre accettata dal processore, anche se PPL=7. Le NMI operano, infatti, in eccezione alla regola IPL>PPL valida per la gestione di interruzioni di livello generico.

Page 25: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● I segnali di interruzione con IPL da 1 a 6 sono a livello. La permanenza sulle linee di interruzione di uno stato alto (o basso) è considerata, dal processore, interruzione. Il segnale IPL=7 di NMI è di tipo “edge triggered” e cioé sensibili alla variazione di fronte. Ciò per evitare che il segnale di interruzione corrente di IPL=7, con il suo permanere, venga reinterpretato dal processore come ulteriore richiesta di interruzione, stante il comportamento diverso del confronto fra maschera e segnali di richiesta che, per IPL=7, non segue la regola IPL>PPL ma IPL<=PPL, trattandosi di NMI, interruzioni sempre abilitate e non mascherabili.

● L’essere “edge triggered” fa si che la sorgente, per generare una nuova interruzione, deve effettuare una variazione di livello.

Page 26: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● Le interruzioni esterne IPL sono asincrone rispetto all’esecuzione dei codici operativi di un programma, ma servite alla fine del codice corrente all’atto del loro arrivo. L’esecuzione dei codici operativi non è interrompibile. In caso contrario si richiederebbe, infatti, il salvataggio non del semplice contesto elaborativo ma del contesto legato allo stato delle microoperazioni (Datapath) e, pertanto, caratterizzato da un elevato numero di informazioni.

● Sono prese in considerazione, all’interno di una esecuzione, particolari tipi di interruzioni legate ad eventi che non richiedono il ripristino dell’elaborazione interrotta e quindi il salvataggio del contesto (ad esempio interruzioni generate da una caduta di tensione d’alimentazione).

Page 27: Perché le interruzioni?

Il sistema delle eccezioni del processore MC68000

● Le TRAP (o software interrupt) sono interruzioni a tutti gli effetti. unica differenza è che essendo generate da programma, sono sincrone. Al ripetersi del programma occorrono sempre nello stesso istante di tempo. Ciò, ovviamente, non è vero per i segnali di interruzione esterni.

Page 28: Perché le interruzioni?

Istruzioni Privilegiate

● Istruzioni privilegiate creano un'eccezione se eseguite in stato utente e non supervisore– STOP– RESET– RTE– MOVE TO SR– AND, EOR, OR (word) immediate to SR– MOVE USP

Page 29: Perché le interruzioni?

Stati di privilegio

● Il processore opera in uno dei seguenti stati di processazione: normale, eccezione, halted.

● Lo stato di processazione normale si ha durante l'esecuzione delle istruzioni, inclusi i cicli di bus necessari per il fetch delle istruzioni, dei dati e della memorizzazione dei risultati e i cicli per comunicare con il coprocessore.

● Lo stato di eccezione è associato alle interruzioni , alle istruzioni di trap, al tracing delle istruzioni, e ad altre condizioni di eccezione. La processazione delle eccezioni può essere iniziata da eventi esterni al processore quali interruzioni, errori sul bus, reset, comandi del coprocessore.

● Lo stato halted è causato da una causa di fault del sistema catastrofica quale un errore di bus a seguito di un precedente errore di bus. In tale stato il processore si arresta e può essere ripristinato nel funzionamento solo ricorrendo ad un reset.

Page 30: Perché le interruzioni?

Tracing

Page 31: Perché le interruzioni?

BUS ERROR

Page 32: Perché le interruzioni?

ADDRESS ERROR

Page 33: Perché le interruzioni?

Gestione interruzioni nel processore ARM

● Il processore ARM ha un’architettura orientata al controllo processo e alla realizzazione di sistemi embedded.

● Tale peculiarità, e la necessità di fornire elevati livelli prestazionali a costi ridotti, fa si che l’architettura, di tipo RISC, si presenta scarsamente ortogonale. In essa si ricorre spesso a soluzioni particolari per realizzare figure di programmazione a livello di linguaggio macchina volte a concentrare in un’unica istruzione, più operazioni.

Page 34: Perché le interruzioni?

Processore ARM● Il processore ARM ricorre al suo interno ad una

pipe a 3 stadi in cui sono eseguite, simultaneamente, le operazioni di fetch, decode e esecuzione.

● Il PC punta sempre all’istruzione che deve essere prelevata dalla memoria (fetch).

● Essendo un’istruzione codificata completamente su 4 byte (non sono ammesse istruzioni a lunghezza variabile) ad ogni ciclo di v.N si ha che nella pipe sono presenti le seguenti tre istruzioni:

Fetch Decode Execute(PC) (PC-4) (PC-8)

Page 35: Perché le interruzioni?

Il processore ARM gestisce i seguenti sette differenti tipi di eccezioni Tipo di eccezione Stato Indirizzo vettore Priorità descrizione

Reset Svc $0 1 Evento Hw asincrono. Occorre quando il pin di Reset del processore è attivato. Tipicamente è attivato all’atto dell’accensione o se si vuole attivare un software reset.

Undefined instruction Undef $4 6 Evento Sw sincrono. Occorre se la CPU (o uno dei coprocessori ad essa associati) non riconosce valido il codice operativo corrente

Software Interrupt (SWI) Svc $8 6 Evento Sw sincrono. E’ generato mediante l’esecuzione di una istruzione, SWI che codifica in essa un parametro. Consente di passare allo stato Svc. Usata dai S.Op. per gestire le system call e dai monitor per eseguire funzioni.

Prefetch Abort Abort $C 5 Evento Sw sincrono. Occorre se si tenta di eseguire un’istruzione che è stata prelevata da un indirizzo illecito relativamente allo stato corrente dell’elaborazione.

Data Abort Abort $10 2 Evento Sw sincrono. Occorre se si tenta di eseguire un’operazione di load/store ad un indirizzo illecito relativamente allo stato corrente dell’elaborazione

Reserved - $14 - Riservato per future implementazione

Interrupt Request (IRQ) Irq $18 4 Evento Hw asincrono. Occorre quando il pin IRQ del processore è attivato (basso) e il bit I del registro di stato CPSR è basso

Fast Interrupt Request (FIQ) Fiq $1C 3 Evento Hw asincrono. Occorre quando il pin FIQ del processore è attivato (basso) e il bit F del registro di stato CPSR è basso

Page 36: Perché le interruzioni?

● Il processore ARM impiega per la gestione delle interruzioni uno schema semplice basato su di una forma di vettorizzazione utilizzata anche nel processore Intel della famiglia 8080 e nella famiglia Motorola 6800. L’indirizzo della ISR associata all’evento interrompente è vettorizzato in locazioni di memoria staticamente associate allo stesso (gli indirizzi di tali locazioni per l’ARM sono riportate nella terza colonna della precedente tabella). In tali indirizzi taluni processori pongono direttamente il vettore che punta all’indirizzo assoluto della ISR da eseguire (pseudo vettori), altri un codice operativo, tipicamente un codice di salto al codice dell’ISR interessata. Il processore ARM opera in tal’ultimo modo e nei vettori è posto, in genere, un codice di salto (BL) o di load PC.

● Quando arriva un’eccezione il pc può essere stato aggiornato o meno a seconda dello stato della pipe

Page 37: Perché le interruzioni?

Priorità

● Se si presentano più interruzioni simultaneamente, quale deve essere selezionata?

● Quali interruzioni potranno interrompere ISR già in esercizio?

● Cosa fare delle interruzioni ignorate?

Page 38: Perché le interruzioni?

Schema prioritario● Basato sulle funzionalità di un componente Hw detto PIC

(Priority Interrupt Controller), più o meno complesso che può operare

● all’interno del processore– Soluzione usata dalle CPU più sofisticate a 32 bit, processori CISC

e RISC con elevata densità di integrazione sul silicio● all’esterno al processore

– Soluzione usata per famiglie di processori a 8-16 bit e per processori con poco spazio sul silicio per integrare le funzionalità richieste

● In casi semplici il polling e il daisy-chain forniscono, di fatto, una gestione prioritaria delle interruzioni a schema fisso

Page 39: Perché le interruzioni?