Title: Dispositivi di I/O
1Dispositivi di I/O
- Lucidi fatti in collaborazione con dellIng.
Valeria Cardellini
2Possibile organizzazione di un calcolatore
3Dispositivi 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 - Permette di uniformare la connessione tra il
dispositivo ed il resto del sistema - Il device controller è collegato attraverso il
bus di sistema con CPU e memoria principale - Il device controller è un sottosistema
specializzato nel controllo dei dispositivi di
I/O - Fornisce eventuali registri dove possono essere
appoggiati i dati del trasferimento ed i comandi
al dispositivo
4Eterogeneità dei dispositivi di I/O
- Hanno caratteristiche molto diverse tra loro,
classificabili in base a 3 dimensioni - Comportamento
- Input/output o memorizzazione di dati
- Controparte (partner)
- Uomo o macchina
- Tasso di trasferimento dati
- Dal dispositivo in memoria e viceversa
Dispositivo Funzione Partner Velocità (Mb/sec)
Tastiera input umano 0,0001
Mouse input umano 0,0038
Stampante laser output umano 3,2
Network/ wireless LAN input o output macchina 11-54
Network/LAN input o output macchina 100-1000
Disco ottico memoriz-zazione macchina 80
Disco magnetico memoriz-zazione macchina 240-2560
Scheda grafica output umano 800-8000
5Disco magnetico
- Costituito da un insieme di piatti rotanti (da 1
a 15) - Piatti rivestiti di una superficie magnetica
- Esiste una testina (bobina) per ogni faccia del
piatto - Generalmente piatti a doppia faccia
- Le testine di facce diverse sono collegate tra di
loro e si muovono contemporaneamente - Velocità di rotazione costante (ad es. 10000 RPM)
- La superficie del disco è suddivisa in anelli
concentrici (tracce) - Registrazione seriale su tracce concentriche
- 1000-5000 tracce
- Tracce adiacenti separate da spazi
6Disco magnetico (2)
- Ciascuna traccia è divisa in settori
- Settore la più piccola unità che può essere
trasferita (scritta o letta) - Centinaia di settori per traccia, generalmente di
lunghezza fissa (es., 512 B) - Il settore contiene un ID del settore, i dati e
un codice di correzione di errore la capacità
formattata scende del 15 - Tracce sovrapposte su piatti diversi forma un
cilindro
7Organizzazione dei dati sul disco
- Nei dischi più vecchi
- Ogni traccia conteneva lo stesso numero di
settori - Le tracce esterne (più lunghe) memorizzavano
informazioni con densità minore
- Nei dischi recenti
- Per aumentare le prestazioni, si utilizzano
maggiormente le tracce esterne zoned bit
recording (o multiple zone recording) - Tracce raggruppate in zone sulla base della loro
distanza dal centro - Una zona contiene lo stesso numero di settori
per traccia - Più settori per traccia nelle zone esterne
rispetto a quelle interne - Densità di registrazione (quasi) costante
8Lettura/scrittura di un disco
- Processo composto da 3 fasi
- Posizionamento della testina sul cilindro
desiderato (tempo di seek) - Da 3 a 14 ms (può diminuire del 75 se si usano
delle ottimizzazioni) - Dischi di diametro piccolo permettono di ridurre
il tempo di posizionamento - Attesa che il settore desiderato ruoti sotto la
testina di lettura/scrittura (tempo di rotazione) - In media è il tempo per ½ rotazione
- Tempo di rotazione medio 0.5/numero di giri al
secondo - Es. 7200 RPM ? Tempo di rotazione medio
0.5/(7200/60) 4.2 ms - Operazione di lettura o scrittura di un settore
(tempo di trasferimento) - Da 30 a 80 MB/sec (fino a 320 MB/sec se il
controllore del disco ha una cache built-in) - In più tempo per le operazioni del disk
controller (tempo per il controller)
9Prestazioni dei dischi magnetici
- Calcolo del tempo medio necessario a leggere o
scrivere un settore di 512 byte sapendo che - Il disco ruota a 10000 RPM
- Il tempo medio di seek è 6 ms
- Il transfer rate è di 50 MB/sec
- Loverhead del controller è di 0.2 ms
- 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) ms - 9.2 ms
10Affidabilità e disponibilità
- Fallimento (failure) il comportamento del
servizio non è conforme alle specifiche - Il fallimento è causato da un errore (error)
i.e. porzione di stato scorretto - La causa di un errore è un guasto (fault)
- tipo hw, sw o operativo
- durata transiente, permanente, intermittente
- visibilità esterna fail-stop, bizantino
11Affidabilità e disponibilità (2)
- Affidabilità - reliability probabilità che il
sistema funzioni secondo le specifiche di
progetto continuamente dallistante in cui viene
attivato allistante di osservazione R(t) - Disponibilità allistante t probabilità che il
sistema funzioni secondo le specifiche di
progetto quando gli si chiede un servizio A(t) - Disponibilità (a regime permanente) -
availability disponibilità quando t -gt infinito
12Affidabilità e disponibilità (3)
- Tempo medio di fallimento (mean time to failure o
MTTF) - Tempo medio che intercorre tra listante in cui
il servizio è ripristinato ed il fallimento
successivo - E un indice dellaffidabilità (reliability) del
servizio - Tempo medio di riparazione (mean time to repair o
MTTR) - Tempo medio necessario per ripristinare il
servizio
13Affidabilità e disponibilità (4)
- Tempo medio tra due fallimenti (mean time between
failures o MTBF) - Tempo medio tra due fallimenti consecutivi
- MTBF MTTF MTTR
- Disponibilità (availability)
- MTTF
- Availability -----------------------
- MTTF MTTR
- Per aumentare il MTTF
- Evitare i guasti (p.e. uso di componenti più
costosi) - Tollerare i guasti
- Tolleranza ai guasti capacità del servizio di
non subire fallimenti anche in presenza di guasti - Occorre introdurre ridondanze (spaziale,
temporale) - Predire i guasti (evitare di usare sistemi con
componenti prossimi al guasto) manutenzione
preventiva
14RAID
- Le prestazioni dei dischi crescono più lentamente
di quelle dei processori - Accesso ai dischi migliorato di 5/10 volte in 20
anni - Idea di Patterson et al. nel 1987 usare in
parallelo più dischi per aumentare le prestazioni
dei dischi - Problema un array di dischi (senza ridondanza
dei dati) è inaffidabile! - Affidabilità di un array da N dischi
Affidabilità di 1 disco/N - Soluzione definire unorganizzazione dei dati
memorizzati sui dischi in modo da ottenere
unelevata affidabilità (tolleranza ai guasti)
replicando i dati sui vari dischi dellarray - RAID Redundant Array of Inexpensive
(Independent) Disks - Insieme di dischi a basso costo ma coordinati in
azioni comuni per ottenere diversi livelli di
tolleranza ai guasti
15Livelli RAID
16RAID 0
- Nessuna ridondanza dei dati
- Solo striping dei dati
- Striping allocazione di blocchi logicamente
sequenziali su dischi diversi per aumentare le
prestazioni rispetto a quelle di un singolo disco - Lettura e scrittura in parallelo di strip
(strisce) su dischi diversi - Non è un vero RAID perché non cè nessuna
ridondanza - E la migliore soluzione in scrittura, perchè non
ci sono overhead per la gestione della
ridondanza, ma non in lettura
17RAID 1
- Mirroring (o shadowing)
- Ciascun disco è completamente replicato su un
disco ridondante (mirror), avendo così sempre una
copia - Usa il doppio dei dischi rispetto a RAID 0
- Ottime prestazioni in lettura
- Molte possibilità di migliorare le prestazioni
(es. leggere dal disco con il minimo tempo di
seek, leggere due file contemporanemanete su
dischi gemelli) - Una scrittura logica richiede due scritture
fisiche - E la soluzione RAID più costosa
18RAID 2
- Rivelazione e correzione degli errori (codice di
Hamming) - Striping a livello di parola o di byte (in RAID 0
e 1 strip di settori) - Es. in figura 4 bit (nibble) più 3 bit (codice
di Hamming a 7 bit) - Svantaggio rotazione dei dischi sincronizzata
- Resiste a guasti semplici
- Ad ogni scrittura bisogna aggiornare i dischi di
parità - anche per la modifica di un singolo bit di
informazione - Forte overhead per pochi dischi (in figura 75),
ha senso con molti dischi, ad esempio - Parola da 32 bit(61) bit di parità ? 39 dischi
- Overhead del 22 (7/32)
- In disuso
19RAID 3
- Un bit di parità orizzontale ed uno verticale
- versione semplificata di RAID 2
- Resiste ad un guasto (transiente o permanente)
alla volta - Overhead abbastanza contenuto
- Solo unoperazione su disco per volta
- Ciascuna operazione coinvolge tutti i dischi
- Soluzione diffusa per applicazioni che operano su
grandi quantità di dati in lettura, disco di
parità collo di bottiglia in caso di scrittura
20RAID 3 esempio
Record logico
10010011 11001101 10010011 . . .
Record fisici
- P contiene il bit di parità dei bit (strip)
memorizzati negli altri dischi - Se un disco fallisce (in modo transeiente o
permanente), utilizzando P, i bit di parità
verticale e i bit degli altri dischi si recupera
linformazione mancante - Overhead accettabile (poco più di un terzo
nellesempio)
21RAID 4
- Evoluzione di Raid 3 con striping a blocchi (come
RAID 0) - la strip nellultimo disco contiene i bit di
parità dellinsieme di bit omologhi di tutte le
altre strip - No rotazione sincronizzata (come in RAID 2 e 3)
- Resiste a guasti singoli (transienti e
permanenti) - Consente letture indipendenti sui diversi dischi
- Se si legge una quantità di dati contenuta in una
sola strip - Il disco di parità è il collo di bottiglia
22RAID 4 lettura e scrittura
D0
D1
D2
D3
P
Dentro 5 dischi
P
D7
D4
D5
D6
- Lettura piccola coinvolge un solo disco
- Scrittura anche se si aggiorna un solo disco
si deve aggiornare anche strip di parità - Esempio lettura piccola per D0 e D5, scrittura
grande per D12-D15
D8
D9
P
D10
D11
D12
P
D13
D14
D15
D16
D17
D18
D19
P
D20
D21
D22
D23
P
disco 0 disco 1 disco 2 disco 3 disco 4
23Scrittura in RAID 3 e RAID 4
- Esempio di scrittura piccola in RAID 4
- Opzione 1 si leggono i dati sugli altri dischi,
si calcola la nuova parità P e la si scrive sul
disco di parità (come per RAID 3) - Es. 1 scrittura logica 3 letture fisiche 2
scritture fisiche - Opzione 2 poiché il disco di parità ha la
vecchia parità, si confronta il vecchio dato D0
con il nuovo D0, si aggiunge la differenza a P,
e si scrive P sul disco di parità - Es. 1 scrittura logica 2 letture fisiche 2
scritture fisiche
24RAID 5
- Blocchi di parità distribuita
- Le strip di parità sono distribuite su più dischi
in modalità round-robin (circolare) - Si evita il collo di bottiglia del disco di
parità in RAID 4 - La scrittura piccola è gestita come in RAID 4
25RAID 5 scrittura
D0
D1
D2
D3
P
D4
D5
D6
P
D7
- Sono possibili scritture indipendenti in virtù
della parità interallacciata - Esempio la scrittura di D0 e D5 usa i dischi 0,
1, 3, 4
D8
D9
P
D10
D11
D12
P
D13
D14
D15
P
D16
D17
D18
D19
D20
D21
D22
D23
P
disco 0 disco 1 disco 2 disco 3 disco 4
26RAID 6
- Ridondanza PQ (si aumenta la distanza di
Hamming) - Anziché la parità, si usa uno schema che consente
di ripristinare anche un secondo guasto - la singola parità consente di recuperare un solo
guasto - Overhead di memorizzazione doppio rispetto a RAID
5
27Bus
- Rappresenta il canale di comunicazione tra le
varie componenti del calcolatore - Mezzo di trasmissione condiviso, al quale sono
collegati più componenti - Un calcolatore contiene svariati bus
- Potenziale collo di bottiglia essendo le sue
prestazioni limitate da - Lunghezza
- Numero di dispositivi connessi
- Bus composto da
- Linee dati (e indirizzi)
- Informazioni dati, indirizzi (anche comandi
complessi) - Ampiezza numero di linee dati
- Possibile condividere le linee per dati e
indirizzi (multiplexing) - Linee di controllo
- Per controllare laccesso e luso delle linee
dati ed indirizzi - Richieste ed ack, tipo di informazione sulle
linee dati
28Transazioni sul bus
- Transazione sul bus
- Invio dellindirizzo e del comando da parte
dellunità master - Invio o ricezione dei dati da parte dellunità
slave - Operazione di input (o transazione di scrittura)
trasferimento dati dal dispositivo di I/O alla
memoria - Linee di controllo indicano che in memoria
occorre eseguire una scrittura - Linee di dati contengono lindirizzo di memoria
in cui scrivere il dato - Operazione di output (o transazione di lettura)
trasferimento dati dalla memoria al dispositivo
di I/O - Linee di controllo indicano che in memoria
occorre eseguire una lettura - Linee di dati contengono lindirizzo di memoria
in cui leggere il dato
29Tipologie di bus
- Bus processore-memoria
- Lunghezza ridotta, alta velocità
- In generale proprietario
- Progettato per massimizzare la banda di
trasferimento processore-memoria - Bus di I/O
- Tipicamente di lunghezza maggiore e più lenti
- Una gran varietà di dispositivi di I/O connessi
- Standard, ad es. Firewire (IEEE 1394), USB, SCSI
- Bus backplane
- Struttura di interconnessione allinterno dello
chassis - Usati spesso come struttura intermedia tra i bus
di I/O ed il bus processore-memoria
30Esempio di organizzazione
- Bus backplane connesso al bus processore-memoria
- Bus di I/O connessi al bus backplane
31Schemi di comunicazione su un bus
- La comunicazione sul bus deve essere regolata
attraverso un protocollo di comunicazione - Esistono due schemi principali di comunicazione
(temporizzazione) su di un bus - Bus sincroni protocollo sincrono
- Bus asincroni protocollo asincrono
32Bus sincrono
- Le linee di controllo del bus includono un
segnale di sincronizzazione (clock) - Il protocollo di comunicazione è scandito dai
cicli di clock - Ogni ciclo del bus per lettura/scrittura richiede
più cicli di clock - Vantaggi
- Molto veloce
- Non richiede molta logica, perché tutti gli
eventi sono sincroni con il clock - Svantaggi
- Ogni dispositivo deve essere sincronizzato con il
clock - Non può avere lunghezza elevata (problemi di
clock skew) - I bus processore-memoria sono spesso sincroni
- Hanno lunghezza ridotta
- Hanno pochi elementi connessi
33Bus sincrono transazione di lettura
I dati sono pronti per essere letti dal processore
- Read segnale di controllo che indica la
richiesta di lettura (o scrittura) - Wait indica al processore di non aspettare
- Sono necessari più cicli di clock per leggere un
dato dalla memoria
34Bus asincrono
- Non è dotato di clock
- La comunicazione tra le due parti avviene tramite
un protocollo di handshaking - Vantaggi
- Può avere lunghezza elevata e connettere molti
dispositivi - Il tempo impiegato dalle singole operazioni sul
bus è legato esclusivamente alla velocità delle
parti coinvolte - Svantaggi
- Più lento dei bus sincroni
- Spesso i bus di I/O sono asincroni
35Bus asincrono ciclo di lettura
Trasferimento dati da memoria a dispositivo I/O
Address/data bus
- Quando la memoria vede ReadReq, legge lindirizzo
dal bus Address/Data bus e asserisce Ack - Il dispositivo di I/O vede Ack asserito, nega
ReadReq e rilascia l Address/Data bus (mette le
sue uscite in alta impedenza) - La memoria vede che ReadReq è negato e nega Ack
- Quando la memoria ha il dato pronto, lo mette
sullAddress/Data bus ed asserisce DataRdy - Il dispositivo di I/O vede DataRdy asserito,
legge il dato ed asserisce Ack - La memoria vede Ack asserito, nega DataRdy e
rilascia lAddress/Data bus (mette le sue uscite
in alta impedenza) - Il dispositivo di I/O nega Ack
36Bus asincroni protocollo di handshaking
- Lo schema asincrono visto è incentrato sul
seguente protocollo di handshaking tra produttore
e consumatore (ci sono due macchine a stati
finiti) - ReadReq viene asserito
- Ack viene asserito in risposta a ReadReq
- ReadReq viene non asserito in risposta ad Ack
- Ack viene non asserito in risposta a ReadReq
- DataRdy viene asserito
- Ack viene asserito in risposta a DataRdy
- DataRdy viene non asserito in risposta ad Ack
- Ack viene non asserito in risposta a DataRdy
37Temporizzazione sincrona o asincrona?
Lungo
Clock skew (funzione della lunghezza del bus)
Asincrona
Sincrona
Corto
Simili
Eterogenee
Velocità dei dispositivi di I/O
38Comunicazione sul bus (quando ci sono più
richiedenti di informazioni)
- Problema ottenere laccesso al bus (mezzo di
comunicazione condiviso) - Accesso regolato tramite ruoli master e slave
- Unità master può iniziare attivamente una
transazione di lettura o scrittura - Il processore è sempre un master, la memoria uno
slave - Un bus può avere molteplici master
- Architettura più semplice un solo bus master (un
processore), che media tutte le comunicazioni - Svantaggio il processore deve prendere parte ad
ogni transazione sul bus - Alternativa avere più master e seguire un
protocollo per coordinare le richieste dei master
- Occorre un meccanismo di arbitraggio del bus
39Arbitraggio del bus
- Permette di decidere quale dispositivo sarà il
prossimo bus master autorizzato allutilizzo del
bus - Consente di risolvere possibili contese per
laccesso - Obiettivi
- Assegnare il bus ai dispositivi con priorità più
alta - Garantire che non si verifichino situazioni di
attesa indefinita o di paralisi del sistema - Schemi di arbitraggio centralizzati
- Un controllore decide a chi assegnare il bus
- Daisy chain e livelli multipli di priorità
- Schemi di arbitraggio distribuiti
(decentralizzati) - Nessun controllore centralizzato i dispositivi
seguono un algoritmo per il controllo daccesso e
cooperano nella condivisione del bus - Possibili politiche Round-robin, rilevamento
della collisione
40Daisy chain
- Ad ogni dispositivo è assegnata una priorità
- Sceglie il dispositivo che richiede laccesso al
bus e possiede priorità maggiore (più vicino
allarbitro) - Problema non garantisce la fairness
- favorisce alcuni dispositivi rispetto ad altri
Linea di occupazione
Linea di disponibilità
Linea di richiesta
41Livelli multipli di priorità
- Anche detto parallelo centralizzato
- Diverse linee di richiesta associate a diversi
livelli di priorità - In caso di conflitto favorite le catene a
priorità più alta - Allinterno di ciascuna catena vale la posizione
(daisy chain) - In genere, se cè un solo bus con anche la
memoria, il processore ha priorità più bassa dei
dispositivi di I/O
Catena a priorità minima
Catena a priorità massima
42Schemi di arbitraggio distribuiti
- Round-robin
- Assegnazione circolare del bus
- Scambio ciclico di un segnale di disponibilità
tra le unità utilizzatrici del bus - Rilevamento delle collisioni
- Esiste ununica linea su cui è segnalato lo stato
del bus (libero/occupato) - Più unità contemporaneamente possono occupare il
bus situazione di collisione - Occorre rilevare la collisione ed annullare la
trasmissione - La trasmissione sarà ripetuta dopo un intervallo
di tempo (il cui valore è generato in modo
casuale) - Simile a rete Ethernet
43Bus interni ed esterni
- I bus in un calcolatore si possono anche
distinguere in bus interni ed esterni - Bus interni (o locali)
- Confinati allinterno di una singolo chip (tra
processore e cache) o tra processore e memoria - Elevata velocità per massimizzare la banda
passante - Tecnologia proprietaria
- Bus esterni
- Collegano dispositivi diversi
- Maggiore lunghezza
- Velocità inferiore
44Banda passante di un bus
- Un bus trasmette sequenze di dati la rapidità
con cui si passa da un dato al successivo è detta
ciclo di bus - Più alta è la frequenza, maggiori sono le
prestazioni del bus (bandwidth o banda passante) - Per ricavare la massima banda passante teorica
- max banda frequenza numero di linee MB/sec
- Le fasi di inattività e di scambio comandi
riducono la banda passante reale - I limiti fisici allaumento della frequenza sono
- alte frequenze creano disturbi (interferenze)
- bus skew (segnali su linee diverse che viaggiano
a velocità diverse)
45Tecniche per aumentare la banda passante
- Parallelismo delle linee dati
- Aumento del numero di linee
- Linee dati ed indirizzi separate
- Aumento del numero di linee
- Trasferimento di dati a blocchi
- Riduzione del tempo di risposta
- Protocollo split transaction
- La transazione sul bus è divisa in due parti
transazione di richiesta e transazione di
risposta - al termine della transazione di richiesta viene
rilasciato il bus per la transazione di risposta
occorre nuovamente competere per laccesso al bus - Vantaggio si evitano tempi di non utilizzo del
bus, sfruttando meglio la banda del bus - Svantaggio tempi di transazione più lunghi
- Usato nei sistemi multiprocessore che condividono
il bus di memoria
46Opzioni di progettazione di un bus
Opzione Prestazioni elevate Costo basso
Parallelismo bus Linee indirizzi e dati separate Linee indirizzi e dati multiplexate
Parallelismo dati Ampio (es. 64 bit) Limitato (es. 8-16 bit)
Dimensione del trasferimento Più parole per trasferimento riduce loverhead Trasferimento di singole parole più semplice
Bus master Multiplo (necessario arbitraggio) Singolo (nessun arbitraggio)
Split transaction Sì (pacchetti request/reply separati forniscono più banda) No (una connessione continua è più economica ed ha latenza minore)
Temporizzazione Sincrona Asincrona
47Alcuni standard per bus
IDE/Ultra ATA SCSI PCI PCI-X
Ampiezza dati 16 bit 8 o 16 bit 32 o 64 bit 32 o 64 bit
Frequenza clock Fino a 100 MhZ 10 MhZ (Fast) 20 MhZ (Ultra) 40 MhZ (Ultra2) 80 MhZ (Ultra3) 160 MhZ (Ultra4) 33 o 66 MHz 66, 100, 133 MhZ
Numero di bus master 1 multipli multipli multipli
Bandwidth (picco) 200 MB/sec 320 MB/sec 528 MB/sec 1064 MB/sec
Temporizzazione asincrono asincrono sincrono sincrono
PCI (Peripheral Component Interconnect) e PCI-X
usati per connettere la memoria principale ai
dispositivi periferici IDE/Ultra ATA e SCSI
(Small Component System Interface) per
dispositivi di storage
48Bus paralleli e seriali
- Bus paralleli
- Più bit alla volta i bit vengono inviati
contemporaneamente su più linee - Bus seriali
- Un bit alla volta i bit vengono inviati in tempi
diversi su ununica linea - Un bus seriale può avere una frequenza di
funzionamento superiore rispetto ad un bus
parallelo - Necessità di avere a disposizione una velocità di
trasferimento dei dati sempre più elevata
maggiore attenzione verso bus seriali e
collegamenti punto-punto
49Esempi di bus ad alte prestazioni
- PCI Express
- Evoluzione seriale del bus PCI (che è un bus
parallelo) - Bus bidirezionale (full-duplex) usato
principalmente da Intel - Costituito da un serie di canali, che possono
essere aggregati per aumentare la banda - Banda aggregata fino a 7,5 GB/sec
- HyperTransport
- Usato principalmente da AMD e Transmeta
- Collegamento punto-punto unidirezionale ad alta
velocità e bassa latenza - Ogni link è costituito da due canali (per le due
direzioni di trasmissione) che operano in maniera
indipendente e concorrente - Fino a 32 bit per link
- Banda aggregata fino a 22,4 GB/sec
50USB e Firewire
- Sono due bus di I/O seriali
- Permettono di collegare con un unico bus molte
periferiche (fino a 63 per FireWire e 127 per USB
2.0) - Supportano entrambi linserimento a caldo
- Firewire (IEEE 1394)
- Bus ad alta velocità progettato per dispositivi
di I/O ad alta capacità (dispositivi di
archiviazione e acquisizione video) - Fino a 50 MB/sec
- Ideato dalla Apple
- USB (Universal Serial Bus)
- Bus economico per la gestione di dispositivi di
I/O a medio/bassa velocità - Fino a 60 MB/sec per USB 2.0
- Flessibilità, semplicità
- Un unico bus per molte periferiche
- Non sono necessari dispositivi di controllo e
porte dedicate - Facilmente espandibile
51Esempio tipico per desktop
52Esempio Pentium 4
DDR (double-data rate) invio dei dati sia sul
fronte di salita che sul fronte di discesa del
clock
Il tasso di trasferimento tra north bridge e
south bridge è 266 MB/sec per questo AGP
(Accelerated Graphics Port) e la Gigabit Ethernet
sono connesse al north bridge anziché al south
bridge AGP non è un vero e proprio bus ma un
collegamento punto-punto
53Invio dei comandi ad un dispositivo di I/O
- I comandi devono essere inviati al corrispondente
device controller - Unistruzione di I/O in un linguaggio ad alto
livello viene trasformata in una serie di comandi
per il controller - La trasformazione avviene ad opera del
compilatore che traduce listruzione in una
chiamata al sistema operativo - A runtime la chiamata del sistema operativo
richiama uno dei moduli del SO che si occupano
della gestione dellI/O (device driver) - Il device controller ha una serie di registri
(porte di I/O) in cui memorizza - Lo stato della periferica (ad es. idle, busy,
down, ) - Il comando in esecuzione
- I dati da/verso il dispositivo di I/O
54Invio dei comandi ad un dispositivo di I/O (2)
- Il device controller può essere visto come un
processore (con potenzialità ridotte) - Si parla di processori di I/O
- Per richiedere unoperazione di I/O il processore
deve - Predisporre il contenuto dei registri del
controller a valori predeterminati - Avviare il controller stesso
- Loperazione di selezione del controller e di
predisposizione dei suoi registri può avvenire in
due modi - Memory-mapped I/O
- Istruzioni di I/O dedicate
55Memory-mapped I/O
- Lo spazio di indirizzamento dellI/O appartiene
allo stesso spazio di indirizzamento della
memoria - I registri dei vari device controller sono
considerati logicamente come locazioni di
memoria, pur essendo fisicamente localizzati
allinterno del device controller - 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
56Istruzioni dedicate
- Lo spazio di indirizzamento di I/O è separato
dallo spazio di indirizzamento della memoria - Per consentire al processore di accedere ai
registri dei controller delle periferiche vengono
inserite delle istruzioni specifiche nellinsieme
delle istruzioni, dedicate alla gestione dellI/O - Queste istruzioni dedicate fanno riferimento
esplicitamente al dispositivo interessato
alloperazione di I/O
57Modalità di esecuzione delle operazioni di I/O
- I dispositivi di I/O sono molto più lenti del
processore inoltre, essi procedono in modo
autonomo - È quindi necessario introdurre qualche meccanismo
di sincronizzazione per la gestione delle
operazioni di I/O - Principali tecniche per la gestione dei
dispositivi di I/O - A controllo di programma
- Polling
- I/O interrupt driven
- Direct Memory Access
58I/O a controllo di programma
- Completo coinvolgimento del processore nella
gestione delloperazione di I/O richiesta - Il processore, dopo avere predisposto il
controller allesecuzione delloperazione di I/O
interroga continuamente il controller per
verificare lesito delloperazione - Ad operazione ultimata, il processore provvede a
trasferire il dato (nel caso di operazione di
input) o ad eseguire una nuova istruzione - Il processore è coinvolto durante tutta
loperazione di I/O per svolgere il ruolo di
controllore - Il ciclo svolto dal processore in attesa dello
svolgimento delloperazione è detto busy waiting
59I/O a controllo di programma (2)
- LI/O a controllo di programma è molto semplice
ma dispendioso - Il processore spreca tempo nel ciclo di busy
waiting, perché non svolge nessunaltra attività
se non quella di osservare lo stato della
periferica - Questa tecnica non deve essere usata nella
gestione di periferiche lente, perché forza il
processore ad operare alla stessa velocità delle
periferiche - Di conseguenza, la potenza di calcolo del
processore viene sprecata - Un (lieve) miglioramento della tecnica a
controllo di programma è il polling
60Polling
- Durante un ciclo di busy waiting su un
dispositivo, il processore esegue il polling
(appello) degli altri dispositivi di I/O - Quando un dispositivo necessita di un qualche
intervento, il processore soddisfa la richiesta
di trasferimento e poi continua il polling - I miglioramenti di prestazioni rispetto al
controllo di programma sono limitati - Problemi principali del polling
- 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
alleffettivo trasferimento dati
61I/O interrupt driven
- Per evitare il busy waiting è necessario
introdurre un metodo basato sulla gestione delle
interruzioni - Il processore invia al device controller il
comando di I/O e prosegue la sua computazione,
disinteressandosi dello svolgimento
delloperazione da parte del controller - Il controller esegue il comando inviatogli dal
processore quando è pronto allo scambio dei dati
invia al processore un segnale di interrupt
(interrupt request) - Il processore, attraverso una routine di gestione
dellinterrupt (interrupt handler), provvederà a
salvare il contesto esecutivo ed elaborare
linterrupt - Prima di gestire linterrupt, il processore deve
salvare le informazioni che permetteranno di
riprendere lesecuzione del programma corrente
dal punto in cui è stata interrotta
62I/O interrupt driven (2)
- Un interrupt è un meccanismo che consente di
interrompere lesecuzione di un programma al fine
di eseguire una routine di SO - Linterrupt (a differenza di eccezioni e trap)
non è causato dallistruzione correntemente
eseguita, ma da un evento esterno, generalmente
scorrelato rispetto allistruzione stessa - Un segnale di interrupt è un evento asincrono
rispetto alle attività correnti del processore - Linterrupt di I/O non è associato con nessuna
istruzione, ma può capitare durante lesecuzione
di unistruzione - Linterrupt di I/O non preclude il completamento
dellistruzione - Il meccanismo di I/O interrupt driven non
svincola il processore dal dover eseguire
loperazione di trasferimento dati
63I/O interrupt driven (3)
- Meccanismi per identificare il dispositivo di I/O
che ha generato linterruzione - Più linee di interruzione
- Non è pratico dedicare molte linee del bus agli
interrupt - Usato in combinazione ad uno degli altri 3
meccanismi - Semplice per priorità dellinterrupt
- Interrogazione software (software poll)
- Quando rileva uninterruzione, il processore
esegue una routine che interroga i dispositivi di
I/O per individuare chi lha causata - Svantaggio perdita di tempo
- Interrogazione hardware, vettorizzata
- Linea di richiesta di interruzione comune a tutti
i dispositivi di I/O - Quando rileva linterruzione, il processore invia
a sua volta un interruzione di riconoscimento - Il dispositivo richiedente risponde inviando un
vettore, usato dal processore come puntatore alla
routine di gestione appropriata - Arbitraggio del bus (vettorializzato)
- Il dispositivo deve ottenere il controllo del bus
prima di poter asserire la linea di richiesta
dellinterruzione
64Priorità delle interruzioni
- Quando ci sono diversi dispositivi che possono
inviare interruzioni al processore, oltre ad
identificare il dispositivo che ha generato
linterruzione e la routine di gestione
opportuna, occorre anche - Gestire la priorità delle interruzioni
- Gestire interruzioni annidate
- Arriva uninterruzione mentre si sta gestendo
unaltra interruzione - Gestione della priorità
- Semplice con linee di interruzioni individuali
- Con linterrogazione hardware (linea di
interruzione comune) la priorità si gestisce
tramite unorganizzazione dei dispositivi di tipo
daisy chain - Linterruzione di riconoscimento viene ricevuta
prima dal dispositivo a priorità più elevata e da
questi eventualmente propagato al dispositivo
successivo
65Interruzioni annidate
- Soluzione semplice si disabilitano le
interruzioni durante il servizio di un
interruzione - Soluzione restrittiva, in contrasto con le
differenti priorità dei dispositivi - Soluzione più adottata uninterruzione a
priorità più alta può interrompere il servizio di
un interruzione a priorità minore
66Direct Memory Access
- Con lI/O interrupt driven, per periferiche
veloci lattività di trasferimento è comunque
preponderante - Il processore è impegnato nel trasferimento dei
dati tra dispositivo di I/O e memoria - Per evitare lintervento del processore durante
il trasferimento si usa laccesso diretto alla
memoria (Direct Memory Access o DMA) - 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 lintervento del processore
67Direct Memory Access (2)
- Il processore ha solo il compito di supervisore
a fronte di una richiesta di I/O, il processore
invia al DMA controller - Tipo di operazione richiesta
- Dispositivo di I/O
- Indirizzo di memoria da cui iniziare a
leggere/scrivere i dati - Numero di byte da leggere/scrivere
- Il DMA controller avvia loperazione richiesta e
trasferisce i dati da/verso la memoria - Completato il trasferimento, il DMA controller
invia uninterruzione al processore per segnalare
il completamento delloperazione richiesta - Tra il momento in cui termina linvio del comando
di I/O al controller e la ricezione
dellinterruzione inviata dal DMA controller, il
processore è completamente svincolato
dalloperazione di I/O e può dedicarsi ad altre
attività
68Direct Memory Access (3)
- Possibili configurazioni DMA
- Bus singolo, DMA isolato
- Bus singolo, DMA-I/O integrati
- Bus di I/O
Bus di sistema
Bus di sistema
Bus processore-memoria
Processore
DMA
Memoria
Bus di I/O
I/O
I/O
69DMA, memoria virtuale e cache
- In sistemi con memoria virtuale, il DMA deve
trasferire usando indirizzi virtuali o indirizzi
fisici? - Se usa indirizzi fisici, il trasferimento non può
riguardare facilmente più di una pagina - Più pagine non corrispondono generalmente a
locazioni sequenziali in memoria - Se usa indirizzi virtuali, li deve tradurre in
indirizzi fisici - Il sistema operativo fornisce delle tabelle di
traduzione quando inizia il trasferimento - In sistemi con cache
- Possibili due copie di un elemento (una in cache
e una in memoria) - Altro problema derivante dalla strategia di
scrittura write-back - Come mantenere la coerenza?