Dispositivi di I/O
• Un dispositivo di I/O è costituito da due componenti:
– Il dispositivo fisico effettivo (disco, stampante, mouse, video,
…)
– Il device controller (o interfaccia) che gestisce tutte le
operazioni che il dispositivo è in grado di svolgere
Dispositivi di I/O
• Il device controller è collegato attraverso il bus di
sistema con CPU e memoria principale
• Il device controller fornisce eventuali registri dove
possono essere appoggiati i dati del trasferimento ed
i comandi al dispositivo
• I dispositivi di I/O hanno caratteristiche molto diverse
tra loro, classificabili in base a:
Architetture dei Calcolatori
(lettere A-I)
– Comportamento
– Modo di interazione
– Tasso di trasferimento dati
Architetture dei Calcolatori 2004/05
Valeria Cardellini
Dispositivi di I/O (2)
Processor
Prestazioni degli hard disk
• Tempo di seek (seek time): tempo per muovere la
testina sulla traccia corretta
Interrupts
– Da 3 a 14 ms (può diminuire del 75% se si usano delle
ottimizzazioni)
• Tempo di rotazione (rotational latency): tempo per
raggiungere il settore da trasferire (in media tempo per
½ rotazione)
Cache
– Tempo di rotazione = 0.5/Numero di giri al minuto
– Numero di giri al minuto = 7200 → Tempo di rotazione =
(0.5/(7200/60))·1000 = 4.2 ms
Memory–I/O bus
Main
memory
1
I/O
controller
Disk
Disk
I/O
controller
I/O
controller
Graphics
output
Network
=
• Tempo di trasferimento (transfer time): tempo per
trasferire un blocco di bit
– Da 30 a 80 MB/sec (fino a 320 MB/sec se il controllore del
disco ha una cache built-in)
• Tempo per il controller: tempo per le operazioni del disk
controller
Architetture dei Calcolatori 2004/05
Valeria Cardellini
2
Architetture dei Calcolatori 2004/05
Valeria Cardellini
3
1
Prestazioni degli hard disk (2)
Bus
• Calcolare il tempo medio necessario a leggere o scrivere
un settore di 512 byte sapendo che
• Il bus rappresenta il canale di comunicazione tra le
varie componenti di un calcolatore
• Può diventare un collo di bottiglia (limitando il massimo
throughput dell’I/O) in quanto le sue prestazioni sono
limitate da
–
–
–
–
Il disco ruota a 10000 RPM
Il tempo medio di seek è 6 ms
Il transfer rate è di 50 MB/sec
L’overhead del controller è di 0.2 ms
– La lunghezza
– Il numero di dispositivi connessi
• Il bus è composto da
Tempo di seek + tempo medio di rotazione + tempo
medio di trasferimento + overhead del controller =
= 6 ms + (0.5/(10000/60))·1000 ms + 0.5 KB/50 MB/sec +
+ 0.2 ms = 6.0 + 3.0 + 0.01 + 0.2 = 9.2 ms
Architetture dei Calcolatori 2004/05
Valeria Cardellini
– Linee di dati
• Informazioni: dati, indirizzi, comandi complessi
– Linee di controllo
• Richieste ed ack, tipo di informazione sulle linee dati
4
Architetture dei Calcolatori 2004/05
Valeria Cardellini
Operazioni di input e output
5
Tipologie di bus
• Operazione di input: trasferimento dati dal dispositivo
alla memoria
• Tre tipologie principali di bus
– Le linee di controllo indicano che in memoria occorre eseguire
una write
– Le linee di dati contengono l’indirizzo di memoria in cui scrivere
il dato
– Bus processore-memoria
• Connette il processore alla memoria
• Lunghezza ridotta, ad alta velocità
– Bus di I/O
• Operazione di output: trasferimento dati dalla memoria
al dispositivo
• Molti dispositivi di I/O connessi
• Lunghezza notevole
• Esempi di standard: Firewire, USB
– Le linee di controllo indicano che in memoria occorre eseguire
una read
– Le linee di dati contengono l’indirizzo di memoria in cui leggere
il dato
Architetture dei Calcolatori 2004/05
Valeria Cardellini
– Bus backplane
• Servono per fare coesistere il processore, la memoria ed
i dispositivi di I/O su di un unico bus
6
Architetture dei Calcolatori 2004/05
Valeria Cardellini
7
2
Bus sincroni
Tipologie di bus (2)
• Le linee di controllo includono un segnale di
sincronizzazione (clock) ed il protocollo di
comunicazione è scandito dai cicli di clock
• Questo tipo di protocollo permette di ottenere bus
molto veloci; non è necessaria molta logica, perché
tutti gli eventi sono sincroni con il clock
• Ogni ciclo del bus per lettura/scrittura richiede più
cicli di clock
• Svantaggi
P ro c e s s o r-m e m o ry b u s
P ro c e s s o r
M e m o ry
Bus
a d a p te r
Bus
I /O b u s
a d a p te r
B a c k p la n e
bus
Bus
I /O b u s
– Ogni dispositivo deve essere sincronizzato con il clock
– I bus non possono avere lunghezze elevate (per problemi di
clock skew)
a d a p te r
• I bus processore-memoria sono spesso sincroni
– Hanno lunghezza ridotta
– Hanno pochi elementi connessi
Architetture dei Calcolatori 2004/05
Valeria Cardellini
8
Architetture dei Calcolatori 2004/05
Valeria Cardellini
9
Bus asincroni
Bus sincroni: ciclo di lettura
• Un bus asincrono non è dotato di clock
• La comunicazione tra le due parti avviene tramite un
protocollo di handshaking
• I bus asincroni possono avere lunghezza elevata e
connettere molti dispositivi
• Spesso i bus di I/O sono asincroni
Long
Clock skew
(function of
bus length)
• MREQ: indica la richiesta di accesso alla memoria
• RD: indica la richiesta di lettura o la scrittura
Asynchronous better
Synchronous
better
• WAIT: indica al processore di non aspettare
• Sono necessari tre cicli di clock per leggere un dato dalla memoria
Short
Similar
Architetture dei Calcolatori 2004/05
Valeria Cardellini
10
Architetture dei Calcolatori 2004/05
Valeria Cardellini
Mixture of I/O
device speeds
Varied
11
3
Bus asincroni: ciclo di lettura
ReadReq
Utilizzo del bus
1
• La comunicazione su un bus è regolata da un
protocollo di comunicazione
• Vengono introdotti uno o più bus master il cui scopo è
quello di controllare l’accesso al bus
• L’architettura più semplice è quella con un unico bus
master (il processore) in cui tutte le comunicazioni
vengono mediate dal processore stesso
3
Data
2
2
4
6
4
Ack
DataRdy
5
7
Esempio: lettura di una parola dalla memoria ed invio ad un dispositivo di I/O
1) Quando la memoria vede ReadReq, legge l’indirizzo dal bus Data e
asserisce Ack
2) Il dispositivo di I/O vede Ack asserito, nega ReadReq e rilascia Data
3) La memoria vede che ReadReq è negato e nega Ack
4) Quando la memoria ha il dato pronto, lo mette su Data ed asserisce
DataRdy
5) Il dispositivo di I/O vede DataRdy asserito, legge il dato ed asserisce
Ack
6) La memoria vede Ack asserito, nega DataRdy e rilascia Data
7) Il dispositivo di I/O nega Ack
Architetture dei Calcolatori 2004/05
Valeria Cardellini
– Il principale svantaggio dell’architettura con un singolo master
è che il master può diventare un collo di bottiglia
• L’alternativa è quella di avere più master e rispettare
un protocollo per il loro coordinamento
– Occorre un meccanismo di arbitraggio del bus
12
Architetture dei Calcolatori 2004/05
Valeria Cardellini
Arbitraggio del bus
13
Standard per bus
• In presenza di più master, occorre un meccanismo di
arbitraggio
– Per consentire di risolvere possibili contese per l’accesso
– Per garantire che non si verifichino situazioni di attesa
indefinita o di paralisi del sistema
• Permette di decidere quale dispositivo sarà il
prossimo bus master autorizzato all’utilizzo del bus
• Ad ogni dispositivo è assegnata una priorità
• Il dispositivo che fa richiesta di accesso al bus e che
possiede priorità maggiore può accedere al bus
• Problema: assicurare la fairness
IDE/Ultra ATA
SCSI
PCI
PCI-X
Larghezza dati
16 bit
8 o 16 bit
32 o 64 bit
32 o 64 bit
Frequenza
clock
Fino a 100 MhZ
10 MhZ (Fast)
33 o 66
MHz
20 MhZ (Ultra)
40 MhZ (Ultra2)
80 MhZ (Ultra3)
160 MhZ (Ultra4)
66, 100, 133
MhZ
Numero di
master
1
multipli
multipli
multipli
Bandwidth
(picco)
200 MB/sec
320 MB/sec
533 MB/sec
1066 MB/sec
Clocking
asincrono
asincrono
sincrono
sincrono
– Non favorire alcuni dispositivi rispetto ad altri
PCI e PCI-X usati per connettere la memoria principale ai dispositivi periferici
IDE/ATA e SCSI per dispositivi di storage
Architetture dei Calcolatori 2004/05
Valeria Cardellini
14
Architetture dei Calcolatori 2004/05
Valeria Cardellini
15
4
Invio dei comandi ad un dispositivo di I/O
• I comandi devono essere inviati al corrispondente device
controller
• Un’istruzione di I/O in un linguaggio ad alto livello viene
trasformata in una serie di comandi per il controller
Invio dei comandi ad un dispositivo di I/O (2)
• Per richiedere un’operazione di I/O il processore deve
– Predisporre il contenuto dei registri del controller a valori
predeterminati
– Avviare il controller stesso
– La trasformazione avviene ad opera del compilatore che traduce
l’istruzione in una chiamata al sistema operativo
• L’operazione di predisposizione del controller può
avvenire in due modi
• A runtime la chiamata del sistema operativo richiama uno
dei moduli del SO che si occupano della gestione dell’I/O
(device driver)
• Il device controller ha una serie di registri in cui memorizza
– Memory-mapped I/O
– Istruzioni di I/O dedicate
– Lo stato della periferica (ad es.: idle, busy, down, …)
– Il comando in esecuzione
– I dati da/verso il dispositivo di I/O
• Il device controller può quindi essere visto come un
processore con potenzialità ridotte
Architetture dei Calcolatori 2004/05
Valeria Cardellini
16
Architetture dei Calcolatori 2004/05
Valeria Cardellini
Memory-mapped I/O
Istruzioni dedicate
• I registri dei vari device controller sono considerati
logicamente come locazioni di memoria, pur essendo
fisicamente localizzati all’interno del device controller
• Per consentire al processore di accedere ai registri
dei controller delle periferiche vengono inserite
nell’instruction set delle istruzioni dedicate alla
gestione dell’I/O
• Queste istruzioni dedicate fanno riferimento
esplicitamente al dispositivo interessato
all’operazione di I/O
– Unico spazio di memoria
• I device controller devono essere quindi dotati di un
meccanismo che permetta loro di riconoscere le
transazioni ad essi indirizzate
• I controller ascoltano tutti i segnali in transito sul bus
(bus snooping) e si attivano solo quando riconoscono
sul bus un indirizzo corrispondente ad una propria
locazione di memoria
Architetture dei Calcolatori 2004/05
Valeria Cardellini
17
18
Architetture dei Calcolatori 2004/05
Valeria Cardellini
19
5
Modalità di esecuzione delle
operazioni di I/O
Polling
• Durante un ciclo di busy waiting vengono controllati
dal processore i controller dei dispositivi di I/O
• Quando un dispositivo necessita di un qualche
intervento, il processore soddisfa la richiesta di
trasferimento e poi continua il polling
• Problemi principali del polling
• I dispositivi di I/O sono più lenti del processore; inoltre,
essi procedono in modo autonomo
– È quindi necessario introdurre qualche meccanismo di
sincronizzazione
• Principali tecniche principali per la gestione dei
dispositivi di I/O
– Con periferiche lente, un eccessivo spreco di tempo di
processore che per la maggior parte del tempo è occupato
nel ciclo di busy waiting
– Con periferiche veloci, il lavoro svolto dal processore è quasi
esclusivamente dovuto al trasferimento dati
– Polling (controllo di programma)
– I/O interrupt driven
– Direct Memory Access
Architetture dei Calcolatori 2004/05
Valeria Cardellini
20
Architetture dei Calcolatori 2004/05
Valeria Cardellini
I/O interrupt driven
I/O interrupt driven (2)
• Per evitare il busy waiting è necessario introdurre un
metodo basato sulla gestione degli interrupt
• Il processore invia al device controller il comando di I/O
e prosegue la sua computazione, disinteressandosi
dello svolgimento dell’operazione da parte del controller
stesso
• Il controller esegue il comando inviatogli dal processore
e quando è pronto allo scambio dei dati invia al
processore un segnale di interrupt
• Il processore, attraverso una routine di gestione
dell’interrupt (interrupt handler), provvederà a salvare il
contesto esecutivo ed elaborare l’interrupt
• Tra il momento in cui termina l’invio del comando di
I/O al controller e la ricezione dell’interrupt inviato dal
controller, il processore è completamente svincolato
dall’operazione di I/O e può dedicarsi ad altre attività
• Tuttavia, il meccanismo di interrupt driven non
svincola il processore dal dover eseguire l’operazione
di trasferimento dati
• Per periferiche veloci, l’attività di trasferimento è
preponderante rispetto al tempo speso in busy
waiting
• Per evitare l’intervento del processore anche durante
questa fase, è stata introdotta la tecnica dell’accesso
diretto alla memoria (Direct Memory Access o DMA)
Architetture dei Calcolatori 2004/05
Valeria Cardellini
22
Architetture dei Calcolatori 2004/05
Valeria Cardellini
21
23
6
Direct Memory Access
• Il DMA controller è un processore specializzato nel
trasferimento dei dati tra dispositivi di I/O e memoria
principale
– Il DMA controller attua direttamente il trasferimento dati tra
periferiche e memoria principale senza l’intervento del
processore
• A fronte di una richiesta di I/O, il processore tramite il
device driver invia al DMA controller
– Tipo di operazione richiesta
– Indirizzo di memoria da cui iniziare a leggere/scrivere i dati
– Numero di byte da leggere/scrivere
• Il DMA controller avvia l’operazione richiesta e
trasferisce i dati da/verso la memoria
• Completato il trasferimento, il DMA controller invia un
interrupt al processore per segnalare il completamento
dell’operazione richiesta
Architetture dei Calcolatori 2004/05
Valeria Cardellini
24
7