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