appuntiDiIngegneria
Dispositivi di
Input/Output
Sommario
1.1. Sottosistema di Input/Output............................................................................................................2
1.1.1. Tecniche di Gestione dell’I/O .........................................................................................................5
1.1.2. Dispositivi di I/O Notevoli ............................................................................................................ 10
1.1.2.1. PIC ........................................................................................................................................... 10
1.1.2.2. DMA ........................................................................................................................................ 13
1
1.1. Sottosistema di Input/Output
Il sottosistema di I/O è la parte attraverso la quale si esplica la comunicazione tra il calcolatore e il
mondo esterno. Ne fanno parte tutti i dispositivi per la comunicazione uomo-macchina (video,
stampanti, mouse, etc) e tutti i dispositivi di memoria secondaria (unità a dischi, a nastri
magnetici, etc). I dispositivi di Input/Output prendono anche il nome di Periferiche, e la figura
sottostante fornisce una prima classificazione di essi:
In genere i dispositivi di Input producono i dati che la CPU deve leggere, gli esempi più lampanti
sono il mouse e la tastiera; ci sono poi i dispositivi di output che permettono di visualizzare i dati
presenti nel computer, cioè i risultati delle elaborazioni della CPU, gli esempi più lampanti sono il
monitor, la stampante, gli altoparlanti, le cuffie, e i plotter. Ci sono infine i dispositivi di
input/ouput come il modem che sono in grado sia di trasmettere che ricevere dati al/dal
computer. I dispositivi possono essere suddivisi in tre grosse categorie in funzione delle modalità
con cui essi “manipolano” i dati su cui operano:
Dispositivi a blocchi: memorizzano e trasferiscono le informazioni in blocchi di dimensione
fissa, ciascuno con un suo indirizzo. La dimensione del blocco varia da 512-32,768 byte.
Dispositivi a carattere: memorizzano e trasferiscono stringhe di byte senza riferimento ad
alcuna struttura di blocco
Dispositivi di rete: memorizzano e trasferiscono le informazioni in pacchetti di rete.
Ogni dispositivo di I/O è collegato al bus di sistema attraverso una interfaccia (anche nota come
device controller), che realizza lʼadattamento logico e fisico tra le periferiche e il calcolatore. 2
Quindi è possibile immaginare le periferiche come dei dispositivi di interazione uomo-macchina
composti da tre principali componenti:
Una componente meccanica che prende il nome di device, e costituisce tutta la parte
strettamente hardware della periferica.
Una componente software che prende il nome di driver, il cui compito è permettere al
Sistema Operativo di gestire i dispositivi, occupandosi di inizializzarlo, gestire le richieste di
lettura o scrittura, e gestire il trasferimento di dati. Si tratta in genere di software di basso
livello la cui scrittura è affidata esclusivamente a chi ha prodotto quel dispositivo,
dopodiché spetta al Sistema Operativo il compito di far si che questo software offerto da
terze parti possa interagire con il resto del Sistema Operativo.
Una componente elettronica che prende il nome di interfaccia, o device controller, che
come accennato prima è una sorta di scheda che si occupa di gestire la parte meccanica
della periferica (device) permettendo la comunicazione fra il Processore ed il Device
attraverso la scrittura/lettura in 3 registri bifilari (cioè che presentano un doppio bus
dal/verso il Processore/Device). Più precisamente un’interfaccia I/O deve:
o fornire porte di ingresso per i dati che devono essere inviati alla CPU e le porte di
uscita per i dati che devono essere trasferiti alla periferica (in entrambi i casi è
coinvolto il data bus);
o essere in grado di decodificare istruzioni e indirizzi delle porte da utilizzare (le istruzioni
viaggiano sul control bus, gli indirizzi sullʼaddress bus);
o fornire eventuali registri o buffer di appoggio per i comandi alla periferica;
o tenere traccia dello stato della periferica e delle eventuali condizioni di
malfunzionamento o di errore, consentendone la lettura (mediante segnali di stato es.
BUSY e READY). 3
o Eseguire le conversioni di formato richieste per il trasferimento dei dati (es. seriale -
parallelo).
Grazie all’interfaccia I/O il Processore vede un Device sempre allo stesso modo, ovvero come un
set di 3 famiglie di registri dai quali può leggere o scrivere. Grazie a questa standardizzazione è
possibile sostituire un device senza modificare l’interfaccia oppure il driver.
Data Register DR: Il processore ci scrive i dati da inviare al Device se è di output (ad
esempio i dati da stampare sul Monitor) oppure il Device ci scrive i dati da inviare al
Processore se è di input (ad esempio i dati letti dalla tastiera). Si tratta quindi di un buffer
di transito bidirezionale;
Control Register CR: È un registro di sola scrittura nel quale il Processore ci scrive i comandi
rivolti al device. Deve essere il driver a decidere una logica di controllo con il quale il
Processore chiede al device di effettuare determinate operazioni di Input/Output, da solo
infatti il Processore non conosce la logica e non è in grado di comunicare ordini al device.
Status Register SR: È un registro di sola lettura dal quale il Processore apprende lo stato
attuale del device. Esso contiene una serie di flags che sintetizzano lo stato del device (ad
esempio pronto, errore , occupato, etc). Anche qui occorre una logica di controllo che
fornisca un significato a questa serie di flags.
Affinché il Processore possa comunicare con un Device Controller è necessario che risolvere 2
problemi: il primo riguarda la modalità con la quale esso può accedere ai registri, e a tal riguardo
vengono fornite 2 alternative:
L’approccio Memory Mapped I/O consiste
nell’utilizzare lo stesso bus per indirizzare sia la
memoria che i dispositivi, in tal modo i dispositivi
vengono visti dal processore come se fossero
locazioni di memoria nello stesso spazio di
indirizzamento, questo è l’approccio più utilizzato,
ed è tipico del Motorola 68000. Con l'I/O associato a un indirizzo di memoria, ogni
4
istruzione macchina che può accedere alla memoria può essere impiegata per trasferire
dati da e verso un dispositivo di I/O, cioè le operazioni di I/O sono diventano esattamente
quelle per leggere/scrivere dalla Memoria (load e store).
L’alternativa è un approccio Isolated I/O nel quale si utilizzano bus separati per indirizzare
la Memoria ed i dispositivi per cui questi ultimi hanno uno spazio di indirizzamento
separato da quello della Memoria. Si adottano istruzioni di I/O dedicate a manipolare i
registri, ed a livello Hardware è necessario prevedere degli opportuni meccanismi (I/O bus,
linee dedicate) per separare gli indirizzi di I/O da quelli relativi alla Memoria. Ad esempio i
Processori Intel adottano la soluzione I/O port: ad ogni registro è assegnato un numero di
8/16 bit che specifica la porta di I/O corrispondente a cui si riferisce usando istruzioni I/O.
Il secondo problema riguarda la scelta di un Protocollo per comunicare, ovvero una politica di
gestione dell’IO, ma queste modalità di gestione delle periferiche vengono trattate a parte nel
prossimo paragrafo.
1.1.1. Tecniche di Gestione dell’I/O
Siccome le Periferiche devono trasferire dei dati da/verso il mondo esterno queste ultime saranno
estremamente più lente rispetto al Processore. Tuttavia il Processore nel suo ciclo di elaborazione,
oltre alle operazioni CPU Bound, avrà bisogno anche di utilizzare le Periferiche per effettuare
operazioni di Input/Output (meglio note come operazioni I/O Bound), mandando a queste un
comando ed attendendo che il risultato sia pronto. L’idea però sarebbe quella che le periferiche
lavorassero il più possibile in parallelo al processore, in modo da usare al massimo le risorse
Hardware, alternando il più possibile operazioni CPU Bound con quelle I/O Bound, tuttavia data la
grandissima differenza di velocità fra Processore e Periferiche il Processore si ritroverà a buttare la
maggior parte del suo tempo in attesa del risultato di una qualche Periferica. Per tale motivo una
volta effettuata una richiesta di I/O alla Periferica il Processore dovrà continuare la sua
elaborazione e prendere il risultato dalla Periferica soltanto quando esso è pronto, a tal riguardo ci<
-
Dispositivi medicali e diagnostici
-
Dispositivi
-
Regolamentazione dei dispositivi biomedicali
-
Dispositivi di memoria