Sei sulla pagina 1di 9

Dispense di CALCOLATORI ELETTRONICI 1

Capitolo 5 - GESTIONE DELL’I/O

5.1 – CARATTERISTICHE GENERALI


Le unita’ di I/O (o unita’ periferiche o semplicemente “periferiche”) consentono di collegare il
calcolatore (in effetti la Mp) con il mondo esterno (persone, dispositivi). La fig. 5-1 riprende lo
schema di principio dei collegamenti tra le componenti di un calcolatore immaginando di
avere un bus come supporto fisico delle interconnessioni.

CPU I/O

MEMORIA

Figura 5-1. Collegamento tipico tra le componenti di un calcolatore

Esistono numerosi tipi di unita’ di I/O con caratteristiche molto varie. La tabella che segue
riporta alcuni dei tipi oggi piu’ comuni e fissa l’attenzione su di un parametro molto
importante: la velocita’ di trasferimento delle informazioni, espressa in byte/s.

VELOCITA’ DI TRASFERIMENTO (byte/s)


TIPO DI UNITA’ FUNZIONE SVOLTA
Ingresso Uscita
Tastiera 10 ---
Macchina da scrivere --- 10
Mouse 20 ---
Video --- 2000
Stampante per PC (ad aghi) --- 30-60
Stampante per PC (laser) --- 320
4 pagine/1’ da 60 righe di 80 caratteri
Stampante di mainframe (a linee) --- 4000
2000 righe/1’ da 120 caratteri
Stampante di mainframe (laser) --- 30000
15000 righe/1’ da 120 caratteri
Lettore/scrittore di caratteri magnetici 3000 3000
Esempi: CMC7, OCR-A
Scanner (per testo) 3000 ---
Dischetto (floppy disk) 60 x 103 60 x 103
Nastro magnetico 2 x 106 2 x 106
Disco magnetico 2 x 106 2 x 106

Capitolo 5 5.1
Dispense di CALCOLATORI ELETTRONICI 1

E’ bene rilevare che alcuni dispositivi sono in grado di compiere o solo operazioni di input o
solo operazioni di output ed altri, quelli “magnetici”, sia le une che le altre. Inoltre le velocita’
di trasferimento sono molto inferiori a quelle possibili all’interno delle altre componenti
(unita’ centrale, memoria) e quindi l’uso delle unita’ di I/O comporta problemi di
sincronizzazione ed adattamento della velocita’. Infine le unita’ di I/O devono fronteggiare il
problema della conversione tra rappresentazione interna ed esterna dell’informazione
(operazioni di codifica e decodifica).

Per indirizzare le unita’ di I/O, come gia’ decritto nel paragrafo 1.6, l’unita’ centrale ricorre
ad una delle due seguenti tecniche:
1. Riservare una porzione dello spazio di indirizzamento in memoria ai dispositivi di I/O, in
modo che ogni volta che l’unita’ centrale utilizza un indirizzo di questa porzione (con
un’usuale istruzione di trasferimento dati con la memoria e cioe’ senza ricorrere a
specifiche istruzioni) in realtà indirizzi un dispositivo di I/O (fig. 5-2: caso A);
2. Riservare all’ I/O uno spazio di indirizzamento indipendente (fig. 5-2: caso B): l’unita’
centrale utilizza specifiche istruzioni nelle quali fornisce anche l’indirizzo identificativo del
dispositivo da utilizzare nell’operazione.

Spazio indirizzamento Spazio indirizzamento Spazio


della Memoria della Memoria indirizzamento
dell’I/O

I/O

I/O

Caso A Caso B

Figura 5-2. Tecniche di indirizzamento delle unita’ di I/O

5.2 – CONTROLLO STANDARD DELLA INTERAZIONE


Per interagire con i dati provenienti da un dispositivo di I/O l’unita’ centrale puo’ procedere
in due diversi modi:
• Polling
Verifica ciclica di tutte le unità di I/O da parte dell’unita’ centrale tramite test dei bit di
stato associati ad ogni periferica, seguita da un’eventuale interazione (scrittura o lettura).
Questa attività impegna molto del tempo di funzionamento dell’unita’ centrale,
rallentando di conseguenza l’intero sistema.
• Interruzione (“interrupt”)
Il dispositivo di I/O comunica alla CPU che ha necessità di interagire con essa (per es.,
per l’arrivo di un dato, la sopravvenuta disponibilità del dispositivo, errori, time out, etc.).
In questo modo l’unita’ centrale e’ impegnata solo quando necessario.

Capitolo 5 5.2
Dispense di CALCOLATORI ELETTRONICI 1

Si esamineranno ora vari schemi di collegamento dei dispositivi di I/O all’unita’ centrale
basati sulle interruzioni.
Si consideri, per cominciare, il caso di più dispositivi di I/O che inviano un segnale di
interruzione INT all’unita’ centrale utilizzando tutti la stessa linea (fig. 5-3). In questa
situazione la CPU deve ancora effettuare il polling di tutti i dispositivi di I/O per identificare
l’unità che ha richiesto l’interruzione.

I/O I/O I/O


CPU

INT
Figura 5-3. Sistema ad 1 via di interruzione

Per rendere più efficiente il sistema eliminando la necessità di effettuare il polling dopo una
richiesta di INT è possibile dotare l’unita’ centrale di più livelli di interruzione, uno per ogni
dispositivo di I/O (fig. 5-4: sistema a 3 vie di interruzione per 3 unita’ di I/O). Questo
metodo ha pero’ il difetto di togliere elasticità al sistema e di stabilire dei limiti al numero di
unità di I/O che possono richiedere l’interruzione.

I/O I/O I/O

CPU INT0

INT1

INT2
Figura 5-4. Sistema a 3 vie di interruzione

Una soluzione piu’ funzionale si ottiene utilizzando un bus dati secondo lo schema di fig. 5-
5. La procedura seguita e’ la seguente: l’interfaccia di I/O invia il segnale INT per avvertire
l’unita’ centrale che ha la necessità di interagire con essa; l’unita’ centrale completa
l’esecuzione dell’istruzione in esecuzione, salva il contenuto dei registri operativi, lascia
libero il BUS DATI e tramite il segnale GRANT abilita il dispositivo di I/O ad inviarle un
vettore di interruzione attraverso il BUS DATI. Questo vettore permette di identificare
univocamente l’interfaccia di I/O che ha fatto la richiesta e può contenere anche altre
informazioni, ad esempio: la causa della richiesta di interruzione, il riferimento all’indirizzo
di memoria ove è contenuto il programma che l’unita’ centrale deve eseguire per interagire
con il dispositivo di I/O (subroutine di servizio).

Capitolo 5 5.3
Dispense di CALCOLATORI ELETTRONICI 1

GRANT

I/O I/O I/O


CPU

INT

BUS DATI

Figura 5-5. Schema basato sul vettore di interruzione

Se l’unita’ centrale inviasse il segnale GRANT contemporaneamente a tutti i dispositivi di


I/O si correrebbe il rischio di incorrere in conflitti (per es. due o più dispositivi che hanno
chiesto l’interruzione contemporaneamente sarebbero abilitati entrambi ad utilizzare il bus).
Per evitare questo inconveniente l’unita’ centrale invia GRANT solo al primo dispositivo posto
sul BUS DATI, il quale risponde inviando il Vettore di Interruzione tramite lo stesso bus alla
CPU se la richiesta di interruzione è sua, altrimenti invia il segnale di GRANT al dispositivo
successivo, e così via. Tale tipo di propagazione del segnale GRANT viene detta propagazione
in “Daisy Chain” od a margherita (fig. 5-6). Il segnale EN abilita il collegamento del
dispositivo al BUS DATI.
Se più dispositivi di I/O hanno chiesto l’interruzione, la priorità secondo la quale ricevono il
segnale di GRANT dall’unita’ centrale e’ stabilita dalla loro posizione sul BUS DATI (se, per
es., hanno chiesto l’interruzione sia il primo che il terzo dispositivo di I/O, sarà il primo ad
essere abilitato al collegamento mentre l’altro dovrà attendere).

Dispositivo di I/O Dispositivo di I/O

GRANT EN GRANT EN

FF FF

INT INT

Figura 5-6. Propagazione in “daisy chain”

Lo schema appena visto puo’ originare un problema: se un dispositivo, che precede un’altro
che sta utilizzando il BUS DATI per trasferire un vettore di interruzione all’unita’ centrale,
invia a sua volta il segnale INT, trovando al suo ingresso il segnale GRANT (che
precedentemente aveva fatto propagare) inizia erroneamente ad inviare anch’esso dati sul

Capitolo 5 5.4
Dispense di CALCOLATORI ELETTRONICI 1

BUS. Per risolvere questa anomalia è possibile introdurre l’utilizzo di un meccanismo tale da
individuare il fronte, e non il livello, del segnale GRANT.

E’ possibile avere diverse priorità di richieste di interruzione: in questo caso si avranno più
livelli di interruzione con più dispositivi di I/O collegati in Daisy Chain su ciascun livello (fig.
5-7).

GRANT

I/O I/O I/O I/O

INT 0
CPU

I/O I/O I/O I/O

INT 1

Figura 5-7. Gestione di piu’ livelli di priorita’

5.3 – INTERAZIONE A MEZZO DMA


Gli schemi sin qui considerati presentano l’inconveniente di originare comunque significative
interferenze con l’attivita’ dell’unita’ centrale. Si supponga, per es., che un processo riceva
dati dalla tastiera: per ogni carattere inviato da questa l’unita’ centrale riceve una
interruzione che blocca l’elaborazione, fa salvare il contenuto di tutti i registri e fa eseguire
la corretta subroutine di servizio. Al termine della subroutine viene ripristinato il valore dei
registri precedenti alla richiesta di interruzione e viene ripresa l’attivita’ precedentemente
interrotta. In pratica per ogni carattere inviato dalla tastiera si deve eseguire un numero
molto alto di istruzioni, e questo pesa ovviamente sul tempo di elaborazione globale del
calcolatore.

Al fine di migliorare le prestazioni è possibile utilizzare il meccanismo di trasferimento detto


DMA (Direct Memory Access). Tramite il DMA il dato non transita attraverso l’unita’
centrale, come visto sinora, ma va direttamente dal dispositivo di I/O ad una prestabilita
zona di memoria per il successivo utilizzo da parte dell’unita’ centrale: in questa maniera
l’interruzione dell’elaborazione avviene solo all’inizio ed alla fine del trasferimento di un
blocco di dati. Lo schema di funzionamento e’ illustrato in fig. 5-8.
Quando il trasferimento dei dati va dal dispositivo verso la memoria primaria , il dispositivo
di I/O chiede all’unita’ centrale, tramite il segnale di interruzione DMA REQ, di lasciare
libero il BUS DATI. L’unita’ centrale completa l’esecuzione della istruzione in esecuzione,
salva il contenuto dei registri operativi e quindi conferma all’interfaccia di I/O la
disponibilità ad usare il BUS DATI tramite il segnale DMA GRANT (trasmesso sempre in
Daisy Chain). A questo punto il dispositivo di I/O trasmette dati e indirizzi sul bus al fine di
eseguire le necessarie operazioni di lettura/scrittura sulla memoria. Al termine di queste il
dispositivo di I/O toglie la richiesta DMA REQ e segnala con una interruzione all’unita’

Capitolo 5 5.5
Dispense di CALCOLATORI ELETTRONICI 1

centrale il completamento del trasferimento e la conseguente possibilità di poter utilizzare


nuovamente il BUS DATI.

DMA REQ

CPU DMA GRANT I/O I/O

BUS DATI

MEMORIA PRIMARIA

Figura 5-8. Schema di trasferimento DMA

Quando, invece, il trasferimento dei dati ha luogo dalla memoria primaria verso il
dispositivo, l’unita’ centrale attraverso il BUS DATI avverte il dispositivo che deve essere
coinvolto nell’operazione; quando il dispositivo e’ pronto a ricevere i dati lo segnala all’unita’
centrale con il segnale DMA REQ, dopo di che tutto si svolge come nel caso precedente con
la sola inversione del trasferimento dei dati.
Potrebbe succedere che a causa del malfunzionamento di un’interfaccia di I/O il segnale
DMA REQ continui a permanere anche se il bus non viene più utilizzato: in questo caso il
funzionamento del calcolatore si bloccherebbe. E’ opportuno inserire, quindi, l’ulteriore
segnalazione che il BUS è effettivamente utilizzato da qualche dispositivo di I/O. Questa
segnalazione è data dal segnale BUS BUSY (fig. 5-9).

DMAGRANT
DMA REQ

CPU I/O I/O I/O

BUS DATI

BUS BUSY

MEMORIA PRIMARIA

Figura 5-9. Affinamento dello schema di fig. 5-8

Capitolo 5 5.6
Dispense di CALCOLATORI ELETTRONICI 1

La gestione del DMA puo’ essere attuata in due modi: con gestore decentrato oppure con
gestore centralizzato.

Lo schema di impiego di un gestore di DMA decentrato e’ illustrato in fig. 5-10.

I/O I/O
CPU

DMA DMA

MEMORIA PRIMARIA

Figura 5-10. Gestore di DMA decentrato: schema di principio

Ogni dispositivo di I/O è corredato del proprio gestore di DMA che è costituito da una logica
di controllo, da un contatore e da un registro (fig. 5-11).

ZONA DI MEMORIA
PRIMARIA ASSEGNATA
AL DISPOSITIVO MEMORIA
INIZIO ZONA DI
MEMORIA
ASSEGNATA AL DMA
DISPOSITIVO
REGISTRO
INDIRIZZI
NUMERO DI
TRASFERIMENTI CONTATORE
DATI

LOGICA DI
LOGICA PER I
CONTROLLO
SEGNALI DI
CONTROLLO

BUS

Figura 5-11. Dettaglio di gestore di DMA decentrato

Ad ogni dispositivo di I/O viene assegnata, dal sistema operativo, una zona di memoria
specifica dove scrivere/leggere i dati (individuata mediante il registro indirizzi). Ad esempio,
per salvare una pagina di memoria fisica su disco, il sistema operativo fornisce al DMA
l’indirizzo iniziale della pagina ed il numero di trasferimenti che devono essere eseguiti,

Capitolo 5 5.7
Dispense di CALCOLATORI ELETTRONICI 1

quindi lo abilita ad utilizzare il BUS. Il DMA ad ogni operazione di lettura dalla memoria e
scrittura su disco incrementa il registro indirizzi (che viene utilizzato per indirizzare la
memoria) e decrementa il contatore: quando questo si azzera il trasferimento dati è
completato e la logica di controllo può segnalare all’unita’ centrale il termine dell’operazione.

Nel caso di gestore di DMA centralizzato il gestore è distinto dai dispositivi di I/O ed è
costituito da un registro di indirizzi per la memoria, da un contatore, da un registro di
indirizzi di I/O e dalla logica di controllo (vedere fig. 5-12). Il registro degli indirizzi di I/O
serve per poter associare ad ogni unità di I/O gli appositi indirizzi di memoria. In questo
caso è il DMA che manda all’unità di I/O l’abilitazione a trasmettere sul BUS quando questa
ne fa richiesta, oltre ad inviare i necessari segnali alla memoria (ad esempio gli indirizzi)
quando il dispositivo di I/O interagisce con essa. Il DMA può anche memorizzare
temporaneamente dati al suo interno per poi riversarli nella memoria. Il costo del sistema è
inferiore rispetto al caso precedente ma c’è una minore flessibilità. Il sistema DMA
centralizzato è tipico dei personal computer.

DMA

R E G IS T R O
IN D IR IZ Z I M p

CO NTATO RE

R E G IS T R O
IN D IR IZ Z O I/O

L O G IC A D I

CONTROLLO

Figura 5-12. Gestore di DMA centralizzato

Lo schema di principio di impiego di un gestore centralizzato e’ riportato in fig. 5-13. Il DMA


colloquia con i dispositivi di I/O o tramite il bus o tramite collegamenti indipendenti. Vi
possono essere conflitti per l’uso delle varie unità di I/O, dato che più di un certo numero di
esse non possono lavorare contemporaneamente: se, per es., il gestore di DMA è a 4 canali,
al massimo potranno essere gestiti 4 trasferimenti.

Capitolo 5 5.8
Dispense di CALCOLATORI ELETTRONICI 1

I/O I/O
CPU

Avviso di dato
Abilitazione a disponibile

Segnali di
controllo

MEMORIA PRIMARIA Indirizzi DMA

Figura 5-13. Impiego di gestore di DMA centralizzato: schema di principio

Capitolo 5 5.9