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.
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.
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.
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.
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).
Ciclo di v.N. con Int
while (system=ON)
{
//Fase di Fetch
Preleva istruzione e decodifica
prepara operandi
//Fase di Execute
Esegue istruzione
}
//Test interruzioni
if(exception)
{
processing_state=EXCEPTION
servizio interruzione
riconoscimento dell’interruzione e cambio
contesto elaborativo;
esecuzione ISR;
ripristino contesto e prosecuzione programma
interrotto
processing_state=NORMAL
}
Livelli di privilegio
●
Nell'ambito della processazione un
processore può operare in uno dei sue
seguenti livelli di privilegio:
–
livello utente
–
supervisore
Gestione eccezioni
●
copia temporanea del registro di stato
●
determinazione vettore eccezioni
●
salvataggio contesto corrente
●
instanziazione nuovo contesto e avvio
processazione istruzioni
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
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
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
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
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.
Linee Int processori Motorola 8 bit
MC68xx
NMI
Microprocessore
68xx
IRQ
FIRQ
Polling
Int
Data
Microprocessore
Encoder
Int1
Int2
Int3
Int4
Sistema vettorizzato
Microprocessore
Int
Int1
Int2
Data
Int_ACK
Int3
Int4
I/O Port
Data
Encoder
Un caso particolare di vettorizzazione
hardware: Daisy-chain
Esempio di semplice gestione
prioritaria
Gestione Prioritaria a Livelli
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.
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
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
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
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.
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.
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).
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.
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
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.
Tracing
BUS ERROR
ADDRESS ERROR
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.
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)
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
●
●
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
Priorità
●
●
●
Se si presentano più interruzioni
simultaneamente, quale deve essere
selezionata?
Quali interruzioni potranno interrompere ISR
già in esercizio?
Cosa fare delle interruzioni ignorate?
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
–
●
all’esterno al processore
–
●
Soluzione usata dalle CPU più sofisticate a 32 bit, processori CISC e
RISC con elevata densità di integrazione sul silicio
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
Scarica

Perché le interruzioni?