La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Perché le interruzioni?

Presentazioni simili


Presentazione sul tema: "Perché le interruzioni?"— Transcript della presentazione:

1 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.

2 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.

3 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.

4 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.

5 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).

6 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

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

8 Gestione eccezioni copia temporanea del registro di stato
determinazione vettore eccezioni salvataggio contesto corrente instanziazione nuovo contesto e avvio processazione istruzioni

9 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

10 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

11 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

12 Vettori Eccezione Vettori eccezione sono locazioni di memoria in cui sono memorizzati i puntatori alle ISR Vector number è un numero (tipicamente su 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

13 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.

14 Linee Int processori Motorola 8 bit MC68xx

15 Polling

16 Sistema vettorizzato

17 Un caso particolare di vettorizzazione hardware: Daisy-chain

18 Esempio di semplice gestione prioritaria

19 Gestione Prioritaria a Livelli

20 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.

21 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

22 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

23 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

24 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.

25 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.

26 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).

27 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.

28 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

29 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.

30 Tracing

31 BUS ERROR

32 ADDRESS ERROR

33 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.

34 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)

35 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) $8 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 $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

36 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 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

37 Priorità Se si presentano più interruzioni simultaneamente, quale deve essere selezionata? Quali interruzioni potranno interrompere ISR già in esercizio? Cosa fare delle interruzioni ignorate?

38 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

39


Scaricare ppt "Perché le interruzioni?"

Presentazioni simili


Annunci Google