• Non ci sono risultati.

Il Sistema delle Interruzioni

N/A
N/A
Protected

Academic year: 2021

Condividi "Il Sistema delle Interruzioni"

Copied!
25
0
0

Testo completo

(1)

Il Sistema delle Interruzioni

(2)

Introduzione

o

Il concetto di Interruzione è legato alla capacità di

gestire l’occorrenza di eventi esterni

o

Non esiste una nomenclatura precisa relativa ai

differenti tipi di eventi ma essi possono essere

raggruppati in categorie:

2

Eventi:

Sincroni o Asincroni

Mascherabili o non mascherabili

Interni o esterni all’istruzione

Terminali o non terminali

(3)

Alcuni esempi

o  Richiesta da un dispositivo di I/O

o  Chiamata del Sistema Operativo da un programma utente

o  Esecuzione passo-passo delle istruzioni

o  Punto di controllo

o  Overflow o underflow aritmetico

o  Mancanza di pagina (non in MC)

o  Accesso disallineato alla memoria

o  Violazione dei diritti di accesso alla memoria

o  Uso di codici operativi non definiti

o  Guasto fisico

(4)

E una loro categorizzazione

4 Sincrona utente o automatica Mascherabile Interna istruzione Ripristinabile

Richiesta di I/O No Automatica no No si

Chiamata del Sistema Operativo Si Utente no No si passo-passo si Utente si no si Punto di controllo si Utente si si si Overflow underflow si Automatica si si no Mancanza di pagina si Automatica si si si Accesso disallineato alla memoria si Automatica no si no Violazione dei diritti di accesso

alla memoria si Automatica si si no

Uso di codici operativi non

definiti si Automatica no si no

Guasto fisico no Automatica no si no

Caduta di

tensione no Automatica no si no

(5)

Tanto per avere un

idea

Evento Intervallo di tempo tra

due eventi

Interruzione da I/O 2,7 ms

Interruzione periodica 10 ms

Interruzione software 1,5 ms

Interruzione generica 0,9 ms

(6)

Alcune Definizioni

o  “Interruzione”: un

evento che modifica il flusso di controllo senza essere una diramazione

o  Da un altro punto di

vista il meccanismo

delle Interruzioni può

essere visto come l’unico in grado di gestire EVENTI ASINCRONI

o  Nota: a parte nei casi di

malfunzionamento hardware gli eventi

asincroni provengono da dispositivi diversi da CPU e MC 6

ISR

ISR

S.O.

Abort del programma

INT

ripristinabile

INT

terminale

Flusso principale di controllo Flusso principale di controllo Flusso principale di controllo

(7)

Ciclo del Processore

o  Per gestire il concetto di interruzione dobbiamo modificare il

nostro modello del ciclo del processore centrale

fetch Operand Assembly execute fetch Operand Assembly execute INT no si

isr

(8)

Tipologie d

uso

Principali usi delle Interruzioni:

n

Gestione I/O

n

Gestione errori e malfunzionamenti

n

Gestione Miss della Cache

(9)

Alcune considerazioni

o  Il problema cruciale rimane

quello dello stato della

computazione

o  Lo stato della computazione è

formato dalle info visibili nel modello di programmazione

della macchina (->registri)

o  Il passaggio STATO1 ->

STATO2 viene chiamato switch di contesto

o  Con il modello proposto di ciclo

del processore non si possono gestire INT “interne”

all’istruzione

ISR

Flusso principale di controllo Flusso principale di controllo lo stato qui deve essere = allo stato qui

(10)

Disabilitazione delle Interruzioni

o  Il livello di complessità delle operazioni precedenti dipende molto dalle

necessità o meno di gestire INT innestate

Il Sistema delle Interruzioni 10

ISR1

ISR2

La presenza di INT innestate costringe a gestire le operazioni di salvataggio dello stato con una logica a STACK

In ogni caso, per

evitare il CAOS, ci sono dei momenti nei quali la macchina

NON PUO’

ACCETTARE INT

Introduciamo allora il concetto di ABILITAZIONE GENERALE DELLE

INT INT INTFF AG Flip-Flop di Abilitazione Generale al processore centrale

(11)

Gestione di cause di INT multiple

R1 R2

Rn

REGISTRO delle INT

M1 M2

Mn

MASCHERA delle INT

Introduciamo il concetto di registro delle interruzioni e di registro maschera delle interruzioni

il registro delle interruzioni consente di tener conto di

interruzioni multiple e di introdurre un concetto di INT a diversa

priorità il registro maschera consente di abilitare/ disabilitare individualmente le cause di INT L’introduzione di un

registro delle INT ci

consente anche di

comprendere il concetto di

(12)

Servizio di una INT: HW vs SW

Il concetto di servizio di una INT implica dunque:

n  Salvataggio dello stato

n  Riconoscimento della

causa

n  Esecuzione delle

azioni connesse alla causa

Il Sistema delle Interruzioni 12

In generale si parla di Interrupt Service Routine (ISR) in riferimento alle routine software che si

occupano dell’esecuzione delle azioni corrispondenti alla causa di interruzione

Queste azioni possono ovviamente variare in dipendenza delle modifiche hardware che vengono introdotte nel sistema.

Conseguentemente occorre stabilire un

opportuno compromesso fra quanto viene svolto mediante l’uso di hardware specifico e quanto viene fatto in software dalla ISR.

1

2

(13)

Servizio di una INT: HW minimo

o

Il minimo di hw

ipotizzabile deve

consentire:

n  Il salvataggio automatico del PC n  Il passaggio del

controllo ad una ISR di tipo generale che provvede al

salvataggio dello stato della computazione

n  E durante questo

salvataggio la

disabilitazione delle INT

Introduciamo allora un apposito registro SAVE_PC e ipotizziamo che la ISR generale venga memorizzata in una posizione fissa di memoria (per esempio a partire dall’indirizzo 0), dunque: PC -> SAVE_PC AG <- 0 PC <- 0 qt. viene fatto in HW! Chiamiamolo “passa il controllo alla ISR”

Ritorno al normale ciclo di esecuzione delle istruzioni per

(14)

Servizio di una INT: HW minimo (2)

Cosa deve fare la ISR?

Hp 1(Situazione semplice ): INT non interrompibili

passa controllo a ISR (PC -> SAVE_PC, AG = 0, PC = 0)

n  AG = 0 (disabilita riconoscimento INT)

n  Salva lo stato

n  Individua le cause di INT (leggi Registro INT)

n  Seleziona la causa prioritaria

n  Servi causa

n  se ci sono altre cause da servire torna a (1)

n  Ripristina stato

n  AG = 1 (riabilita riconoscimento INT)

restituisci il controllo (PC <- SAVE_PC)

Il Sistema delle Interruzioni 14

(15)

Servizio di una INT: HW minimo (3)

Hp 2 (situazione complessa): INT interrompibili

passa controllo a ISR (PC -> SAVE_PC, AG = 0, PC = 0)

Salva lo stato in uno stack

acquisisci cause di INT e unisci con le cause in attesa Seleziona la causa prioritaria

Se la priorità della nuova INT è più bassa della priorità corrente ripristina stato

altrimenti

salva priorità corrente nello stack

aggiorna priorità corrente (diventa quella della nuova INT prioritaria)

AG = 1

Prosegui servizio INT, se sopraggiungono altre INT torna a (1) terminato servizio INT corrente poni AG = 0

ripristina priorità corrente ripristina stato

se ci sono ancora INT da servire torna a (2)

altrimenti

restituisci controllo (PC <- SAVE_PC)

(2) Registri 1 Registri 2 Registri i prior_int1 prior_int2 prior_inti (1)

(16)

HW minimo vs Efficienza

o  Nello schema appena visto si evidenzia un notevole problema

di efficienza

o  Perché il tutto funzioni occorre che la frequenza delle INT sia

inferiore al tempo di servizio medio

o  Con l’approccio hw minimo sono costretto a gestire in sw

anche l’individuazione della causa di interruzione e la valutazione della sua priorità

o  In breve: mi interrompo anche quando non dovrei (il

programma in corso viene interrotto anche da INT a priorità più

bassa) e tengo disabilitato il sistema delle INT troppo spesso e troppo a lungo

quindi

o  L’ipotesi di HW minimo DEVE MORIRE

16 Il Sistema delle Interruzioni

(17)

Salvataggio dello stato via HW

o

Possiamo pensare di introdurre una duplicazione

completa dei registri componenti lo stato e di affidare

all’HW il riconoscimento del livello di priorità anche

mentre AG = 1

o

Introduciamo un registro

L

ivello di

P

riorità

C

orrente

(18)

Il Sistema delle Interruzioni 18

Questo schema evidenzia in che modo l’HW calcola e tiene conto della priorità nell’HP di salvataggio completo dello stato via HW

Due Ipotesi fondamentali:

1) Non esiste più una sola ISR ma tante ISR associate alle diverse cause

2) la priorità delle ISR viene associata al loro INDIRIZZO R1 R2 Rn M1 M2 Mn INTFF AG al processore centrale LPC Rete di Priorità α BUS indirizzi Indirizzo ISR comparatore Registro LivelloPriorità Corrente

(19)

Cosa rimane da fare in SW?

o  Con le modifiche introdotte abbiamo sostanzialmente creato

una ISR a molteplici entry-point

o  Il generico ramo di questa ISRi dovrà effettuare le seguenti

operazioni:

Push LPC salva priorità corrente

SET LPC istituisci nuova priorità

AG =1 abilita INT

servi causa_i 1

servi causa_i 2 servi la specifica causa

servi causa_i n

AG = 0; Ri = 0 disabilita INT; INT i servita

Pop LPC ripristina priorità

(20)

Un metodo diverse soluzioni

20

Tutto quanto detto può essere realizzato in una logica aggiuntiva del processore o mediante apposite interfacce di gestione delle INT

Approccio Intel

Approccio Motorola

Sviluppo un Chipset di supporto che svolge le funzioni in questione

Integro le funzioni all’interno del microprocessore

(21)

Un metodo, diverse soluzioni: l

8086

o  L’8086 dispone di 3 piedini per governare il processo delle INT e

distingue tra:

n  INT Interruzioni mascherabili

n  NMI Interruzioni NON mascherabili

n  INTA Interrupt Acknoledge

o  Inoltre nella Program Status Word del processore vi sono due bit di flag

(IF - Interrupt Flag e TF - Trap flag) che consentono di distinguere tra INT interne ed INT esterne

o  In ogni caso le azioni che conseguono ad una INT sono le stesse:

n  Push PSW, CS, IP n  Stabilisci il tipo di INT n  Resetta TF ed IF

n  IP <- MEM[4*N]; CS <- MEM[4*N+2] con N compreso in [0, 255]

o  Le due parole a 16 bit contenenti IP e CS vengono dette Puntatore di INT o Vettore di INT ed il sistema delle INT si dice “vettorizzato

(22)

Un metodo, diverse soluzioni: l

8086(2)

o  IF Interrupt flag

n  controlla gli eventi esterni di

tipo mascherabile o  TF Trap flag

n  Controlla i single-step interrupt

o  Istruzioni per la gestione delle INT software

n  INT (sottointeso type 3)

n  INT0 (solo per Overflow)

n  INT Type (vettore delle INT

4*Type)

o  Gli Interrupt software non sono filtrati dal bit IF

Il Sistema delle Interruzioni 22

IP per tipo 0 CS per tipo 0 IP per tipo 1 CS per tipo 1 IP per tipo 2 CS per tipo 2 00000 00004 00008 Vettore 0 Vettore 1 Vettore 2

Riservato per errori di divisione

Riservato per TRAP

Riservato per NMI

00400 0000C

000010 00014

Riservato per INT Type ed eventi esterni

mascherabili Riservato per INT senza tipo

Riservato per Overflow

Nota:

Osserviamo che per gestire gli eventi esterni l’approccio Intel costringe ad utilizzare dispositivi esterni per gestire i livelli di priorità

(23)

Un metodo, diverse soluzioni: l

8259A

BUS

CPU

ISR Priority IRR

ICW 1 (chip control) ICW 2 (type)

ICW 3 (slave control) ICW 4 (mode) OCW 1 (IMR) OCW 2 OCW 3 Cas 0 Cas 1 Cas 2 IR 0 IR 1 IR 2 IR 3 IR 4 IR 5 IR 6 IR 7 SP/EN D7-D0 Address decoder A0 CS ICW: Initialization Command Word OCW: Operation Command Word

Questo chip consente di gestire

direttamente fino a 8 richieste oppure può pilotare in cascata fino ad 8 8259A per un totale di 64 Interrupt requests

INTA IORC IOWC

(24)

Un metodo, diverse soluzioni: il 68000

o  La soluzione Motorola prevede

invece di dotare il

microprocessore di un Interrupt

Request Bus

o  Il processore accetta la richiesta

solo se l’IPL applicato è maggiore del PPL corrente

o  Anche stavolta c’è una Interrupt

Sequence:

1) Salva il PC e SR sullo stack di supervisore

2) PPL <- IPL 3) S <- 1

4) PC <- f(IPL) vettore delle INT

24 CPU Motorola 68000 IPL 2 IPL 1 IPL 0 I2 I1 I0 PPL

Processor Priority Level

IPL

Interrupt-request Priority Level SR - Status Register

Il punto 4 merita qualche chiarimento

(25)

Un metodo, diverse soluzioni:il 68000 (2)

o  Nel General Mode la CPU legge un vettore di interruzione dal suo bus dati

o  Nell’Autovector Mode la CPU genera internamente il vettore delle INT

o  Quindi l’Autovector consente di gestire in maniera semplice 7 differenti interrupt vettorizzati con

l’aggiunta di un HW veramente banale

o  Anche il 68000 possiede il concetto di interrupt sw con l’istruzione TRAP #N (N compreso [0, 15])

CPU Motorola 68000

IPL

Interrupt Selection Logic

8 bit Latch VPA D0 … D7 Priority Encoder 1 2 … 7 1 2 … … 192 3 bit Latch Interrupt ACK Interrupt Request (general mode) Interrupt Request (Autovector mode) IPL = 0 -> No INT IPL = 7 -> NMI Nota: a causa dell’assenza di un PIN apposito la gestione dell’NMI deve essere edge-triggered pena il malfunzionamento

Riferimenti

Documenti correlati

LICEO DELLE SCIENZE UMANE Opzione Economico-Sociale.

Le Organizzazioni Sindacali valutano positivamente i lavori del Tavolo nazionale se lo stesso viene orientato al raggiungimento di tale obiettivo; per tale motivo, e per

• I Capi di Governo dei paesi del Comitato Direttivo saranno invitati a contribuire alla definizione di una dichiarazione politica in formato video, a cui contribuiranno anche le OSC.

A causa della crisi da coronavirus, il settore ricettivo deve essere più competitivo che mai in termini di prezzi per poter compet- ere con i suoi vicini.. Nel 2021 il

interrogazione definisce la priorità nella gestione delle interruzioni.. 2) Consentire che il servizio di una interruzione possa essere a sua volta interrotto da dispositivi

avvisare direttamente, nei casi ritenuti più gravi (per assenze, ritardi, rendimento scolastico carente) telefonicamente o per iscritto la famiglia dei ragazzi;

disoccupazione  giovanile,  percorsi  formativi  e  abbandoni  scolastici:  rispetto  a  questo  ambito  si  prevede  la  realizzazione,  in  accordo  con  le 

✔ Il rumore portuale per la complessità e numerosità delle sorgenti necessità la realizzazione di campagne di misura che siano in grado di:. ✔ Identificare le sorgenti spazialmente