Architettura degli Elaboratori Input / Output M. Dominoni A.A. 2003/2004 Input/Output A.A. 2003/2004 1 Struttura del Computer • 4 componenti strutturali: – CPU: controlla le operazioni del computer – Memoria Centrale: immagazinamento dati e codice – I/O: muove dati tra il computer e l’esterno – Interconnesione del sistema: qualche meccanismo che permette la comunicazione tra CPU, Memoria e I/O Input/Output A.A. 2003/2004 2 1 Architettura degli Elaboratori Input/Output • Oltre ai componenti processore e memoria, il terzo elemento chiave di un computer e’ un insieme di moduli di I/O • Ogni modulo e’ interconnesso con il processore e la memoria e controlla uno o piu’ componenti esterni • Il modulo I/O interagisce con il resto del computer per mezzo delle tecniche di: – I/O programmato – I/O ad interrupt – DMA - Direct Memomy Access Input/Output A.A. 2003/2004 3 Interfaccia tra Processore e Periferiche • Design dello I/O influenzato da molti fattori (espandibilita’, affidabilita’) • Prestazioni: — latenza di accesso — throughput — connessione tra i dispositivi e il sistema — gerarchia di memoria — sistema operativo • Una moltitudi di utenti diversi (ex: banche, supercomputer, fisici,…) Processor Interrupts Cache Memory– I/O bus Main memory I/O controller Disk Input/Output Disk I/O controller I/O controller Graphics output Network A.A. 2003/2004 4 2 Architettura degli Elaboratori Impatto dell’I/O sulle prestazioni del sistema: Esempio • Benchmark eseguito in 100 s: – 90% CPU, 10% I/O • Ogni anno prestazione CPU migliora del 50% mentre I/O non cambia • Quanto migliora la prestazione del sistema in 5 anni? • Tempo di esecuzione = tempo CPU + tempo I/O Input/Output A.A. 2003/2004 5 Esempio cont Anno CPU I/O Totale I/O % 0 1 2 3 4 5 90 s 60 s (90/1.5) 40 s (60/1.5) 27 s (40/1.5) 18 s (27/1.5) 12 s (18/1.5) 10 s 10 s 10 s 10 s 10 s 10 s 100 s 70 s 50 s 37 s 28 s 22 s 10% 14% 20% 27% 36% 45% •Miglioramento di prestazioni dopo 5 anni: •CPU = 90/12 = 7.5 Input/Output Sistema = 100/22 = 4.5 A.A. 2003/2004 6 3 Architettura degli Elaboratori Tendenze tecnologiche Capacita’ Velocita’ (latenza) 2x in 3 anni 2x in 3 anni 4x in 3 anni 2x in 10 anni 4x in 3 anni 2x in 10 anni Logica: DRAM: Dischi: anno 1980 1983 1986 1989 1992 1995 DRAM Size 64 Kb 256 Kb 1 Mb 1000:1! 4 Mb 16 Mb 64 Mb Input/Output 2:1! Cycle Time 250 ns 220 ns 190 ns 165 ns 145 ns 120 ns A.A. 2003/2004 7 Problema reale? Differenza di prestazioni tra processore e DRAM (latenza) Proc 60%/anno. (2X/1.5anni) 1000 CPU “Legge di Moore” Processore-memoria Performance Gap: (cresce 50% / anno) 10 DRAM DRAM 9%/anno. (2X/10 anni) 2000 1998 1999 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1982 1983 1981 1 1980 Prestazioni 100 Anno Input/Output A.A. 2003/2004 8 4 Architettura degli Elaboratori Prestazioni di I/O • Ampiezza di banda di I/O può essere misurata in due modi differenti: – Quanti dati possiamo muovere attraverso il sistema in un certo tempo – data rate – Quante operazioni di I/O possiamo fare per unità di tempo – I/O rate • Quale dei due modi sia quello giusto dipende dalla particolare applicazione Input/Output A.A. 2003/2004 9 Prestazioni di I/O - Supercomputer • Batch job (esecuzione in code) • Pochi accessi a grossi file in lettura e scrittura all’inizio e alla fine • Durante l’esecuzione scittura di snapshot per fissare lo stato di esecuzione a quell’istante in caso di crash del sistema • Misura di I/O = misura di throughput = numero di byte per secondo trasferiti tra memoria principale e dischi Input/Output A.A. 2003/2004 10 5 Architettura degli Elaboratori Prestazioni di I/O - Transazioni • Applicazioni di processi di transazione (TP) coinvolgono sia: – Tempo di risposta che prestazioni basate sul troughput – La maggior parte degli accessi di I/O sono piccoli • Applicazioni TP sono misurate in numero di accessi al disco per secondo – I/O rate contrapposto al data rate precedente • Benchmark usati: TPC-C e TPC-D Input/Output A.A. 2003/2004 11 I/O: Dispositivi • Dispositivi molto diversi – – – comportamento (i.e., input vs. output) partner (chi c’e’ dall’altro lato?) data rate Device Keyboard Mouse Voice input Scanner Voice output Line printer Laser printer Graphics display Modem Network/LAN Floppy disk Optical disk Magnetic tape Magnetic disk Input/Output Behavior input input input input output output output output input or output input or output storage storage storage storage Partner human human human human human human human human machine machine machine machine machine machine A.A. 2003/2004 Data rate (KB/sec) 0.01 0.02 0.02 400.00 0.60 1.00 200.00 60,000.00 2.00-8.00 500.00-6000.00 100.00 1000.00 2000.00 2000.00-10,000.00 12 6 Architettura degli Elaboratori I/O Esempio: Dischi • Per accedere ai dati: — ricerca: posizionamento della testina sopra la traccia appropriata (8 to 20 ms -media) — latenza di rotazione: attesa per il settore desiderato (.5 / RPM) — trasferimento: portare i dati (uno o piu’ settori) – da 2 a 15 MB/sec Input/Output Platters Tracks Platter Sectors Track A.A. 2003/2004 13 Esempio: tempo di lettura di un disco • Determinare il tempo medio per leggere un settore a 512 byte di un disco a 5.400 RPM dove: – – – – Tempo di ricerca medio = 12 ms Transfer rate = 5MB/s Controller overhead = 2 ms Disco idle all’inizio del trasferimento • Tempo medio di lettura = tempo di ricerca medio + latenza di rotazione + tempo di trasferimento + controller overhead • 12 ms + (0.5/5.400 RPM) + 0.5 KB/ 5MB/s + 2 ms = 12 ms + 5.6 ms + 0.1 ms + 2 ms = 19.7 ms Input/Output A.A. 2003/2004 14 7 Architettura degli Elaboratori BUS: Sistema di Interconnesione • Un BUS e’ un canale di comunicazione che collega 2 o piu’ componenti: e’ un mezzo di trasmissione condiviso • Piu’ componenti collegati al BUS: il segnale trasmesso da un componente e’ disponibile per essere ricevuto da tutti gli altri componenti collegati al bus • Solo un componente alla volta puo’ trasmettere sul bus • Bus costituito da un insieme separato di linee: le linee possono essere classificate in tre gruppi funzionali: – Linee dati – Line di indirizzo – Linee di controllo Inoltre possono essere presenti linee di potenza per alimentare i moduli connessi Input/Output A.A. 2003/2004 15 Esempio: operazione di input C o n t r o l li n e s M e m o ry P ro c e s s o r D a t a l in e s D is k s a. C o n t r o l li n e s M e m o ry P ro c e s s o r D a t a l in e s b. Input/Output D is k s A.A. 2003/2004 16 8 Architettura degli Elaboratori Esempio: operazione di output C o n tr o l lin e s M e m o ry P ro c e s s o r D a t a l in e s D is k s a . C o n tr o l lin e s M e m o ry P ro c e s s o r D a t a l in e s D is k s b . C o n tr o l lin e s M e m o ry P ro c e s s o r D a t a l in e s D is k s c. Input/Output A.A. 2003/2004 17 Struttura del Bus - cont • Linee dati: collettivamente sono chiamate bus dati – – Esempio: • PCI: – Ampiezza bus dati: 32 / 64 bit • SCSI – Ampiezza bus dati: 8-32 bit Input/Output A.A. 2003/2004 18 9 Architettura degli Elaboratori Struttura del Bus – cont 2 • Linee di indirizzo: permettono di designare la sorgente e la destinazione dei dati sul bus dati - puo’ essere usato il bus dati per trasmettere l’indirizzo • Linee di controllo: sono usate per controllare l’accesso e l’uso delle linee dati e di indirizzo – Tipiche linee di controllo includono: – – – – – – – – – – – Memory write Memory read I/O write I/O read Transfer ACK Bus request Bus grant Interrupt Request Interrupt ACK Clock Reset Input/Output A.A. 2003/2004 19 Struttura del Bus – cont 3 Backplane bus Processor • Memory Gerarchia di Bus I/O devices a. Processor-memory bus Processor Memory Bus adapter Bus adapter I/O bus Bus adapter I/O bus I/O bus b. Processor-memory bus Processor Memory Bus adapter Bus adapter I/O bus Bus adapter I/O bus Backplane bus c. Input/Output A.A. 2003/2004 20 10 Architettura degli Elaboratori Struttura del Bus – cont 4 • Bus classificati in tre tipi: – Bus processore–memoria: • sono spesso specifici (proprietari) • Sono corti, ad alta velocità • Massimizzano l’ampiezza di banda tra cpu e mem – Bus di I/O: • Sono lunghi • molti dispositivi attaccati • Ampio intervallo di ampiezza di banda dei dispositivi – Bus di backplane – Questi due ultimi tipi di bus sono spesso standard Input/Output A.A. 2003/2004 21 Struttura del Bus – cont 5 • Bus Sincrono: include un clock nelle linee di controllo ed un protocollo prestabilito per la comunicazione – Adatto per bus molto veloci – due principali svantaggi: • Tutti i device sul bus devono funzionare allo stesso clock • Se sono particolarmente veloci non possono essere molto lunghi – Esempio: bus processore- memoria Input/Output A.A. 2003/2004 22 11 Architettura degli Elaboratori Struttura del Bus – cont 6 • Bus Asincrono: – Puo’ accogliere una grande varieta’ di device (con clock diversi) – Non ci sono problemi di lunghezza • Per coordinare la trasmissione dei dati si usa un protocollo di “handshaking”: • Consiste in una serie di passi in cui sender e receiver procedono al successivo passo solo se entrambe le parti concordano • Bus asincrono scala meglio con I cambiaenti tecnologici e supporta una ampia varietà di dispositivi e velocità • Bus di I/O sono spesso asincroni Input/Output A.A. 2003/2004 23 Struttura del Bus – cont 7 • Esempio di funzionamento del bus asincrono: ReadReq 1 3 Data 2 2 4 6 4 Ack 5 7 DataRdy Input/Output A.A. 2003/2004 24 12 Architettura degli Elaboratori Bus sincrono: esempio • • • • ciclo clock = 50 ns (20 MHz) Ogni trasmissione richiede 1 ciclo di clock Bus dati = 32 bit Trovare l’ampiezza dati per una lettura di una word da una memoria da 200 ns 1. Invio dell’indirizzo di memoria = 50 ns 2. Lettura della memoria = 200 ns 3. Invio dei dati al dispositivo = 50 ns tempo totale = 300 ns Ampiezza di banda = 4 byte/300 ns = 13.3 MB/s Input/Output A.A. 2003/2004 25 Bus asincrono: esempio • Handshake = 40 ns – Step 1 = 40 ns – Step 2, 3, 4 = max(3x40 ns , 200 ns) – Step 5, 6, 7 = 3x40 ns • • Tempo totale = 360 ns Ampiezza di banda = 4 byte/ 360 ns = 11.1 MB/s Input/Output A.A. 2003/2004 26 13 Architettura degli Elaboratori Bus - Sommario • Link di comunicazione condivisa (una o piu’ linee) • Difficolta’ di disegno: — puo’ essere un collo di bottiglia — lunghezza del bus — numero dei dispositivi — buffer per una maggiore ampiezza di banda aumentano la latenza — connessione a dispositivi differenti — costo • Tipi di bus: — processore-memoria (corto, alta velocita’, specifico) — backplane (alta velocita’, spesso standard -> PCI) — I/O (lungo, differenti dispositivi, standard -> SCSI) • Sincrono vs. Asincrono — uso di un clock e di un protocollo sincono, veloce e piccolo ma ogni dispositivo deve operare alla stessa velocita’ — non si usa un clock -> invece si usa il protocollo di handshaking Input/Output A.A. 2003/2004 27 Accesso al Bus • Bus master – slave B u s re q u es t lin e s M em o ry P ro c e s s or Bus D is ks a. B u s re q u es t lin e s M em o ry P ro c e s s or Bus D is ks b. B u s re q u es t lin e s M em o ry P ro c e s s or Bus c. Input/Output D is ks A.A. 2003/2004 28 14 Architettura degli Elaboratori Bus Arbitration • Bus Arbitration: decidere quale bus master puo’ iniziare ad usare il bus • Gli schemi di arbitrato devono bilanciare due fattori nel decidere quale device ha accesso al bus: – Priorita’ sul bus: I device con maggiore priorita’ devono potere accedere prima al bus – Ogni device sul bus deve potere accedere Input/Output A.A. 2003/2004 29 Bus Arbitration – cont 2 • Arbitrato si puo’ dividere in quattro classi generali: • Arbitrato centralizzato, parallelo: esempio bus PCI un arbitro centralizzato sceglie tra I device che devono accedere al bus e notifica al prescelto che e’ stato nominato bus master – Lo svantaggio e’ che richiede un arbitro centralizzato che puo’ divenire il collo di bottiglia Input/Output A.A. 2003/2004 30 15 Architettura degli Elaboratori Bus Arbitration – cont 3 • Daisy Chain: – Vantaggio semplicita’ – Svantaggio: non assicura l’accesso a tutti Highest priority Device 1 Lowest priority Device 2 Grant Bus arbiter Grant Device n Grant Release Request Input/Output A.A. 2003/2004 31 Bus Arbitration – cont 4 • Arbitrato distribuito per auto-selezione: tutti device sul bus inviano una richiesta di accesso indicando la relativa priorita’: non c’e’ bisogno di un arbitro centralizzato – esempio NuBus su Apple Macintosh II • Arbitrato distribuito per analisi di collisione: ogni device sul bus richiede accesso – multiple richieste simultanee generano collisione – Ethernet usa questo schema Input/Output A.A. 2003/2004 32 16 Architettura degli Elaboratori Punti Importanti • Bus Arbitration: – daisy chain – Arbitrato centralizzato (richiede un arbitro) => PCI – Auto-selezione => NuBus usato in Macintosh – collision detection => Ethernet • Sistema operativo: – Polling – Interrupt – DMA Input/Output A.A. 2003/2004 33 CPU vs I/O • CPU deve inviare un comando ad un dispositivo di I/O • ci sono due metodi di indirizzamento – Memory mapped I/O – I/O isolato • Alternativa all’I/O memory mapped e’ l’uso dedicato di istruzioni di I/O nel processore • specificano sia il dispositivo che il comando Input/Output A.A. 2003/2004 34 17 Architettura degli Elaboratori Memory mapped I/O • una porzione dello spazio di indirizzamento e’ assegnata ai dispositivi di I/O • l’accesso al dispositivo di I/O avviene in maniera analoga all’accesso in memori – Esempio: operazione di scrittura puo’ essere usata per per inviare dati al dispositivo di I/O che saranno interpretati come comandi – il sistema di memoria ignora l’operazione perche’ l’indirizzo indica una porzione dello spazio di memoria dedicata all’I/O. Il controllore del dispositivo vede la richiesta, registra i dati che invia al dispositivo come comandi. • L’indirizzo codifica sia l’identità del dispositivo che il tipo di trasmissione tra CPU e dispositivo stesso. Input/Output A.A. 2003/2004 35 Schema a Blocchi di un dispositivo esterno Input/Output A.A. 2003/2004 36 18 Architettura degli Elaboratori Schema a blocchi di un modulo di I/O Input/Output A.A. 2003/2004 37 I/O -1 • Tre tecniche possibili per le operazioni di I/O: – I/O Programmato – I/O ad Interrupt – Direct Memory Access (DMA) Input/Output A.A. 2003/2004 38 19 Architettura degli Elaboratori I/O Programmato • Dati sono scambiati tra la CPU e il modulo I/O • CPU esegue un programma che le assegna il controllo diretto sulla operazione di I/O: – Stato del dispositivo – Read e Write command – Trasferimento di dati • Polling: e’ il modo piu’ semplice con cui il device comunica con il processore – I/O device mette le informazioni in uno registro di stato e il processore deve venire ad ottenere l’informazione • Il controllo e’ completamente del processore • Lo svantaggio di questa tecnica e’ quello di sprecare un gran numero di cicli del processore: CPU e’ molto piu’ veloce delle periferiche di I/O Input/Output A.A. 2003/2004 39 I/O programmato – cont 2 • CPU a 500MHz • Numero di cicli per operazione di polling 400 – Mouse: campionato 30 volte al secondo – cicli di clock per secondo per polling=30x400=12.000 – Frazione di cicli di clock consumata: 12K/500M=0,002% – Floppy che trasferisce dati in unita’ di 16 bit a 50kB/s Frazione del processore consumata=2% – Disco che trasferisce a 4MB/s Frazione del processore consumata=20% Input/Output A.A. 2003/2004 40 20 Architettura degli Elaboratori Ciclo di istruzione con Interrupt Input/Output A.A. 2003/2004 41 I/O ad interrupt • CPU trasmette il comando al modulo di I/O e passa a fare altro • Il modulo I/O interrompe la CPU con una richiesta di servizio quando e’ pronto a scambiare I dati • La CPU esegue il trasferimento di dati e ritorna ai processi in corso • I/O ad interrupt e’ piu’ efficiente di quello programmato: elimina la necessita’ dell’attesa della CPU. • E’ comunque un metodo che consuma ancora molta CPU: ogni word di dati che e’ trasferita dalla memoria al modulo di I/O e viceversa deve passare attraverso la CPU Input/Output A.A. 2003/2004 42 21 Architettura degli Elaboratori I/O ad interrupt – cont 2 • CPU a 500MHz • Numero di cicli per operazione di trasferimento 500 • Disco trasferisce dati solo per il 5% del tempo Disco che trasferisce a 4MB/s Frazione del processore consumata durante un trasferimento =25% Frazione del processore consumata in media 5% Input/Output A.A. 2003/2004 I/O ad Interrupt: design • • 43 1 Ci sono più moduli I/O: come fa la CPU a determinare quale device ha alzato l’interrupt? Ci sono quattro tecniche: 1. 2. 3. 4. Input/Output Linee di Interrupt multiple Software poll Daisy Chain (hardware poll, vettorizzato) Bus arbitration (vettorizzato) A.A. 2003/2004 44 22 Architettura degli Elaboratori I/O ad Interrupt: design 1. 1 Linee di Interrupt multiple – – 2. Tra CPU e moduli di I/O Problema: non è pratico dedicare più che poche line del bus o pin della CPU a linee di Interrupt – è probabile che su ciascuna linea ci siano più moduli di I/O Software poll – – CPU intercetta un Interrupt Attiva le routine di servizio di interrupt: viene contattato ogni modulo di I/O per determinare chi ha alzato l’Interrupt Problema: è “time consuming” – Input/Output A.A. 2003/2004 45 Interrupt vettorizzato - design 2 3. Daisy Chain (hardware poll, vettorizzato) – – – – Fornisce un efficiente hardware poll (vedi fig. precedente – pg.31) Tutti i moduli I/O condividono la medesima line di Interrupt Quando la CPU sente una richiesta di Interrupt, invia un ACK Il modulo che ha alzato l’Interrupt intercetta l’ACK e risponde mettendo una word sulle linee dati Word – detta vettore – contiene o l’indirizzo del modulo I/O o qualche elemento di identificazione univoco – usato dalla CPU per avviare le appropriate routine di servizio proprie del dispositivo Evitato l’uso intermedio di una routine di servizio generica Tecnica chiamata di Interrupt vettorizzato Problema: e’ possibile che i dispostivi di I/O con priorità più bassa non riescano mai ad essere serviti dalla CPU – – – – 4. Bus arbitration (vettorizzato) – – – – Input/Output Modulo I/O deve prima ottenere il controllo del bus prima di potere alzare la linea di Interrupt Solo un modulo alla volta può alzare l’Interrupt CPU risponde con ACK – Modulo pone il suo vettore sulle linee dati A.A. 2003/2004 46 23 Architettura degli Elaboratori DMA • DMA coinvolge un modulo aggiuntivo sul bus di systema • Il modulo DMA e’ in grado di riprodurre il comportamento della CPU al riguardo – riceve il controllo del sistema dalla CPU • Quando la CPU vuole leggere o scrivere un blocco di dati invia una istanza al modulo DMA con le seguenti informazioni: – Se write o read – Indirizzo del dispositivo I/O coinvolto – Locazione iniziale della memoria su cui fare read/write – Numero di word da leggere/scrivere • Quando il trasferimento e’ completo il modulo DMA invia un segnale di interrupt alla CPU • LA CPU E’ COINVOLTA SOLO ALL’INIZIO E ALLA FINE DEL TRASFERIMENTO Input/Output DMA Input/Output A.A. 2003/2004 47 - schema a blocchi A.A. 2003/2004 48 24 Architettura degli Elaboratori DMA: Configurazioni Alternative Input/Output A.A. 2003/2004 49 DMA: overhead • Stesso disco e processore degli esempi precedenti • CPU: 500MHz • Ipotesi: – Setup iniziale del DMA = 1000 cicli clock CPU – Completamento = 500 ciclo clock CPU • Transfer rate: 4MB/s • Per ogni trasferimento di 8KB – dura 8KB/4MB s = 2 ms • Trasferimento DMA: – [(1000+500)x clock cycle/trasf] / [2ms/trasf] = 750 x 103 clock cycle/ s • Frazione processore consumata= 750 K/ 500 M = 0,2 % Input/Output A.A. 2003/2004 50 25 Architettura degli Elaboratori Le tre tecniche a confronto Input/Output A.A. 2003/2004 51 26