Академический Документы
Профессиональный Документы
Культура Документы
CPU I/O
MEMORIA
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.
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.
I/O
I/O
Caso A Caso B
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.
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.
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
INT
BUS DATI
GRANT EN GRANT EN
FF FF
INT INT
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
INT 0
CPU
INT 1
Capitolo 5 5.5
Dispense di CALCOLATORI ELETTRONICI 1
DMA REQ
BUS DATI
MEMORIA PRIMARIA
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
BUS DATI
BUS BUSY
MEMORIA PRIMARIA
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.
I/O I/O
CPU
DMA DMA
MEMORIA PRIMARIA
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
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
Capitolo 5 5.8
Dispense di CALCOLATORI ELETTRONICI 1
I/O I/O
CPU
Avviso di dato
Abilitazione a disponibile
Segnali di
controllo
Capitolo 5 5.9