Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Eccezioni - slides corso, Dispense di Calcolatori Elettronici

Slides su eccezioni corso Calcolatori Elettronici

Tipologia: Dispense

2021/2022

Caricato il 01/09/2022

luciana-silo
luciana-silo 🇮🇹

4.7

(3)

9 documenti

1 / 13

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
1/25 http:\\borghese.di.unimi.it\
A.A. 2013-2014
Interrupt ed Eccezioni
Prof. Alberto Borghese
Dipartimento di Scienze dell’Informazione
Università degli Studi di Milano
Riferimento al Patterson: 4.9 e B.7
2/25 http:\\borghese.di.unimi.it\
A.A. 2013-2014
Sommario
Interrupt ed eccezioni
HW per la gestione delle interruzioni: modifica della CPU multi-
ciclo
SW per la gestione delle interruzioni: esempio di procedura di
risposta
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Anteprima parziale del testo

Scarica Eccezioni - slides corso e più Dispense in PDF di Calcolatori Elettronici solo su Docsity!

A.A. 2013-2014^ 1/25^ http:\borghese.di.unimi.it\

Interrupt ed Eccezioni

Prof. Alberto Borghese

Dipartimento di Scienze dell’Informazione

[email protected]

Università degli Studi di Milano

Riferimento al Patterson: 4.9 e B.

A.A. 2013-2014^ 2/25^ http:\borghese.di.unimi.it\

Sommario

Interrupt ed eccezioni

HW per la gestione delle interruzioni: modifica della CPU multi-

ciclo

SW per la gestione delle interruzioni: esempio di procedura di

risposta

A.A. 2013-2014^ 3/25^ http:\borghese.di.unimi.it\

CPU con pipeline

A.A. 2013-2014^ 4/25^ http:\borghese.di.unimi.it\

Ciclo di esecuzione di un’istruzione

Prelievo istruzione (fase di fetch)

Decodifica

Calcolo

Lettura / scrittura

Write back

Interruzione

(asincrona)

A.A. 2013-2014^ 7/25^ http:\borghese.di.unimi.it\

Interrupt multipli

Interrupt accodati (gestiti come FIFO). Interrupt annidati (gestiti come LIFO).

Cosa suggerite di utilizzare per interrupt esterni? Cosa suggerite di utilizzare per interrupt interni?

Come gestire le code di interruzioni? Il problema sono gli interrupt annidati.

La soluzione è quella di fermare l’esecuzione di interrupt accodati quando occorre servire interrupt che richiedono annidamento.

Meccanismi di gestione di interrupt annidati:

Maschere di interrupt. La maschera di interrupt è una sequenza di bit in cui ogni bit corrisponde ad un livello di interrupt. Gli interrupt di un certo livello possono essere serviti solo se il corrispondente bit della maschera vale 1. E’ legata al programma. MIPS. Piorità di interrupt. Ad ogni tipo di interrupt viene associata una priorità, una priorità è anche associata ai vari stati del processore.

A.A. 2013-2014^ 8/25^ http:\borghese.di.unimi.it\

Sommario

Interrupt ed eccezioni

HW per la gestione delle interruzioni: modifica della CPU multi-

ciclo

SW per la gestione delle interruzioni: esempio di procedura di

risposta

A.A. 2013-2014^ 9/25^ http:\borghese.di.unimi.it\

I registri del coprocessore 0

Insieme di registri a 32 bit denominato coprocessore 0. Molti gestiscono la paginazione della memoria.

Nome del registro

Numero del registro in coprocessore 0

Utilizzo

Bad/Addr 8 Registro contenente l’indirizzo di memoria a cui si è fatto riferimento (cf. “page fault”). Count 9 Timer (MIPS: 10ms). Compare 11 Valore da comparare con un timer. Genera un interrupt.

Status 12 Maschera delle interruzioni e bit di abilitazione. Stato dei diversi livelli di priorità (6 HW e 2 SW). Cause 13 Tipo dell’interruzione e bit delle interruzioni pendenti

EPC 14 Registro contenente l’indirizzo dell’istruzione che ha causato l’interruzione.

A.A. 2013-2014^ 10/25^ http:\borghese.di.unimi.it\

Status register - I

Interrupt mask , memorizzata nei bit 8-15 dello status register. Sono infatti previsti 8 diversi livelli di interrupt (6 interrupt hw e 2 sw). Il bit 8 della maschera di interrupt è relativo all'interrupt sw di livello 0, il bit 10 a quello hw di livello 2 e così via. Un bit a 1 nella maschera di interrupt significa che gli interrupt a quel livello sono abilitati. Vengono disabilitati ad esempio quando bit a priorità più elevata sono già in esecuzione (mascheramento).

SW

HW

A.A. 2013-2014^ 13/25^ http:\borghese.di.unimi.it\

Codici inseriti nel registro causa

0 Interrupt esterno (non si tratta di un’eccezione) 4 Indirizzo errato in una load 5 Indirizzo errato in una store 6 Errore sul bus durante il caricamento di un'istruzione 7 Errore sul bus in fase di trasferimento dati 8 Eccezione generata da syscall 9 Eccezione generata da breakpoint 10 Eccezione generata da istruzione riservata 12 Overflow aritmetico 13 Istruzione non valida.

I codici inseriti nel registro causa sono relativi ad eccezioni (eventi che si verificano all’interno della CPU).

A.A. 2013-2014^ 14/25^ http:\borghese.di.unimi.it\

Strategie di gestione delle eccezioni

Le eccezioni vengono trattate come una forma di hazard sul controllo.

Nel caso si verifichi un’eccezione nella fase di calcolo (overflow ad esempio di add $t2, $t3, $t4) occorre : fare il flush delle istruzioni già nella pipeline caricare l’indirizzo dell’entry point del programma di gestione delle eccezioni.

Flush delle istruzioni in: Fase di fetch Fase di decodifica Fase di calcolo della add (non deve scrivere il risultato = overflow)

A.A. 2013-2014^ 15/25^ http:\borghese.di.unimi.it\

Sommario

Interrupt ed eccezioni

La gestione degli interrupt mediante registro

Modifica della CPU multi-ciclo per la gestione delle eccezioni

Esempio di SW di risposta ad un’eccezione / interrupt.

A.A. 2013-2014^ 16/25^ http:\borghese.di.unimi.it\

Hardware addizionale

Registro EPC: è un registro a 32 bit utilizzato per memorizzare l’indirizzo dell’istruzione coinvolta.

Registro causa: è un registro utilizzato per memorizzare la causa dell’eccezione; in MIPS sono 32 bit:

  • bit 2 = 0 istruzione indefinita.
  • bit 2 = 1 overflow aritmetico.

Segnali di controllo: CausaWrite – scrittura nel registro Causa. CausaInt – Dato per il registro Causa.

Modifiche ai registri di pipeline

Causa ed EPC appartengono al coprocessore 0

A.A. 2013-2014^ 19/25^ http:\borghese.di.unimi.it\

Prima e dopo l’eccezione

0x40 sub $11, $2, $ 0x44 and $12, $2, $ 0x48 or $13, $2, $ 0x4C add $1, $2, $ 0x50 slt $15, $6, $ 0x54 lw $16, 50($7) ...

0x800000180 mfc0 $k0, $13 # Cause register 0x800000184 andi $a0 $a0, 0x3C # Extract ExcCode Field ..... .......

..... EPC -> PC

Cosa succede se si verifica un overflow nell’istruzione di add?

A.A. 2013-2014^ 20/25^ http:\borghese.di.unimi.it\

Esempio

0x40 sub $11, $2, $ 0x44 and $12, $2, $ 0x48 or $13, $2, $ 0x4C add $1, $2, $ 0x800000180 mfc0 $k0, $13 # Cause register 0x800000184 andi $a0 $a0, 0x3C # Extract ExcCode Field ..... ....... Change the value of $2 or $

EPC = EPC- ..... EPC -> PC 0x4C add $1, $2, $ 0x50 slt $15, $6, $ 0x54 lw $16, 50($7) ...

Eccezione sulla add con ripetizione della add stessa

A.A. 2013-2014^ 21/25^ http:\borghese.di.unimi.it\

Organizzazione logica della memoria

Riservata S.O.

Testo

Dati Statici

Dati Dinamici

Stack

4Mbyte

256Mbyte

2 Gbyte

7fffffff 16

Riservata

Max spazio di indirizzamento su 32 bit è di 2^32 = 4Gbyte.

Segmento dati

Segmento testo

8fffffff 16

28 bit ind.

.ktext

A.A. 2013-2014^ 22/25^ http:\borghese.di.unimi.it\

Esempio assembler

Controllo se è un’eccezione. Se è un’eccezione stampo un messaggio.

.ktext 0x80000180 la $s0, save0 # Handler is not re-entrant and can’t use sw $a0, 0($s0) # stack to save $a0, $a1 (data required are sw $a1, 4($s0) # stored in kernel data segment)

Don’t need to save $k0/$k

# First check mfc0 $k0, $13 # Move Cause into $k0 (=$26) in register file andi $a0, $k0, 0x7C # Extract ExcCode field (5 bits) 0x7C = 124 beq $a0, $zero, done # Branch if ExcCode=HW Interrupt (ExcCode=0) # Now diplay mov $a0, $k0 # Move Cause into $a mfc0 $a1, $14 # Move EPC into $a jal print_excp # Print exception error message. Parameters

are in $a0, $a

.kdata save0: .word 0 save1: .word 0

Cause register

A.A. 2013-2014^ 25/25^ http:\borghese.di.unimi.it\

Sommario

Interrupt ed eccezioni

HW per la gestione delle interruzioni: modifica della CPU multi-

ciclo

SW per la gestione delle interruzioni: esempio di procedura di

risposta