Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
LINK E UNLK LINK.
Stato dello stack prima e dopo Supponiamo che la routine richieda due
Word
variabili locali, entrambe (4 byte in tutto).
UNLK. UNLK Ax
Stato dello stack prima e dopo L’istruzione ripristina in
Ax Ax
il valore puntato da (old_Ax) e
ESEMPI CON LINK/ UNLK
23) SOTTOSISTEMA DI INGRESSO/USCITA (I/O)
Calcolatore: sottosistemi
- Processing Unit)
• Processore o CPU (Central
- • Memoria centrale
- • Sottosistema di input/output (I/O)
Sottosistema di input/output (I/O)
• Periferiche (peripherals) di Ingresso/Uscita, o Input/Output (I/O),
praticamente tutti i componenti esterni all’interazione diretta
processore-memoria.
- Esempi: tastiera, monitor, dispositivi di puntamento, periferiche USB,
disco rigido (memoria di massa), timer, gestore delle interruzioni,
Controllore del Direct Memory Address (DMA), etc etc.
INTERFACCIAMENTO CON I/O
Due approcci per l’interfacciamento tra processore e dispositivi di I/O
- “I/O mapped” I/O: il processore dispone di un’interfaccia indirizzo/dato
separato per l’I/O (es. Intel x86) e i dispositivi sono in uno spazio di
indirizzamento separato e sono presenti istruzioni apposite;
- “memory-mapped” I/O: i dispositivi sono attivati da alcuni specifici
indirizzi, per il processore, gli accessi ai dispositivi di I/O sono visti
come operazioni in memoria (es. M68000)
I/O- mapped I/O
Memory- mapped I/O
Interfaccia della periferica registri;
Tipicamente, l’interfaccia di qualsiasi dispositivo è composta da
locazioni, simili a quelle in memoria, da cui è possibile leggere o su cui è
possibile scrivere. Tre tipi di registri:
- controllo e stato;
registri di
- indirizzo;
registri
- dato.
registri
• Registri Controllo/Stato:
- Controllo: scritti dal processore, determinano mediante opportune
codifiche (diverse da periferica a periferica) cosa il dispositivo deve fare;
- Stato: scritti dalla periferica e letti dal processore, danno la possibilità
al dispositivo di informare il processore circa l’esito delle
operazioni;effettuate;
Indirizzo Dato:
• Registri e hanno lo stesso significato di quelli usati per la
memoria, ma fanno riferimento ad un insieme (tipicamente ridotto) di
locazioni fisicamente presenti nella periferica.
ESEMPIO: TERMINALE
24) Terminale: rappresenta un dispositivo combinato Monitor/Tastiera
console)
(cosiddetta
Osservazione:
- i dati sono scritti uno dopo l’altro sullo stesso indirizzo;
- Il funzionamento del dispositivo garantisce che valori scritti
successivamente sullo stesso indirizzo vengano trasferiti come dati
distinti;
- non
qui l’indirizzo corrisponde fisicamente ad una locazione di
memoria!!
INTERAZIONE CPU- PERIFERICA
• Osservazione:
- CNTRL
controllo/stato
il registro di segnala il fatto che sia stato
premuto il tasto ENTER, alzando il bit più significativo (che
stato);
rappresenta un’informazione di
- per aspettare fino alla pressione del tasto, il programma principale
CNTRL
contiene un ciclo che legge il registro e itera (bloccandosi nel
0.
ciclo) quando il bit di stato è
Polling” controllato da programma”):
• “ (o “I/O tecnica per l’interazione
CPU-periferica in cui la CPU accede ripetutamente ai registri di stato fino a
quando la periferica è pronta (come nell’esempio precedente). Impedisce alla
CPU di fare altro durante l’attesa! La CPU si blocca in quello che si chiama
busy-waiting.
• Alternativa: “Interruzioni” (interrupts), dette anche “eccezioni”
(exceptions); il processore può eseguire altre istruzioni mentre la periferica
lavora. Appena questa è pronta, il processore viene interrotto (tramite
un’opportuna infrastruttura circuitale fornita dal sistema), e passa ad
eseguire la parte di programma che gestisce l’interazione con la periferica.
INTERRUZIONI
GESTIONE DI EVENTI
Ciclo base del processore:
- le istruzioni sono eseguite una dopo l’altra in sequenza;
- eventuali salti spostano l’esecuzione ad una differente sequenza sulla
base di condizioni comunque dipendenti dal programma in esecuzione.
In molti casi, tuttavia, è necessario che il processore esegua una routine
quando si verifica un evento esterno, indipendente dal programma in
esecuzione; l’evento accade in momenti che non sono predicibili da parte del
processore.
Gli eventi esterni sono quasi sempre asincroni; Spesso si presentano con
molto più bassa
frequenza rispetto alla frequenza con la quale il processore
carica ed esegue le istruzioni.
polling I/O controllato da programma),
Nel (o la CPU accede ripetutamente
ai registri di stato fino a quando la periferica è pronta (come nell’esempio del
Terminale); impedisce alla CPU di fare altro durante l’attesa! La CPU si
busy-waiting.
blocca in quello che si chiama
Alternativa: “Interruzioni” (interrupts): dette anche “eccezioni”
(exceptions); segnale
un’interruzione è un mandato direttamente dalla
periferica al processore per interromperne l’esecuzione e lanciare l’esecuzione
di un programma differente. Il processore può eseguire altre istruzioni
mentre la periferica lavora. Appena questa è pronta, il processore viene
interrotto (tramite un’opportuna infrastruttura circuitale fornita
dal sistema), e passa ad eseguire il programma che gestisce l’interazione con
la periferica.
INTERRUZIONI ASINCRONE
Tipicamente (ma non necessariamente) le interruzioni sono innescate da un
evento esterno, ad esempio la pressione di un tasto, e possono quindi
avvenire in qualsasi momento.
- asincrona
L’interruzione è rispetto al programma
L’accettazione di un’interruzione comporta la sospensione del programma in
esecuzione ed il salto ad una routine per la gestione dell’interruzione
ISR).
Service Routine,
(Interrupt
- NON si tratta quindi di un salto o di una chiamata a sottoprogramma
eseguita “consapevolmente” dal programma interrotto.
MODIFICA AL CICLO DI VON-NEUMANN
Come realizzare le interruzioni? Se il ciclo del processore fosse puramente
quello mostrato a destra, sorgerebbero alcuni problemi:
- un’applicazione potrebbe impadronirsi della risorsa CPU senza mai
terminare;
- non ci sarebbe modo di rimuovere forzatamente un’applicazione che
entri per errore in un ciclo infinito;
- Sistema Operativo,
il in generale, avrebbe un controllo limitato sul
Sistema.
La soluzione comunemente adottata consiste nel permettere al “supervisore”
(il Sistema Operativo) di prendere periodicamente il controllo del processore.
Questo avviene esclusivamente nel caso in cui si verifichino eventi
“eccezionali”, di solito asincroni con l’esecuzione del programma
correntemente in corso.
In assenza di tali eventi l’elaborazione procede nella maniera consueta
MODALITA’ DI ESECUZIONE
La presenza di eventi è spesso collegata alla gestione delle funzionalità “di
basso livello” del calcolatore, gestione del disco, periferiche, timer, etc.
Normalmente, i programmi per la gestione di tali funzionalità devono avere
accesso a tutte le caratteristiche del calcolatore, tipicamente è meglio evitare
invece che questo sia concesso ai normali programmi utente.
Molti processori prevedono pertanto (almeno) due modalità:
- Supervisore (accesso pieno alle funzionalità del sistema);
- Utente (accesso limitato alle sole istruzioni di processazione).
cambia modalità di esecuzione
All’accettazione dell’interruzione, la CPU
passando da Utente a Supervisore. stato
La modalità di esecuzione attiva in un certo momento è parte dello del
processore. Tipicamente, in modalità di esecuzione differenti il processore
M68000
stack differenti;
accede anche a ad esempio nel la modalità è indicata
S Registro di Stato
dal bit del (SR); sono presenti due Stack Pointer (A7 e
A7’) usati rispettivamente in modalità Utente e Supervisore.
DRIVER
La modalità di esecuzione Supervisore è normalmente pensata per
l’esecuzione di routine del Sistema Operativo. L’insieme di routine, comprese
le ISR, che gestiscono l’interazione con una particolare periferica viene detto
driver.
Ogni periferica ha il proprio funzionamento e necessita pertanto dei propri
driver; questo è il motivo per cui l’installazione di una nuova periferica
comporta normalmente l’installazione dei corrispondenti driver!
TIPOLOGIE DI INTERRUZIONI
Reset:
- Riporta la macchina in uno stato iniziale noto;
- È generato da condizioni d’errore non recuperabili;
Traps:
- Forniscono un meccanismo controllato di passaggio allo stato
supervisore;
- Sono eventi sincroni (rispetto all’elaborazione);
Interrupts in senso stretto:
- Permettono di gestire richieste di “attenzione” da parte di periferiche
(tipicamente di I/O);
- Sono eventi asincroni (rispetto all’elaborazione).
TRAPS
Generano un’interruzione al termine di ogni istruzione eseguita, o in
corrispondenza di particolari circostanze determinate dal programma; sono
sincrone
pertanto con il programma. debug
Sono usate per consentire l’esecuzione passopasso ed il dei programmi.
T
Nel M68000 sono abilitate dal bit del registro di Stato (SR).
INTERRUZIONI: FUNZIONAMENTO
• Segnale di Interrupt (INT): segnale di interruzione per il processore;
• Ack: segnale
Segnale di di accettazione dell’interruzione:
• ISR (Procedura di Servizio degli Interrupt): Procedura lanciata quando
viene accolto l’interrupt.
• Sequenza di attivazione:
1) la Periferica alza il segnale (INT);
2) il Processore interrompe il programma in esecuzione;
3) la Periferica viene informata che l’interrupt è stato ricevuto (Ack);
4) viene eseguita la procedura (ISR);
5) si ripristina il Programma originale.
SEQUENZA DI ATTIVAZIONE: DETTAGLI
• Esecuzione normale;
• Servizio dell’interruzione:
- Salvataggio del contesto (hardware);
- Identificazione del device;
- Salto all’entry-point della Interrupt Service Routine (ISR);
- Salvataggio del contesto (software);
- Servizio dell’interruzione;
- Ripristino del contesto (software);
- Ripristino del contesto (hardware).
• Ripresa dell’esecuzione normale.
IL SALVATAGGIO DELLO STATO
L’elaborazione eseguita dalla ISR in risposta all’interruzione potrebbe essere
- Risolvere un problema di matematica
- Riassumere un testo
- Tradurre una frase
- E molto altro ancora...
Per termini, condizioni e privacy, visita la relativa pagina.