25
Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Embed Size (px)

Citation preview

Page 1: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 1

Sistemi Elettronici Programmabili

Le periferiche

Page 2: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 2

Periferiche

Il processore scambia informazioni con le periferiche attraverso dei registri. Tipicamente:

• Control REGister;• Status REGister;• Data REGister;

Questi registri sono generalmente “MAPPATI IN MEMORIA” ossia sono visti come locazioni di memoria nello spazio di indirizzamento

Periph

Interface

CPU

Periph

Interface

Periph

Interface

Periph

Interface

Data Bus

Address Bus

Control Bus

SR

EG

CR

EG

DR

EG

Page 3: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 3

Costruzione dei comandiNella configurazione minima la CPU deve avere 3 piedini che indicano:1. se l’operazione è verso la memoria o le periferiche2. se si tratta di un’operazione di lettura3. se si tratta di un’operazione di scrittura

Attraverso il BUS indirizzi si identifica la locazione di memoria o la periferica interessata nell’operazione (periferica mappata in memoria)

Esempio di periferica con 2 porte di I/O

Page 4: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 4

Gestione delle PerifericheLe 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 servizioE una tecnica che esclude la CPU dalla gestione,il DMA attraverso il quale si stabilisce

un collegamento diretto tra memoria e dispositivo

PollingInterrupt

Periph

CPU

Periph Periph Periph

INT2

INT1

INT0

INT

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.

Questo approccio risulta assai poco efficiente, comportando un grosso spreco di tempo da parte della CPU.

Ha il vantaggio di non richiedere hardware dedicato.

La gestione delle periferiche è SINCRONA al programma. Ossia è il programmatore a decidere quando servire la periferica.

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.

Page 5: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 5

Porta d’ingresso/uscitaComponenti standard per porte di I/O

74xx244 = 8 Buffer tristate

74xx374 = 8 FF-D con uscita in tristate

Page 6: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 6

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

Page 7: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 7

Esempio: collegamento con stampanteInterfaccia 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

Page 8: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 8

Esempio: collegamento con stampante

Temporizzazione delle attività

1. Sincrona rispetto all’esecuzione del programma (Polling)

2. Asincrona rispetto all’esecuzione del programma (Interrupt)

3. Indipendente dall’esecuzione del programma (DMA)

Page 9: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 9

PollingCollegamento 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

Page 10: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 10

Polling: esecuzioneE’ 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

Page 11: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 11

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

Page 12: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 12

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)

Page 13: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 13

Interfaccia per InterruptInterfaccia d’uscita modificata per Interrupt

L’interrupt viene generato quando si abbassa il segnale DAC

Page 14: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 14

Collegamento di più perifericheSingola 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

Page 15: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 15

Collegamento di più periferiche

Linee di interrupt multiple

• Ogni periferica ha la sua linea di interrupt dedicata

Page 16: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 16

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

Page 17: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 17

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

Page 18: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 18

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.

Page 19: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 19

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.

Page 20: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 20

Gestione InterruptDato 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)

Page 21: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 21

Controllo da ProgrammaUna 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.

Page 22: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 22

Interrupt VectorNella 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.

CPU

IRQi

IRQ1

IRQ0

INT

IRQN

InterruptManager

AddressLogicADD_H(IRQ0 HDLR)

ADD_L(IRQ0 HDLR)

ADD_H(IRQ1 HDLR)

ADD_L(IRQ1 HDLR)

ADD_H(IRQi HDLR)

ADD_L(IRQi HDLR)

ADD_H(IRQN HDLR)

ADD_L(IRQN HDLR)

IRQ1 HDLR

IRQi HDLR

RTI

RTI

PC

PC

Inte

rrup

t Han

dler

Inte

rrup

t Vec

tor

Memory

Page 23: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 23

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

Page 24: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 24

Trasferimenti singoli e burst

Trasferimento singolo

Viene trasferito un byte per ogni DMAREQ

Trasferimento a burst

Viene trasferito un pacchetto di byte per ogni

DMAREQLa dimensione del

pacchetto può essere fissa o variabile

Page 25: Sistemi Elettronici Programmabili: Le periferiche 5 - 1 Sistemi Elettronici Programmabili Le periferiche

Sistemi Elettronici Programmabili: Le periferiche5 - 25

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