© 2001 - William Fornaciari
CEFRIEL
Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione
Politecnico di Milano
Tecniche di gestione dell’I/O
Docente William Fornaciari Politecnico di Milano
{fornacia, brandole}@elet.polimi.it www.elet.polimi.it/~fornacia
Ottobre 2001
Sommario
Richiami sulle periferiche Definizione del problema Controllo di programma Interruzione
Direct Memory Access (DMA)
Tecniche di Interfacciamento - 3 - © 2001 - William Fornaciari
Richiami sulle periferiche
Memory mapping: condivisione dello spazio di I/O con la
memoria
Possibilità di usare le stesse istruzioni assembler per accedere a dispositivo di I/O o memoria
Se un dispositivo di I/O trova sul bus indirizzi il proprio indentificativo, allora risponde ai segnali che riceve sul bus di controllo
Gli eventuali dati da scambiare transiteranno sul bus dati
Dispositivi di I/O: Interfaccia
Address Bus
Data Bus Control Bus
I/O Device Interface
Address Decoder Control Logic Status and Data Registers
Un dispositivo di I/O generico necessita di una
interfaccia per poter accedere al BUS
Tecniche di Interfacciamento - 5 - © 2001 - William Fornaciari
Le esigenze
Scambio informazioni con il mondo esterno
Dispositivo Azioni Partner Data Rate (KB/sec)
Keyboard Input Umano 0.01
Mouse Input Umano 0.02
Line Printer Output Umano 1
Floppy disk Storage Macchina 50
Laser Printer Output Umano 100
Optical Disk Storage Macchina 500
Magnetic Disk Storage Macchina 5 000
Network-LAN Input/Output Macchina 20 – 1 000 Graphics Display Output Umano 30 000
Le esigenze
Necessità di bilanciare costo/prestazioni Parametri di valutazione
tempo di reazione
velocità di trasferimento dati efficienza nell’uso della CPU complessità, flessibità e costo Domande
come sincronizzare processore con periferica come trasferire i dati
come raggiungere adeguate velocità senza sovraccaricare il
processore
Tecniche di Interfacciamento - 7 - © 2001 - William Fornaciari
Tecniche di base
Complessità Costo
Prestazioni
Sincronizzazione SW HW HW
Trasferimento SW SW HW
Sw: costoso da sviluppare, economico da riprodurre, elaborazioni flessibili, articolate ma lente
Hw: costo di realizzazione e collaudo di ogni esemplare, elaborazioni veloci, semplici ma rigide
Controllo di
programma Interruzione DMA
Controllo di programma
Il processore si occupa di tutte le attività
interroga periodicamente
le periferiche (polling) per capire se vi sono dati da leggere
o è possibile scrivere
i dati vengono scambiati tramite una porta di lettura/scrittura
la sincronizzazione usa registri di controllo delle porte
di lettura/scrittura (flag verificati e re-inizializzati a termine operazione)
flag P1
flag
Pn routine
nroutine
1Tecniche di Interfacciamento - 9 - © 2001 - William Fornaciari
Controllo di programma
Vantaggi semplicità flessibilità
basso costo (se il processore è economico) Svantaggi
scarso sfruttamento della CPU soprattutto in caso di eventi sporadici e periferiche lente difficile introdurre concetti di urgenza latenze di risposta a volte notevoli possibile influenza del carico di lavoro della CPU
Interruzione
Meccanismo base
La periferica prende l’iniziativa di segnalare al processore la sua disponibilità per operazione di I/O (INTREQ)
Il processore segnala (INTACK) l’accettazione della richiesta (non necessariamente subito)
Il processore interrompe il programma e salta ad eseguire una routine di servizio (ISR), salvando lo stato della computazione (PC, Status Reg, Registri)
Terminata la ISR, tramite istruzione apposita si ritorna al punto in cui il programma era stato interrotto
Vantaggi
Elimino test inutili dei flag, utile per eventi sporadici
Interruzioni eseguite in modo trasparente rispetto a programmi
Tecniche di Interfacciamento - 11 - © 2001 - William Fornaciari
Interruzione: problemi di gestione
Il salvataggio del contesto può coinvolgere
la memoria, provocando ritardi nell’esecuzione della ISR (latenza di interruzione)
Tempo limite per servire ISR (se non si intende ignorarla) Identificazione della periferica e attivazione della relativa ISR
Possibilità di avere più richieste pendenti, concetto di priorità
Possibilità di ricevere segnali di interruzione durante l’esecuzione di una ISR
Interruzione: accettazione
Il processore termina sempre l’istruzione corrente prima di accettare interruzione
Di norma le interruzioni vengono disabilitate in modo automatico all’inizio delle ISR, è compito del
programmatore riabilitarle
I processori consentono di abilitare o disabilitare (mascherare) selettivamente le singole cause di interruzione
Spesso esistono interruzioni non mascherabili (NMI)
destinati a gestire eventi che richiedono bassa latenza (es.
errore di parità memoria)
Tecniche di Interfacciamento - 13 - © 2001 - William Fornaciari
Tecniche per identificare le ISR
Salto a indirizzo fisso
il segnale INT è unico per tutte le periferiche all’inizio della ISR vengono scanditi i registri
di controllo delle periferiche (polling) per identificare quella che ha sollevato INT ed eseguire l’appropriato codice di servizio
semplice, economica (poco hw), problema latenza
Segnali multipli di interruzione
ogni periferica dispone di una proprio INT, cui è associato un indirizzo specifico di memoria che contiene la ISR
complicata struttura dei bus, usabile solo con limitato numero di periferiche
•Tecniche per identificare le ISR
Interruzione vettorizzata
– il segnale INT è unico, ma ogni periferica si auto-identifica inviando sul bus dati
un codice (vettore di interruzione)
– il vettore di interruzione viene usato come indice di una tabella contenente
gli indirizzi delle varie ISR – tecnica efficiente, flessibile
ma relativamente costosa
Tecniche di Interfacciamento - 15 - © 2001 - William Fornaciari
Politiche di priorità per interruzioni multiple
Nessuna politica
ogni ISR viene eseguita a interruzioni disabilitate durante una ISR le altre rimangono pendenti
Schema con priorità
ogni ISR ha un livello di priorità (0, 1, …)
una ISR associata a INTREQ di livello h può essere interrotto solo da una INTREQ di livello k superiore (k ≤h)
l’associazione fra INTREQ e priorità è di norma (anche se non necessariamente) statica, decisa cioè in fase di
configurazione della macchina
Processore Periferica
(priorità 0)
Periferica (priorità 1)
Periferica (priorità n) INTREQ
INTACK
INTREQ INTREQ INTREQ INTREQ
INTACK INTACK
Ogni periferica può sollevare INTREQ se e solo se riceve INTACK da quella che la precede
La periferica servita non solleva INTACK finché non è terminata la sua ISR
Priorità cablata (daisy - chain)
Tecniche di Interfacciamento - 17 - © 2001 - William Fornaciari
Priorità con Interrupt Controller
Controllore di Interruzione
(Interrupt Controller)
BUS del Calcolatore (Indirizzi, Dati e Controllo) Unità Funzionali
Porte BUS
dati indirizzi
controllo Processore
dati indirizzi
controllo
INTREQ INTACK PFC Read/Write
INTREQ INTACK PFC Read/Write
Tastiera dati
indirizzi
controllo
PFC Read/Write INTREQ1 altre periferiche
1 2 ... 8
Un dispositivo riceve le richieste dalle periferiche e le smista con l’opportuna priorità
In controllore deve essere configurato da parte del processore
Direct Memory Access
Esistono dispositivi, come gli HD,
che richiedono trasferimenti di grosse moli di dati contigui entro tempi limiti stringenti
La latenza delle interruzioni e l’intrinseca lentezza della gestione sw richiedono nuove strategie in gradi di interfacciare direttamente
la memoria con i dispositivi di I/O
Durante i trasferimenti il processore perde il ruolo di Master a favore del DMA Controller (DMAC), che genera tutti gli indirizzi e segnali per la gestione dei bus
Il DMAC è programmato dal processore
Tecniche di Interfacciamento - 19 - © 2001 - William Fornaciari
DMA: funzionamento
Quando una periferica ha pronto un blocco di dati da scrivere in memoria invia al DMAC una DMA request Quando può il DMAC accetta la richiesta smistandola verso il micro come segnale di richiesta di bus (BUSREQ)
Il processore cede il ruolo di master del bus al DMAC, disattivano un segnale BUSBUSY
Il DMAC prende il controllo del bus, rialzando BUSBUSY Il DMAC trasferisce i dati dalla periferica verso
la memoria, al termine disattiva BUSBUSY
e segnale al processore il termine dell’operazione tramite interruzione
DMAC: struttura interna
indirizzo base memoria
lunghezza porta periferica
32 1
32 1
16 1
controllo
16 1
unità di controllo
dato
8 1
BUS del Calcolatore
Ind base: indirizzo iniziale della memoria ove trasferire il blocco dati
porta perif.: indirizzo porta periferica ove leggere/scrivere i dati da trasferire
lunghezza: dimensione del blocco dati controllo: registro con campi per codici errore, abilitazione DMA, fine DMA…
dato: registro tampone, se presente, usato per i traferimenti
ad ogni trasferimento, automaticamente si incrementa l’ind base e decrementa lunghezza
la presenza contemporanea di più DMAC richiede un sistema che funga da arbitro per le richieste al bus
Tecniche di Interfacciamento - 21 - © 2001 - William Fornaciari
Confronti conclusivi
Il DMA garantisce elevate prestazioni a un costo elevato Il DMA può allungare in modo impredicibile i tempi di esecuzione dei programmi (talvolta in sistemi in tempo reale viene disabilitato)
Meccanismi Tempo di
risposta Efficienza Costo Complessità Controllo di Programma 10µsec Scarsa Basso Bassa (hw) Varia (sw)
Interrupt 50µsec Discreta Medio Media (hw) Media (sw)
DMA 2µsec Ottima Alto Alta (hw) Media (sw)