Sistemi Elettronici
Programmabili
Le periferiche
Sistemi Elettronici Programmabili: Le periferiche
5-1
Periph
Periph
Interface
Interface
Interface
Interface
CPU
DREG
Periph
CREG
Periph
SREG
Periferiche
Il processore scambia informazioni con le periferiche attraverso dei
registri. Tipicamente:
• Control REGister;
• Status REGister;
• Data REGister;
Data Bus
Address Bus
Questi registri sono generalmente “MAPPATI IN MEMORIA” ossia
sono visti come locazioni di memoria nello spazio di
indirizzamento
Sistemi Elettronici Programmabili: Le periferiche
Control Bus
5-2
Costruzione dei comandi
Nella configurazione minima la CPU deve
avere 3 piedini che indicano:
1. se l’operazione è verso la memoria o le
periferiche
2. se si tratta di un’operazione di lettura
3. se si tratta di un’operazione di scrittura
Esempio di periferica
con 2 porte di I/O
Attraverso il BUS
indirizzi si identifica la
locazione di memoria o
la periferica interessata
nell’operazione
(periferica mappata in
memoria)
Sistemi Elettronici Programmabili: Le periferiche
5-3
Gestione delle Periferiche
Le Periferiche sono generalmente dei dispositivi Slave che dipendono dal Processore che
deve quindi provvedere alla loro gestione.
Questa funzione viene espletata principalmente con due tecniche gestite dalla CPU:
1. Polling in cui la gestione è demandata al programma;
2. Interrupt attraverso il quale la periferica può richiedere servizio
E una tecnica che esclude la CPU dalla gestione,il DMA attraverso il quale si stabilisce
un collegamento diretto tra memoria e dispositivo
Interrupt
Polling
Nel controllo da programma, la CPU
interroga periodicamente la porta della
periferica di interesse, in modo da
tenere sotto controllo lo stato della
stessa.
Quando la periferica è disponibile a
ricevere o trasmettere un dato, la CPU
esegue le istruzioni necessarie.
Nella gestione mediante Interrupt è la periferica stessa a richiedere
servizio mediante un apposito segnale.
Il processore non deve interrogare periodicamente le periferiche.
La gestione delle periferiche è ASINCRONA al programma nel
senso che il programmatore non può prevedere quando ci sarà una
richiesta di servizio.
INT0
INT1
Questo approccio risulta assai poco
efficiente, comportando un grosso
spreco di tempo da parte della CPU.
Ha il vantaggio di non richiedere
hardware dedicato.
INT
INT2
CPU
Periph
Periph
Periph
Periph
La gestione delle periferiche è
SINCRONA al programma. Ossia è il
programmatore a decidere quando
servire la periferica.
Sistemi Elettronici Programmabili: Le periferiche
5-4
Porta d’ingresso/uscita
Componenti standard per porte di I/O
74xx244 = 8 Buffer tristate
74xx374 = 8 FF-D con
uscita in tristate
Sistemi Elettronici Programmabili: Le periferiche
5-5
Esempio: collegamento con stampante
• Il segnale di dato valido (DAV) segnala alla
stampante la presenza di un dato sul BUS
• Il segnale di dato accettato (DAC) segnala alla
CPU che il dato è stato acquisito dalla
stampante, che è pronta a ricevere il successivo
Sistemi Elettronici Programmabili: Le periferiche
5-6
Esempio: collegamento con stampante
Interfaccia d’uscita
Comunicazione monodirezionale sui dati (semplificazione)
Il segnale DAC genera un 1 sul bit 0 del DB
SEL abilitato solo se l’indirizzo corrisponde
a quello assegnato al dispositivo
Sistemi Elettronici Programmabili: Le periferiche
5-7
Esempio: collegamento con stampante
Temporizzazione delle attività
1.
2.
3.
Sincrona rispetto all’esecuzione del programma
(Polling)
Asincrona rispetto all’esecuzione del programma
(Interrupt)
Indipendente dall’esecuzione del programma (DMA)
Sistemi Elettronici Programmabili: Le periferiche
5-8
Polling
Collegamento delle
periferiche con Polling
• No Hardware aggiuntivo
• No controllo aggiuntivo
• Controllo I/O sincrono con
programma
• Ottimizzazione del codice
• Grande flessibilità
• Spreco di tempo di CPU per
interrogazione periferiche
Sistemi Elettronici Programmabili: Le periferiche
5-9
Polling: esecuzione
E’ previsto l’accesso alle periferiche in
determinati punti del programma
Si controlla se la periferica 1 ha richiesto il
servizio e nel caso si esegue la routine di
pertinenza
Si controlla se la periferica 2 ha richiesto il
servizio e nel caso si esegue la routine di
pertinenza
…
Se le periferiche richiedono
sporadicamente il servizio si ha un uso
non ottimale delle risorse di calcolo
Sistemi Elettronici Programmabili: Le periferiche
5 - 10
Interrupt
Modalità asincrona rispetto al programma
• Non si conosce il momento in cui la routine di
servizio di una certa periferica verrà eseguita
• Necessità di salvare lo stato della CPU
(necessità dello stack e spreco di cicli macchina)
• Necessità di hardware aggiuntivo (più o meno
complicato)
• Flessibilità
• Non si perde tempo nell’interrogazione
ciclica delle periferiche
Sistemi Elettronici Programmabili: Le periferiche
5 - 11
Collegamento con Interrupt
• La CPU controlla lo stato di IINTR
• Il registro IE abilita gli Interrupt (può
essere controllato via software)
• Tutti gli interrupt possono
essere mascherati tramite il
registro IE (interrupt enable)
tranne i NMI (interrupt non
mascherabili)
Sistemi Elettronici Programmabili: Le periferiche
5 - 12
Interfaccia per Interrupt
Interfaccia d’uscita modificata per Interrupt
L’interrupt viene generato quando si abbassa il segnale DAC
Sistemi Elettronici Programmabili: Le periferiche
5 - 13
Collegamento di più periferiche
Singola linea di interrupt
• Gli interrupt sono collegati in wired-OR (open collector)
• La porta ISR (Interrupt Status Register) contiene l’informazione
relativa a quale dispositivo ha generato l’interrupt
Sistemi Elettronici Programmabili: Le periferiche
5 - 14
Collegamento di più periferiche
Linee di interrupt multiple
• Ogni periferica ha la sua linea di interrupt
dedicata
Sistemi Elettronici Programmabili: Le periferiche
5 - 15
Gestione delle priorità (HW)
• L’arbitro stabilisce qual’è l’interrupt a priorità più alta
mettendo in uscita il codice corrispondente
• Viene quindi eseguita la routine relativa all’interrupt
selezionato
Sistemi Elettronici Programmabili: Le periferiche
5 - 16
Esecuzione del Ciclo di Interrupt
• Il segnale INTA (interrupt acknoledgement) all’uscita
della CPU indica che si sta servendo un’interruzione
• La logica esterna mette sul bus l’identificativo
dell’interruzione
• La richiesta d’interruzione può essere o meno disattivata
automaticamente nel corso dell’interruzione
Sistemi Elettronici Programmabili: Le periferiche
5 - 17
Salvataggio del Contesto
Tutti i sistemi di interruzioni richiedono, come minimo, il
salvataggio del Program Counter (PC).
Molti processori salvano in modo automatico molti dei registri
interni. In questo modo la Routine di servizio può alterare i
registri che verranno ripristinati, in modo automatico e molto
veloce, con il contenuto originario prima che il controllo torni al
programma principale.
In altri casi, deve essere il programmatore a mettere in salvo
(e.s. nello Stack) il contenuto dei registri che verranno usati
dalla routine di servizio e a ripristinarli al suo termine.
Sistemi Elettronici Programmabili: Le periferiche
5 - 18
Routine di servizio
La routine di servizio di una interruzione è semplicemente un
sottoprogramma che viene attivato dalla CPU, quando questa
intende servire la richiesta di interruzione prodotta da una
periferica.
Il sottoprogramma contiene tutte le istruzioni necessarie a
gestire la periferica, consentendo lo scambio dei dati con la
CPU.
Al suo termine, una particolare istruzione (e.s. RTI) provoca il
ripristino del contesto e quindi il ritorno della CPU alle attività
precedenti la richiesta di interruzione.
Sistemi Elettronici Programmabili: Le periferiche
5 - 19
Gestione Interrupt
Dato che le periferiche di un Processore possono essere numerose, si
pongono diversi problemi:
1. riconoscere la periferica che ha richiesto l’interruzione;
2. gestire eventuali richieste simultanee da parte di diverse
periferiche;
3. gestire le interruzioni delle routine di servizio
(interruzioni annidate).
Esistono diverse possibili soluzioni che corrispondono a diverse
organizzazioni del sistema di interruzioni.
Gestione da Programma
Gestione Automatica
(Interrupt Vector)
Sistemi Elettronici Programmabili: Le periferiche
5 - 20
Controllo da Programma
Una possibile soluzione sfrutta un registro di stato delle interruzioni
(ISR), ciascun bit del quale è associato ad una periferica. Una
periferica che richieda una interruzione asserisce al tempo stesso il
proprio bit del registro.
All’arrivo dell’Interrupt la routine di servizio esamina sequenzialmente
i bit di ISR e determina quale periferica ha attivato la richiesta. Di
conseguenza, attiva (e.s. CALL) la subroutine di gestione relativa.
Questa soluzione realizza implicitamente anche un meccanismo di
priorità, in quanto i bit di ISR vengono letti in un ordine fissato e nello
stesso ordine vengono servite eventuali richieste di interruzione
concorrenti.
La gestione di ISR è a carico del programma, che deve disasserire i bit
delle interruzioni servite e le stesse richieste, in modo da evitare loop
pericolosi.
Il metodo è comunque poco efficiente, in quanto la lettura di ISR
richiede un tempo significativo.
Sistemi Elettronici Programmabili: Le periferiche
5 - 21
Interrupt Vector
Nella gestione tramite Interrupt Vector il processore presenta più linee di interruzione (IRQ1, IRQ2, …)
ciascuna dedicata a una periferica (o a un gruppo di periferiche) ed è in grado di attivare in modo
automatico la routine di servizio (Interrupt Handler) associata.
IRQ0
IRQ1
INT
IRQi
IRQN
CPU
Interrupt
Manager
Memory
Address
Logic
PC
ADD_H(IRQ0 HDLR)
ADD_L(IRQ0 HDLR)
ADD_H(IRQ1 HDLR)
ADD_L(IRQ1 HDLR)
RTI
ADD_H(IRQi HDLR)
PC
IRQ1 HDLR
ADD_L(IRQi HDLR)
ADD_H(IRQN HDLR)
Interrupt Vector
Interrupt Handler
IRQi HDLR
ADD_L(IRQN HDLR)
RTI
Sistemi Elettronici Programmabili: Le periferiche
5 - 22
Direct Memory Access (DMA)
• L’accesso diretto alla memoria consente (solo) di scambiare
dati tra una periferica e la RAM senza l’intervento della CPU
(Rigidità)
• Non viene perso del tempo di CPU nello scambio dei dati (la
CPU continua ad eseguire il programma principale fino al
prossimo cache miss)
• Necessita di hardware (complesso) aggiuntivo
Sistemi Elettronici Programmabili: Le periferiche
5 - 23
Trasferimenti singoli e burst
Trasferimento singolo
Viene trasferito un byte
per ogni DMAREQ
Trasferimento a burst
Viene trasferito un
pacchetto di byte per
ogni DMAREQ
La dimensione del
pacchetto può essere
fissa o variabile
Sistemi Elettronici Programmabili: Le periferiche
5 - 24
Controllore di DMA
• Quando c’è una richiesta di DMA il controllore genera una richiesta alla
CPU (DMAREQ)
• La CPU risponde con DMAACK e lascia il controllo del BUS al controllore
di DMA (address BUS e data BUS = Z)
• Il controllore genera gli indirizzi per la memoria
• La CPU continua l’esecuzione del programma principale
Occorre fornire:
1. Indirizzo di partenza
2. Lunghezza del blocco
3. Direzione del trasferimento
Sistemi Elettronici Programmabili: Le periferiche
5 - 25
Scarica

Lucidi_6-Le_periferiche_08