A p p u n ti d i C alcolatori E lettron...

27
A A p p p p u u n n t t i i d d i i C C a a l l c c o o l l a a t t o o r r i i E E l l e e t t t t r r o o n n i i c c i i C C a a p p i i t t o o l l o o 9 9 S S i i s s t t e e m m i i d d i i I I / / O O Introduzione: l’importanza dell’I/O ................................................................................. 1 L’attività delle CPU .................................................................................................... 2 Tipico insieme dei dispositivi di I/O di un calcolatore ....................................................... 3 I collegamenti della CPU con il mondo esterno ................................................................ 4 Terminologia sul bus ................................................................................................... 5 Parametri chiave per le prestazioni di un microprocessore .............................................. 6 Tipi di dispositivi di I/O.................................................................................................. 6 Dischi magnetici ......................................................................................................... 6 Supporti magnetici di basso costo: floppy disk .............................................................. 9 Memorie ottiche ........................................................................................................ 10 Collegamento dei dispositivi di I/O alla CPU e alla memoria .......................................... 10 Vantaggi e svantaggi dell’uso del bus ......................................................................... 12 Tipi di bus ................................................................................................................ 12 Transazioni del bus ................................................................................................... 12 Dettagli sul funzionamento del bus ............................................................................. 13 Opzioni di progetto di un bus ..................................................................................... 14 Arbitraggio del bus ................................................................................................ 16 Interfaccia con la CPU ................................................................................................. 17 I/O con DMA............................................................................................................ 19 I/O con canali dei dati ............................................................................................... 20 Interfaccia con un sistema operativo.............................................................................. 22 Il problema dei dati scaduti nelle cache ...................................................................... 22 DMA e memoria virtuale ........................................................................................... 24 Cenni alle misure delle prestazioni dell’I/O ................................................................... 25 Introduzione: l’importanza dell’I/O Introduzione: l’importanza dell’I/O L’ Input/Output (d’ora in poi brevemente I/O) viene talvolta definito come l’ “orfano” dell’architettura del calcolatore; storicamente, l’I/O è stato decisamente trascurato da coloro che erano particolarmente entusiasti delle prestazioni delle CPU e la cosa è stata quasi “istituzionalizzata” dal fatto che la misura delle prestazioni più comunemente usata è il tempo di CPU ( 1 ): il tempo di CPU è una misura che non è legata in alcun modo al sistema di I/O, dato che esso esplicitamente ignora ogni operazione di I/O. Una simile abitudine appare oggi decisamente scorretta: un calcolatore senza dispositivi di I/O è come una macchina senza ruote, con la quale cioè non si può andare da nessuna parte; il tempo di CPU è senz’altro una misura interessante, ma il tempo di risposta (inteso come tempo che intercorre tra il momento in cui l’utente dà un comando e l’istante in cui riceve la risposta), è senz’altro una misura migliore delle prestazioni, perché coinvolge tutte le operazioni compiute dalla macchina per esaudire la richiesta dell’utente. 1 Di cui abbiamo parlato nel capitolo 2.

Transcript of A p p u n ti d i C alcolatori E lettron...

Page 1: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

AAAppppppuuunnntttiii dddiii CCCaaalllcccooolllaaatttooorrriii EEEllleeettttttrrrooonnniiiccciii CCCaaapppiiitttooolllooo 999 ––– SSSiiisssttteeemmmiii dddiii III///OOO

Introduzione: l’importanza dell’I/O ................................................................................. 1 L’attività delle CPU.................................................................................................... 2

Tipico insieme dei dispositivi di I/O di un calcolatore ....................................................... 3 I collegamenti della CPU con il mondo esterno ................................................................ 4

Terminologia sul bus ................................................................................................... 5 Parametri chiave per le prestazioni di un microprocessore .............................................. 6

Tipi di dispositivi di I/O.................................................................................................. 6 Dischi magnetici ......................................................................................................... 6 Supporti magnetici di basso costo: floppy disk .............................................................. 9 Memorie ottiche........................................................................................................ 10

Collegamento dei dispositivi di I/O alla CPU e alla memoria .......................................... 10 Vantaggi e svantaggi dell’uso del bus ......................................................................... 12 Tipi di bus ................................................................................................................ 12 Transazioni del bus ................................................................................................... 12 Dettagli sul funzionamento del bus ............................................................................. 13 Opzioni di progetto di un bus ..................................................................................... 14

Arbitraggio del bus ................................................................................................ 16 Interfaccia con la CPU ................................................................................................. 17

I/O con DMA............................................................................................................ 19 I/O con canali dei dati ............................................................................................... 20

Interfaccia con un sistema operativo.............................................................................. 22 Il problema dei dati scaduti nelle cache ...................................................................... 22 DMA e memoria virtuale ........................................................................................... 24

Cenni alle misure delle prestazioni dell’I/O ................................................................... 25

Introduzione: l’importanza dell’I/OIntroduzione: l’importanza dell’I/O L’ Input/Output (d’ora in poi brevemente I/O) viene talvolta definito come l’

“orfano” dell’architettura del calcolatore; storicamente, l’I/O è stato decisamente trascurato da coloro che erano particolarmente entusiasti delle prestazioni delle CPU e la cosa è stata quasi “istituzionalizzata” dal fatto che la misura delle prestazioni più comunemente usata è il tempo di CPU (1): il tempo di CPU è una misura che non è legata in alcun modo al sistema di I/O, dato che esso esplicitamente ignora ogni operazione di I/O. Una simile abitudine appare oggi decisamente scorretta: un calcolatore senza dispositivi di I/O è come una macchina senza ruote, con la quale cioè non si può andare da nessuna parte; il tempo di CPU è senz’altro una misura interessante, ma il tempo di risposta (inteso come tempo che intercorre tra il momento in cui l’utente dà un comando e l’istante in cui riceve la risposta), è senz’altro una misura migliore delle prestazioni, perché coinvolge tutte le operazioni compiute dalla macchina per esaudire la richiesta dell’utente. 1 Di cui abbiamo parlato nel capitolo 2.

Page 2: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

2

Dato che le prestazioni delle CPU sono migliorate rapidamente ed hanno permesso di raggruppare le diverse classi tradizionali di calcolatori in un’unica classe, al giorno d’oggi una delle poche possibili distinzioni è proprio quella basata sull’ I/O:

• la differenza tra un calcolatore mainframe ed un minicalcolatore è che il

primo può sostenere molti più terminali e molte più unità disco;

• la differenza tra un minicalcolatore ed una workstation è che quest’ultima è provvista di uno schermo, di una tastiera e di un mouse;

• la differenza tra una workstation ed un file server è che quest’ultimo possiede dischi e unità nastro ma non ha né schermo né tastiera né mouse;

• la differenza tra una workstation ed un personal computer è che la prima è sempre connessa in rete con altre workstation.

Non è da escludere che, in un futuro nemmeno troppo remoto, tutti i calcolatori

(dalle workstation più potenti ai supercalcolatori di fascia bassa) utilizzeranno gli stessi “super-microprocessori”: se si arriverà a questo, le differenze di costo e di prestazioni saranno chiaramente determinate solo dalla memoria e dai sistemi di I/O (ed eventualmente anche dal numero di processori qualora ce ne sia più di uno).

Per comprendere l’importanza del sistema di I/O di una macchina, supponiamo che esista una differenza del 10% tra il tempo di CPU ed il tempo di risposta: ad esempio, potremmo avere un tempo di CPU di 100 ns ed un tempo di risposta di 110 ns. Supponiamo inoltre di poter accelerare la CPU di un fattore 10, lasciando però inalterato il sistema di I/O. Per calcolare l’aumento di prestazioni così ottenuto, possiamo usare la legge di Amdahl, la quale ci dice che l’incremento delle prestazioni è di un fattore pari appena a 5, con uno spreco quindi di potenzialità della CPU pari al 50%. Se addirittura usassimo una CPU 100 volte più veloce senza migliorare l’I/O, otterremmo una velocità superiore di appena 10 volte, sprecando perciò il 90% delle potenzialità.

Si è stimato che le prestazioni delle CPU aumentano ogni hanno di un valore compreso tra il 50% ed il 100%: allora, se anche i sistemi di I/O non conseguissero dei miglioramenti, ogni lavoro sarà sempre maggiormente limitato proprio dall’ I/O, tanto che non vi sarebbe più motivo di comprare CPU più veloci.

LLL’’’aaattttttiiivvviiitttààà dddeeelllllleee CCCPPPUUU Coloro che sostengono l’importanza della CPU e trascurano quella del sistema di

I/O, partono spesso dal presupposto che la velocità dell’I/O non è importante in quanto, mentre un processo aspetta una periferica di I/O, c’è sempre un altro processo in esecuzione e quindi la CPU non rimane inattiva. Al contrario, coloro che sostengono l’importanza dell’I/O alla pari di quella delle CPU forniscono una serie di argomenti per controbattere a questa tesi:

• in primo luogo, la tesi dei sostenitori delle CPU si basa su una misura

delle prestazioni fatta in termini di throughput piuttosto che in termini di tempo di risposta: si considera cioè il numero di lavori compiuti in un dato intervallo di tempo (ad esempio un’ora) piuttosto che il tempo necessario a compiere i singoli lavori; tuttavia, se il massimo throughput è senz’altro il

Page 3: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 3

principale obbiettivo in determinate applicazioni, non lo è di certo in altre, come ad esempio tutte le applicazioni interattive, in cui invece l’utente desidera interagire nel modo più rapido ed efficiente possibile con il proprio software; altro esempio sono le applicazioni che coinvolgono processi transazionali, che impongono stretti limiti al tempo di risposta;

• in secondo luogo, se è vero che, mentre un processo attende una periferica, si può cambiare processo, è altrettanto vero che questo “cambio” potrebbe risultare costoso: ad esempio, sarebbe necessaria una memoria più grande, in quanto, in caso contrario, il trasferimento di pagine dovuto al cambiamento di processo aumenterebbe ulteriormente la necessità dell’I/O. Inoltre, con i calcolatori desktop c’è sempre solo una persona per CPU, per cui ci sono anche molti meno processi contemporanei rispetto ai sistemi time sharing;

• infine, possiamo riprendere gli stessi “numeri” citati nel precedente paragrafo: se la differenza tra tempo di risposta e tempo di CPU è del 10%, un eventualmente aumento della velocità della CPU di un fattore 10, non seguito da un miglioramento del sistema di I/O, comporterà che la CPU passerà il 50% del suo tempo attendendo l’I/O. In generale, qualunque miglioramento supplementare della CPU aumenterebbe soltanto il suo tempo di inattività.

Tipico insieme dei dispositivi di I/O di un calcolatoreTipico insieme dei dispositivi di I/O di un calcolatore La figura seguente mostra un tipico insieme dei dispositivi di I/O a disposizione

di un calcolatore:

Memoria centrale

Controlloredi I/O

Controlloredi I/O

Disco Disco

BUS memoria - I/O

Stampante

CPU

Memoriacache

Controlloredi I/O

Monitor

Interruzioni

Page 4: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

4

I componenti qui considerati sono i seguenti:

• CPU; • memoria cache; • memoria principale; • bus di collegamento tra la memoria e le periferiche di I/O; • controllori di I/O (detti anche canali dell’I/O); • le periferiche di I/O.

Le prestazioni di un simile sistema sono limitate dalla parte più lenta del

percorso che va dalla CPU al generico dispositivo di I/O; di conseguenza, le prestazioni del sistema possono essere limitate da uno qualsiasi dei dispositivi elencati poco fa, oltre che dalla velocità del software di I/O e dall’efficienza nell’uso del software del dispositivo di I/O.

Se il sistema non è equilibrato, ossia ci sono componenti troppo più veloci di altri, le elevati prestazioni dei componenti più veloci potrebbero essere sprecate a causa delle basse prestazioni anche di un solo anello della catena. La difficoltà della progettazione dell’I/O consiste proprio nel configurare un sistema in cui esista armonia tra le velocità di tutti i componenti.

I collegamenti della CPU con il mondo esterno I collegamenti della CPU con il mondo esterno Un tipico microprocessore ha da 40 a 132 piedini, attraverso i quali avviene la

comunicazione con il mondo esterno; alcuni piedini inviano segnali all'esterno, alcuni ne ricevono dall'esterno, altri fanno entrambe le cose. Per capire la funzione di tutti i piedini, possiamo studiare il modo in cui la CPU interagisce con la memoria ed i dispositivi di I/O al livello della logica digitale. Tra l’altro, anche se quello che stiamo per dire vale specificamente per i microprocessori (2), le idee fondamentali (ad esempio su come la CPU faccia riferimento alla memoria o su come siano interfacciati i dispositivi di I/O) sono comunque valide anche per i minicalcolatori e, in un certo senso, anche per i mainframe, anche se in forme leggermente diverse.

I piedini di un microprocessore si dividono in 3 tipi:

• di indirizzo;

• di dati;

• di controllo. Tali piedini sono collegati ad altri piedini simili che si trovano nei chip della

memoria e in quelli di I/O: il collegamento avviene mediante una serie di cavi paralleli che costituiscono il cosiddetto bus.

Un bus appare dunque sostanzialmente come un insieme di collegamenti elettrici che corrono parallelamente lungo il computer. Esso si compone si compone di vari sottobus, ognuno dei quali trasporta qualcosa:

2 In particolare, in questa sede usiamo il termine microprocessore per indicare qualsiasi CPU che sia contenuta in un unico chip, anche se val la pena ricordare che alcuni di essi hanno l’architettura e la capacità computazionale di un piccolo mainframe.

Page 5: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5

• il bus di alimentazione porta corrente dall'alimentazione a tutte le componenti del computer; per i chip a 16 bit, tale bus ha solo 2 linee, che sono l'alimentazione e la massa;

• il bus di controllo trasporta le informazioni che riguardano la temporizzazione (i segnali di clock del sistema), i comandi (per la memoria o per l'I/O), la direzione dei dati (lettura o scrittura), i segnali di disponibilità a trasmettere o ricevere dati, gli interrupt;

• il bus degli indirizzi trasporta degli speciali segnali di controllo usati per distinguere le celle di memoria oppure i vari dispositivi di I/O; gli indirizzi vengono trasmessi lungo questo bus in un codice binario, in base al quale un segnale su ogni conduttore può rappresentare uno 0 (bassa tensione) oppure ad un 1 (alta tensione); i primi processori a 8 bit avevano 16 linee per il bus indirizzi, potendo perciò produrre 216 diversi indirizzi; successivamente, la necessità di gestire maggiori spazi di indirizzamento ha portato l'IEEE ad indicare, per il bus S-100, uno standard di 24 linee di segnale per gli indirizzi; nell'8086 e nell'8088 il bus indirizzi era a 20 bit;

• infine,il bus dei dati trasporta l'informazione reale; nei processori a 8 bit, le linee a disposizione sono 8; nei chip a 16 bit, invece, il bus dati è a 16 linee e così via.

Consideriamo, tanto per fare un esempio, il meccanismo di fetch (prelevamento)

di una istruzione da parte del microprocessore:

• il microprocessore “mette” l'indirizzo di memoria di quella istruzione sui suoi piedini di indirizzo;

• attiva una linea di controllo per informare la memoria che vuole leggere una parola;

• la memoria risponde mettendo la parola richiesta sui piedini dei dati del microprocessore e invia un segnale di assenso per dire che ha esaudito la richiesta;

• il microprocessore, ricevuto questo segnale, accetta la parola; se l'istruzione è completa, la esegue, altrimenti ripete il procedimento per prelevare le parole rimanenti (ad esempio quelle contenenti i dati su cui opera l’istruzione).

TTTeeerrrmmmiiinnnooolllooogggiiiaaa sssuuulll bbbuuusss E’ necessario spiegare un po’ di terminologia. In alcuni piedini, un segnale alto

(ad esempio +5 volt) fa sì che avvengano determinate azioni, mentre invece in altri è un segnale basso che causa le azioni. Per evitare confusione, generalmente si dice che un segnale è asserito (invece di dire alto o basso) per indicare che è posto in modo da causare delle azioni: quindi l’asserzione significa per alcuni piedini che sono stati messi alti, mentre per altri il contrario. L’opposto di asserito è negato.

Page 6: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

6

PPPaaarrraaammmeeetttrrriii ccchhhiiiaaavvveee pppeeerrr llleee ppprrreeessstttaaazzziiiooonnniii dddiii uuunnn mmmiiicccrrroooppprrroooccceeessssssooorrreee Due importanti parametri che determinano le prestazioni di un microprocessore

sono il numero di piedini di indirizzo ed il numero di piedini di dati:

• un chip con M piedini di indirizzo può indirizzare evidentemente 2M locazioni di memoria (siano esse byte o parole); i valori comuni di M sono 16, 20, 24, 32 e 64;

• analogamente, un chip con N piedini di dati può leggere e scrivere una parola di N bit con una sola operazione. I valori comuni di N sono 8, 16, 32 e 64: un microprocessore con 8 piedini di dati richiederà 4 operazioni per leggere una parola da 32 bit, mentre invece un microprocessore con 32 piedini di dati può fare lo stesso lavoro con una sola operazione. Si capisce dunque come il microprocessore risulti tanto più veloce (ma anche tanto più caro) quanto maggiore è il numero di piedini di dati.

Oltre ai piedini di dati ed a quelli di controllo, i microprocessori hanno alcuni

piedini di controllo, che regolano il flusso e la scansione dei dati verso e dal microprocessore e hanno anche altri usi. Possiamo raggruppare questi particolari piedini nelle seguenti categorie:

• controllo del bus: servono per inviare dalla CPU ai chip di memoria e di I/O,

attraverso il BUS, l'intenzione della CPU di leggere o scrivere o di fare qualcos'altro;

• interrupt: questi sono segnali diretti che i dispositivi di I/O inviano alla CPU per comunicare o che devono avviare una operazione di trasferimento oppure che l' hanno appena conclusa;

• arbitraggio del bus: questi piedini sono necessari per regolare il traffico nel bus e per evitare che due dispositivi cerchino di utilizzare il bus contemporaneamente (da notare che, per gli scopi di arbitraggio, la CPU è considerata come un normale dispositivo, talvolta anche con priorità minore rispetto ad altri dispositivi);

• segnalatori di coprocessori: questi piedini vengono usati, in presenza di coprocessori, per effettuare e garantire varie richiese;

• stato: questi piedini forniscono o accettano informazioni sullo stato del sistema.

Tipi di dispositivi di I/OTipi di dispositivi di I/O Nei prossimi paragrafi vogliamo dare essenzialmente dei cenni ad alcuni tipici

dispositivi di I/O presenti nei moderni calcolatori elettronici. Ci concentreremo, in particolare, sui dispositivi di memorizzazione, come i dischi magnetici e i dischi ottici.

DDDiiisssccchhhiii mmmaaagggnnneeetttiiiccciii Le memorie a dischi magnetici appartengono alla categoria delle memorie di

massa (o memorie ausiliarie) ad accesso diretto. Esse sono importanti in quanto

Page 7: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 7

rappresentano, nella gerarchia delle memorie (3), il livello immediatamente al di sotto della memoria principale, usato perciò per la memoria virtuale durante l’esecuzione dei programmi.

Un disco magnetico è costituito da un insieme di dischi coassiali (detti piatti), costituenti una "pila", opportunamente distanziati l'uno dall'altro e ruotanti solidarmente con velocità uniforme attorno all'asse comune (4):

Schema di una pila di dischi magnetici

Le facciate di ogni disco sono ricoperte da uno strato di materiale ferromagnetico, le cui proprietà vengono sfruttate per la registrazione delle informazioni. Il diametro dei dischi varia da 14 pollici (dischi grandi) fino a 2.5 pollici (dischi piccoli). Tradizionalmente, i dischi più grandi danno le prestazioni migliori, mentre invece quelli più piccoli hanno un costo più basso per ogni drive del disco.

In corrispondenza di ogni facciata di ogni disco, si trova una testina unica di lettura-scrittura, capace di movimento radiale o verso l'interno o verso l'esterno del disco. Le testine si trovano su altrettanti bracci meccanici, detti di esplorazione, che si muovono solidarmente come un "pettine porta testine”: in questo modo, ciascun braccio si trova sopra la stessa traccia di ogni superficie. I bit vengono registrati usando un codice con lunghezza di corsa limitata, in modo da migliorare la densità di registrazione dei mezzi magnetici.

Le facciate esterne di una pila di dischi, cioè la facciata superiore e quella inferiore, non vengono solitamente utilizzate per la conservazione dei dati e questo per motivi di sicurezza dei dati.

L'apparecchio che si occupa del movimento delle pile di dischi e del funzionamento delle testine prende il nome di unità dischi.

Ogni facciata di ogni disco è divisa in un numero variabile (a secondo del modello) di tracce concentriche: si va da 500 tracce per i modelli più piccoli a 2000 per quelli più capienti. Le tracce sono a loro volta divise in blocchi (che contengono le informazioni), separati da zone vuote dette gap. I blocchi possono essere sia di

3 Si veda in proposito il capitolo 8 4 La velocità di rotazione è di circa 3600 giri al minuto (3600 RPM)

Page 8: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

8

lunghezza variabile sia di lunghezza fissa: in quest'ultimo caso si chiamano settori e i gap si trovano evidentemente in posizione fisse sulle singole tracce. Chiaramente, il contenuto di un blocco può essere letto o riscritto solo se il blocco stesso passa sotto la testina di lettura-scrittura.

Tradizionalmente, tutte le tracce hanno lo stesso numero di settori (fino ad un

massimo di 32); le tracce esterne, che sono chiaramente le più lunghe, registrano l’informazione con una densità generalmente minore rispetto a quella delle tracce interne: così facendo, si ottiene una densità costante di bit, che è un obbiettivo perseguito sempre più spesso con l’avvento di nuove interfacce standard intelligenti come gli SCSI.

La sequenza registrata su mezzi magnetici è dunque costituita da:

• numero del settore; • uno spazio vuoto (gap); • l’informazione di quel settore (compreso il codice per la correzione degli

errori); • un altro spazio vuoto; • numero del settore successivo e così via.

Per leggere o scrivere un settore, il dispositivo di controllo del disco (disk drive)

invia un comando per posizionare il braccio sopra la traccia desiderata: questa operazione si chiama ricerca (seek) ed il tempo impiegato per posizionare il braccio sulla traccia voluta si chiama tempo di ricerca (o anche tempo di posizionamento). Nei manuali vengono solitamente riportati i valori minimo, massimo e medio del tempo di ricerca: generalmente, i tempi medi sono dichiarati compresi tra 12 e 20 ms, ma in realtà, a seconda delle applicazioni e del sistema operativo, si possono ottenere valori pari anche a solo il 25% dei valori pubblicizzati, grazie alla distribuzione (località) dei riferimenti a disco.

Il tempo impiegato dal settore richiesto per ruotare sotto la testina viene detto latenza di rotazione (o ritardo di rotazione o tempo di latenza). La maggior parte dei dischi ruta a 3600 RPM e la latenza media per raggiungere l’informazione desiderata corrisponde a circa metà del disco. Il tempo medio di rotazione per la maggior parte dei dischi è pertanto dato da

Tempo medio di rotazione = sec0083.0RPM3600

5.0=

Page 9: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 9

Il tempo di accesso ad un blocco è dunque il risultato della somma dei seguenti tempi:

• tempo di posizionamento della testina sulla traccia contenente il blocco

interessato (dipende sia dal modello di unità a disco sia dalla distanza che la testina deve percorrere per trovare il blocco interessato);

• tempo di latenza necessario per ottenere il passaggio del blocco cercato sotto la testina (mediamente pari al semiperiodo di rotazione dei dischi);

• tempo di lettura vero e proprio (detto anche tempo di trasferimento): è il tempo necessario per trasferire un blocco di bit (tipicamente un intero settore) che si trova sotto la testina. Questo tempo è ovviamente funzione della dimensione del blocco, nonché della velocità di rotazione, della densità di registrazione su una traccia e della velocità della circuiteria elettronica che collega il disco al calcolatore.

Oltre al drive del disco, in genere è presente anche un dispositivo detto

controllore del disco (disk controller): tra questo dispositivo e la memoria centrale esiste una gerarchia di dispositivi di controllo e percorsi dei dati, la cui complessità varia in base al costo del calcolatore. Dato che il tempo di lettura è una piccola parte del tempo complessivo di accesso al disco, il controllore del disco, nei sistemi con alte prestazioni, disattiva i percorsi di dati dai dischi durante la fase iniziale di ricerca (posizionamento), in modo che altri dischi possano eventualmente trasferire i loro dati verso la memoria.

La presenza del controllore del disco impone una nuova componente del tempo di accesso al disco: si tratta del cosiddetto tempo di controllo, che rappresenta il sovraccarico che il controllore impone durante l’accesso al disco.

Infine, quando si fa riferimento alle prestazioni di un disco in un sistema di calcolatori, si considera anche il tempo speso in attesa che il disco richiesto si liberi: si parla in questo caso di ritardo di coda.

SSSuuuppppppooorrrtttiii mmmaaagggnnneeetttiiiccciii dddiii bbbaaassssssooo cccooossstttooo::: fffllloooppppppyyy dddiiissskkk La diffusione dei PC ha favorito anche la diffusione di dischi e nastri magnetici di

costo e prestazioni modeste che hanno trovato applicazione anche e soprattutto come supporti di input-output. Le apparecchiature per la registrazione e le lettura di dati su questi supporti magnetici sono concettualmente simili a quelle già viste nel precedente paragrafo, tuttavia i dispositivi di trascinamento sono molto più semplici e permettono il raggiungimento di prestazioni molto più limitate.

Un supporto economico analogo ai dischi magnetici è il floppy disk: si tratta di un disco flessibile che, a seconda dei modelli, può avere un diametro compreso tra circa 8 e 20 centimetri.

Il disco flessibile è di plastica rivestita di materiale ferromagnetico ed è contenuto permanentemente in una busta quadrata sempre di plastica; c'è un foro centrale per il dispositivo di trascinamento ed altre aperture che permettono alle testine di effettuare le operazioni di lettura e di registrazione.

Page 10: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

10

Le tracce sono in generale suddivise in settori di lunghezza fissa di 256 o 512

byte e la capacità totale varia da 250.000 a un milione di byte.

MMMeeemmmooorrriiieee ooottttttiiiccchhheee Data l'importanza fondamentale che la memoria riveste per un calcolatore

elettronico, ci si sforza continuamente di trovare delle soluzioni che permettano alte prestazioni per quanto riguarda la capacità di memorizzazione e la velocità di accesso. Attualmente, il filone più promettente nell'area delle memorie di massa sembra essere quello delle memorie ottiche, basate sulla modifica permanente di un supporto (provocata da un raggio laser) e sulla possibilità di riconoscere che tale modificazione è avvenuta, sempre per mezzo di un fascio di luce. I dischi usati in questo caso sono i Compact Disk, i quali forniscono prestazioni molto interessanti accompagnate però da difetti non sempre irrilevanti, almeno allo stato attuale di tecnologia.

Per quanto riguarda le capacità di memorizzazione, un solo disco del diametro di 12 cm può immagazzinare fino a 500 milioni di caratteri, offrendo al tempo stesso una notevole sicurezza dei dati. La limitazione di questi dispositivi consiste, almeno per il momento, nella difficoltà di modificare o cancellare le informazioni contenute, per cui tali dischi si possono usare come supporti di memoria a sola lettura (da cui il termine CD-ROM).

Collegamento dei dispositivi di I/O alla CPU e alla Collegamento dei dispositivi di I/O alla CPU e alla memoriamemoria

In un sistema di calcolatori, i vari sottosistemi devono essere in grado di interfacciarsi uno con l’altro: ad esempio, la memoria e la CPU hanno bisogno di comunicare tanto quanto la CPU ed i dispositivi di I/O. Questo requisito viene ottenuto tramite l’uso del bus: il bus serve dunque come legame di comunicazione condiviso tra i vari sottosistemi.

Page 11: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 11

Un bus è un comune collegamento elettrico tra molti dispositivi. L’esempio forse più comune è il cosiddetto bus di sistema, presente in tutti i microcalcolatori: esso è costituito da 50 a 100 cavi di rame paralleli, incisi sulla piastra madre e dotati di connettori (spaziati ad intervalli regolari) per l’innesto delle piastre di memorie e di quelle di I/O. Oltre al bus di sistema si possono poi avere altri bus da usarsi per “scopi speciali”: ad esempio, li si può usare per collegare un microprocessore ad uno o più coprocessori e/o a memorie locali. Inoltre, all’interno dello stesso microprocessore sono presenti svariati bus per collegare i componenti interni dello stesso. La figura seguente propone un esempio:

Piastra dellamemoriacentraleBus nel chip

RegistriBus

ALUPiastra

I/OPiastra

I/O

Bus di sistema

Coprocessore

CPU

Esempio di sistema di calcolo dotato di diversi bus: si distinguono il bus di sistema da quello usato per collegare la CPU al coprocessori e da quelli usati solo all’interno della CPU stessa,

per il collegamento dei vari componenti (ALU, registri, …)

Sussistono differenze fondamentali tra il bus di sistema e quelli usati all’interno di un microprocessore; una di queste riguarda la “standardizzazione”:

• i progettisti di microprocessori sono liberi di usare un qualsiasi tipo di bus

all’interno del chip;

• al contrario, per rendere possibile il collegamento al bus di sistema da parte di piastre progettate da terze parti, è indispensabile che ci siano delle regole ben precise su come funziona il bus, alle quali i dispositivi devono obbedire. Queste regole costituiscono il protocollo del bus. Esse devono includere anche le specifiche meccaniche ed elettriche sul bus, in modo che le piastre di terze parti abbiano dei connettori “combacianti” con quelli sulla piastra madre, sia fisicamente sia in termini di voltaggio.

Al giorno d’oggi, ci sono diversi bus usati nel mondo dei calcolatori. Purtroppo, la

standardizzazione appare molto improbabile in questo campo, dato che ormai sono stati fatti grossi investimenti nei vari sistemi incompatibili tra loro.

Page 12: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

12

VVVaaannntttaaaggggggiii eee sssvvvaaannntttaaaggggggiii dddeeellllll’’’uuusssooo dddeeelll bbbuuusss I vantaggi principali di utilizzo del bus sono due: basso costo e versatilità.

Infatti, attraverso l’uso di un singolo schema di interconnessione, possono essere aggiunti facilmente nuovi dispositivi; inoltre, le periferiche possono essere spostate da un calcolatore ad un altro, a patto ovviamente che questi usino lo stesso tipo di bus. Per quanto riguarda il costo, invece, è basso in quanto un singolo insieme di fili è usato in molti modi.

Esiste anche uno svantaggio nell’uso di bus, rappresentato dal fatto che esso crea un collo di bottiglia nelle comunicazioni, limitando così il massimo throughput dell’I/O. Quando l’I/O deve attraversare un bus centrale, questa limitazione è equivalente a quella imposta dalla banda passante della memoria. Nei sistemi in cui l’I/O è frequente così come in quelli in cui le velocità di I/O sono alte perché devono adeguarsi alle CPU di prestazioni elevate, la sfida maggiore per i progettisti consiste nel progettare bus in grado di soddisfare le esigenze del processore.

Una delle ragioni che concorrono a complicare il progetto di un bus è che la massima velocità ottenibile su di esso è fortemente limitata da fattori fisici: in particolare, è limitata dalla lunghezza del bus e dal numero dei dispositivi ad esso attaccati (ossia dal “carico” del bus”). Questi limiti fisici rendono difficile ottenere grandi accelerazioni di prestazioni del bus. Non solo, ma capita spesso che il desiderio di ottenere elevate velocità di I/O (cioè bassa latenza) e quello di ottenere elevati throughput di I/O sono spesso in conflitto tra loro.

TTTiiipppiii dddiii bbbuuusss I bus sono tradizionalmente classificati in due categorie:

• i bus di I/O possono essere molto lunghi, possono essere collegati a tipi anche molto diversi di dispositivi (con banda passante estremamente variabile da uno all’altro) e, generalmente, si adeguano ad uno standard preciso;

• i bus CPU-memoria sono invece corti e generalmente molto veloci e sono costruiti in funzione delle caratteristiche del sistema di memoria, in modo da massimizzare la banda passante tra memoria e CPU. Il progettista di questo tipo di bus conosce a priori tutti i tipi di dispositivi che devono essere collegati tra loro, al contrario del progettista del bus di I/O, che invece deve prevedere il collegamento di dispositivi con capacità variabili, sia per la latenza sia per la banda passante.

Per ridurre i costi, alcuni calcolatori sono dotati di un unico bus, cui sono

collegati sia la memoria sia i dispositivi di I/O.

TTTrrraaannnsssaaazzziiiooonnniii dddeeelll bbbuuusss Una transazione del bus è composta da due parti:

• spedizione dell’indirizzo sul bus;

• ricezione o spedizione del dato dal bus o sul bus.

Page 13: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 13

Le transazioni del bus sono solitamente definite in base a come operano sulla memoria:

• la transazione di lettura trasferisce dei dati dalla memoria verso la CPU o

verso un dispositivo di I/O. In questo caso, l’indirizzo viene in primo luogo inviato lungo il bus verso la memoria, insieme ad appositi segnali che indicano che l’operazione richiesta è una lettura; la memoria risponde restituendo il dato sul bus, insieme ai segnali di controllo appropriati (ad esempio, serve un segnale per indicare che il dato richiesto è stato reso disponibile sul bus);

• la transazione di scrittura scrive invece dei dati nella memoria. In questo caso, la CPU o il dispositivo di I/O mittente dei dati spedisce sul bus sia l’indirizzo in cui desidera scrivere sia i dati stessi da scrivere, senza aspettare che altri dati vengano restituiti. Quindi, mentre solitamente, durante una lettura, la CPU deve rimanere in attesa, dopo aver trasmesso l’indirizzo, prima di ricevere i dati, per le scritture la CPU generalmente non aspetta.

DDDeeettttttaaagggllliii sssuuulll fffuuunnnzzziiiooonnnaaammmeeennntttooo dddeeelll bbbuuusss Sussiste una importante classificazione dei dispositivi che si agganciano al bus:

• ci sono dispositivi attivi, che cioè possono far partire dei trasferimenti di dati sul bus; essi sono detti master (padroni):

• ci sono poi dispositivi passivi, che invece devono necessariamente aspettare una richiesta, e per questo sono detti slave (schiavi).

Supponiamo che la CPU ordini, al controllore di un disco, di leggere o scrivere un

blocco: in questo caso, la CPU si comporta da master, mentre invece il controllore del disco da slave. Tuttavia, in un secondo tempo, il controllore del disco si comporta da master nei confronti della memoria, in quanto comanda alla memoria di accettare le parole che sta leggendo dal disk drive.

E’ evidente, quindi, che sono possibili più combinazioni di master e slave, alcune delle quali sono riportate nella seguente tabella, con relativi esempi:

Master Slave Esempio

CPU Memoria Prelevamento di istruzioni e dati, da parte della CPU, nella memoria

CPU I/O La CPU comanda il trasferimento dati da una unità di I/O

CPU Coprocessori La CPU passa al coprocessori le istruzioni per la virgola mobile

I/O Memoria DMA (direct Memory Access)

Coprocessore Memoria Il coprocessore preleva operandi dalla memoria

I segnali binari che i dispositivi del calcolatore emettono non sono normalmente

abbastanza forti per alimentare un bus, specialmente se esso è relativamente lungo ed ha anche molti dispositivi innestati. Di conseguenza, la maggior parte dei dispositivi master del bus sono collegati al bus stesso mediante un chip detto

Page 14: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

14

driver del bus: si tratta sostanzialmente di un amplificatore digitale per i segnali che devono essere inoltrati sul bus.

Dualmente, molti dispositivi slave del bus sono collegati ad esso tramite un ricevitore del bus, che rigenera il segnale in arrivo dal bus stesso.

Per quanto riguarda, invece, quei dispositivi che possono agire sia come master sia come slave, usano un chip combinato, detto transceiver del bus.

Così come un microprocessore, anche il bus presenta un certo numero di linee (di indirizzo, di dati, di controllo). Tuttavia, è bene precisare che non esiste necessariamente una corrispondenza uno-ad-uno tra il microprocessore ed il segnali del bus: ad esempio, alcuni microprocessori hanno 3 piedini che specificano (tramite la loro configurazione binaria) se è in corso una lettura o una scrittura nella memoria o nell’I/O oppure altre operazioni (con 3 piedini sono possibili 23 operazioni); al contrario, un tipico bus presenta una linea per la lettura dalla memoria, una linea per la scrittura nella memoria, una terza per la lettura dell’I/O e così via. E’ evidente, allora, che tra la CPU ed un bus di questo tipo è necessario un chip decodificatore, che converta i segnali codificati con 3 bit dalla CPU siano codificati in segnali singoli che possano guidare le linee del bus:

CPUdecod

Linee del bus

Piedinidella CPU

Il chip decodificatore traduce i segnali sui pieni della CPU in segnali che possano “guidare” le varie linee del bus: ad esempio, se i 3 piedini della CPU indicano una operazione di lettura dalla memoria, il

decodificare pone un segnale alto sulla linea del bus che identifica una operazione di lettura dalla memoria

OOOpppzzziiiooonnniii dddiii ppprrrooogggeeettttttooo dddiii uuunnn bbbuuusss I principali aspetti del progetto di un bus sono riassunti nella tabella seguente,

evidenziando quali opzioni sono indicate per ottenere alte prestazioni e quali invece per ottenere bassi costi:

Opzioni Alte prestazioni Basso costo Ampiezza del bus Linee indirizzo e linee dati

separati Linee condivise per indirizzo e dati

Ampiezza dati Maggiore ampiezza dei dati equivale a maggiore velocità (ad esempio, 32 bit)

Minore ampiezza dei dati significa maggiore economicità (ad esempio, 8 bit)

Dimensione del trasferimento Parole multiple comportano un minore sovraccarico del bus

Il trasferimento di singole parole è più semplice

Master di bus Più di uno (richiede arbitraggio) Uno solo (non richiede arbitraggio)

Transazioni spezzate Sì: pacchet ti separati di Richiesta e Risposta danno una più elevata banda passante (sono necessari più master)

No: la connessione continua è più economica ed ha una latenza inferiore

Clock Sincrono Asincrono Vediamo di commentare quanto riportato in questa tabella:

Page 15: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 15

a) la prima opzione riguarda il numero di linee che costituiscono il bus e, in particolare, la possibilità di separate le linee di indirizzo da quelle di dati: tale separazione, pur essendo poco economica, garantisce migliori prestazioni essenzialmente nelle operazioni di scrittura, in quanto abbiamo già osservato in precedenza che, quando la CPU (o un dispositivo di I/O) deve scrivere un dato in memoria, inserisce contemporaneamente sul bus sia l’indirizzo a cui scrivere sia il dato stesso; nel caso invece delle letture, la CPU prima spedisce l’indirizzo da cui leggere e poi aspetta che la memoria renda disponibile il dato leggere: in questo caso, la separazione delle linee è inutile;

b) la seconda opzione riguarda il numero di linee dati, assumendo cheogni linea corrisponda ad un bit: quante più linee sono disponibili, tantomaggiore è il numero di bit trasferibili contemporaneamente etanto maggiore è ovviamente il costo;

c) la terza opzione riguarda il numero di parole da trasferire in contemporanea: la scelta più economica è il trasferimento di parole singole, mentre quella più “prestante” è il trasferimento di parole multiple;

d) la quarta opzione riguarda il numero di dispositivi che possono comportarsi da master del bus, ossia possono autonomamente avviare una transazione di lettura o di scrittura: è ovvio che lo schema con più master risulta più efficiente, ma è altrettanto ovvio che esso richiede un meccanismo di arbitraggio del bus, che possa risolvere le situazioni in cui due o più master richiedono contemporaneamente l’uso del bus; questo argomento sarà approfondito più avanti;

e) in presenza di più dispositivi master del bus, si può ottenere, accettando dei costi maggiori, una banda passante più alta del bus usando la cosiddetta spedizione a pacchetti, oggetto della quinta opzione riportata in tabella: in pratica, anziché attribuire, per l’intera transazione, l’uso del bus al dispositivo che lo ha richiesto, si “spezza” la transazione in più parti (si parla perciò di tecnica delle transazioni spezzate, in inglese split transaction). Ad esempio, la transazione in lettura è spezzata in una transazione di richiesta della lettura, che contiene l’indirizzo, ed in una transazione di risposta dalla memoria, che contiene i dati. Naturalmente, ogni transazione deve ora essere in qualche modo “contrassegnata”, in modo che la CPU e la memoria possano sempre capire di cosa stanno trattando. Il vantaggio di questa tecnica è che il bus si rende disponibile per altri master mentre la memoria legge i dati dall’indirizzo richiesto. Questo comporta normalmente che la CPU assume la funzioni di arbitro per il bus per la spedizione dei dati, mentre la memoria arbitra il bus per la restituzione dei dati. Un bus a transazioni spezzate ha dunque generalmente una banda passante maggiori, ma anche una latenza maggiore rispetto ad un bus a transazioni complete;

f) infine, l’ultima opzione di progetto di un bus riguarda l’eventualità che il funzionamento di tale bus sia sincronizzato o meno ad un clock:

• se il bus è sincrono, esso include una linea per il clock tra le linee di controllo ed è inoltre fissato un protocollo per l’indirizzo ed i dati. Dato che è necessaria pochissima logica per decidere cosa fare, questi bus possono essere non solo veloci ma talvolta anche poco costosi. Tuttavia, essi hanno anche due svantaggi: in primo luogo, ogni “cosa” sul bus deve “muoversi” con la stessa velocità del clock; in secondo luogo, a

Page 16: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

16

causa dei problemi legati alla propagazione del segnale di clock (clock slew), le linee di un bus sincrono non devono essere lunghe. I bus che collegano la CPU alla memoria sono tipicamente sincroni;

• i bus asincroni non possiedono invece un clock, ma prevedono l’uso, da parte di chi trasmette e chi riceve i dati, di protocolli concatenati con tempo autoregolamentato. I bus asincroni sono più facilmente adattabili ad un’ampia varietà di dispositivi ed è inoltre possibile allungarli senza preoccuparsi del ritardo di propagazione dei segnali di clock oppure dei problemi di sincronizzazione in generale. Al contrario, essi risultano più lenti di quelli sincroni, proprio perché ogni transazione richiede comunque una sincronizzazione del bus. I bus asincroni si adattano comunque meglio ai cambiamenti tecnologici ed è anche per questo che i bus di I/O sono tipicamente asincroni..

Arbitraggio del bus Che cosa accade quando due o più dispositivi richiedono contemporaneamente

l'accesso al bus? E' necessario utilizzare un meccanismo di arbitraggio del bus per evitare il caos.

I meccanismi di arbitraggio possono essere centralizzati o meno. Nel caso dell' arbitraggio centralizzato, c'è un solo arbitro del bus che determina la successione degli accessi. Talvolta questo dispositivo è integrato nel chip della CPU, mentre talvolta ne è separato.

Il funzionamento di questo tipo di arbitraggio è il seguente:

• quando un dispositivo ha bisogno di accedere al bus, invia un segnale su una opportuna linea del bus stesso;

• l'arbitro nota la richiesta del bus e invia un segnale di assenso sulla linea di concessione del bus;

• questa linea è collegata ai dispositivi di I/O posti in serie;

• quando il dispositivo fisicamente più vicino all'arbitro vede l'assenso, controlla se ha fatto la richiesta: se sì , accede al bus e non propaga ulteriormente l'assenso; se no, passa l'assenso al dispositivo adiacente;

• il processo termina quando il dispositivo che ha fatto effettivamente richiesta vede l'assenso e accede al bus.

Questo schema viene detto catena di priorità (daisy chain): ad ogni dispositivo è

assegnata una priorità in funzione della vicinanza fisica all'arbitro del bus. Si tratta di un meccanismo evidentemente molto semplice; nella maggior parte

dei casi, per aggirare le priorità che dipendono dalla distanza dall'arbitro, i bus utilizzano livelli di priorità multipli: questo significa che, per ogni livello di priorità, c'è una linea di richiesta ed una di concessione e che ogni dispositivo è collegato ad un livello in funzione della quantità di tempo che può restare in attesa. Se più livelli di priorità vengono richiesti contemporaneamente, l'assenso viene dato al livello maggiore, mentre invece tra i dispositivi con la stessa priorità si usa lo schema della catena di priorità prima illustrato.

Page 17: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 17

Interfaccia con la CPUInterfaccia con la CPU Ci occupiamo adesso di analizzare l’interfaccia dei sistemi di I/O con la CPU,

usando ovviamente il bus. In particolare, il primo punto da analizzare è come si dovrebbe realizzare la connessione fisica del bus di I/O; ci sono in proposito due possibilità:

• collegare il bus di I/O a quello della memoria centrale;

• collegare il bus di I/O direttamente alla memoria cache. Nel prossimo paragrafo analizzeremo la seconda possibilità, mentre ora ci

concentriamo sul caso più frequente, che è appunto quello del collegamento del bus di I/O a quello della memoria principale. Lo schema da considerare è quello riportato nella figura seguente:

Memoria centrale

Controlloredi I/O

Controlloredi I/O

Disco Disco

BUS CPU-memoria

Stampante

CPU

Controlloredi I/O

Monitor

Memoriacache

BUS di I/O

Adattatoredel bus

Tipico interfacciamento di dispositivo di I/O e bus di I/O al bus CPU-memoria: quest’ultimo è direttamente collegato alla memoria cache (che fa da tramite con la CPU) ed alla memoria

centrale, nonché anche al bus di I/O tramite uno speciale “adattatore del bus”. Al bus di I/O sono poi collegati tutti i controllori delle varie periferiche di I/O (stampante, monitori, unità

disco, unità di rete e altro)

L’adattatore del bus si occupa di instradare tutto il traffico diretto alle periferiche di I/O e, viceversa, di ricevere il traffico proveniente da tali periferiche e riversarlo sul bus CPU-memoria. Con uno schema di questo tipo, si aumenta la produttività del sistema, grazie ad una “piramide di responsabilità” (o gerarchia) del bus. C’è però anche un inconveniente, dovuto alla necessità di sacrificare degli indirizzi di memoria per far sì che i dati destinati alle periferiche passino per l’adattatore (5).

Quest’ultima considerazione riguarda, più in generale, il secondo aspetto fondamentale da considerare sull’I/O, dopo quello relativo all’interfaccia fisica: si 5 La soluzione sarebbe quella già citata (e descritta più avanti) di collegare l’adattatore del bus direttamente alla CPU (in particolare alla memoria cache), ma in questo caso lo svantaggio è che il transito dei dati dall’I/O alla memoria principale (e viceversa) deve necessariamente passare per la CPU, che quindi viene rallentata.

Page 18: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

18

tratta di capire il modo in cui la CPU deve scegliere il dispositivo di I/O a cui vuole spedire dati o da cui desidera ricevere dati. Ci sono anche qui almeno due possibilità:

• quella più comune prende il nome di I/O mappato in memoria (memory

mapped I/O): in questo schema, alcune parti dello spazio di indirizzamento del calcolatore sono assegnate ai dispositivi di I/O (o, come vedremo, ai relativi “controllori”), per cui letture e scritture a quegli indirizzi equivalgono a trasferimenti di dati (6); alcune parti dello spazio di I/O possono anche essere usate per gestire il controllo dei dispositivi: si tratta cioè di inserire, negli indirizzi mappati in memoria, i comandi destinati ai dispositivi di I/O;

• una tecnica alternativa consiste nell’utilizzo, da parte della CPU, di codici operativi dedicati all’I/O: la CPU invia cioè un segnale che specifica che l’indirizzo è per dispositivi di I/O. Esempi di calcolatori con istruzioni di I/O sono gli Intel 80x86 e l’IBM 370.

Indipendentemente dalla tecnica di indirizzamento scelta, ogni dispositivo di I/O

è sempre provvisto di registri per fornire il proprio stato nonché ogni informazione di controllo che risulti necessaria.

Il terzo aspetto che ci interessa riguarda le modalità con cui comunicano la CPU e i dispositivi di I/O per la “gestione” di un trasferimento di dati; bisogna infatti tener conto che raramente l’I/O è una operazione singola. Ad esempio, consideriamo la stampante DEC LP11:

• tale stampante possiede due registri di I/O: uno contiene le informazioni

di stato, mentre l’altro contiene i dati che devono essere stampanti;

• il registro di stato contiene, tra gli altri, un bit di eseguito (che viene posti ad 1 dalla stampante dopo che è stato stampato un carattere) ed un bit di errore (che serve ad indicare che la stampante è bloccata o che manca la carta);

• ogni byte di dati da stampare viene messo nel registro dati: la CPU deve dunque aspettare fin quando la stampante non setta il bit di eseguito prima di poter posizionare un altro carattere nel buffer.

Questa semplice interfaccia tra CPU e dispositivo di I/O prevede dunque che la

CPU controlli periodicamente i bit di stato per vedere se è giunto il momento della successiva operazione di I/O: si parla di tecnica di polling.

Il polling ha però un evidente problema: essendo le CPU molto più veloci dei dispositivi di I/O, esse corrono il rischio di attendere molto tempo in attesa dell’I/O. Quando ci si accorse di questo, si pensò a nuove tecniche, che possiamo così riassumere:

• I/O guidati dagli interrupt (interrupt-driven I/O): consiste nel far partire il dispositivo di I/O con l’operazione richiesta e nell’imporgli di generare una interruzione (interrupt) per la CPU quando ha completato il suo compito. Questo meccanismo è senz’altro più efficiente dei precedenti, ma è lontano dall’essere perfetto, in quanto è richiesto comunque un interrupt per

6 Questo significa che gli indirizzi corrispondenti ai dispositivi di I/O non corrispondono a locazioni di memoria, bensì ai controllori di I/O.

Page 19: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 19

ciascun carattere trasmesso e l’elaborazione di un interrupt è notoriamente “costosa”. Questo impone la ricerca di un metodo per liberarsi dalla maggior parte degli interrupt: a tal proposito, una soluzione ibrida potrebbe essere quella di usare un clock per l’interruzione periodica della CPU: quando l’interruzione si verifica, la CPU passa in rassegna tutti i dispositivi di I/O e decide il da farsi;

• I/O DMA: è la soluzione al problema dei ripetuti interrupt del metodo precedente e consiste sostanzialmente nel demandare ad un organo diverso dalla CPU il compito di effettuare l’I/O programmato: tale organo prende il nome di controllore DMA (Direct Memory Access) e ne parleremo diffusamente tra poco;

• I/O che usano canali di dati: quest’ultima soluzione è stata ideata in quanto, anche se il DMA alleggerisce molto la CPU dal carico di lavoro legato all’I/O, comunque non è esente da problemi; per questo motivo, si è pensato di introdurre nell’architettura degli speciali processori di I/O, detti canali dei dati, di cui parleremo più avanti.

III///OOO cccooonnn DDDMMMAAA Analizziamo nel dettaglio le caratteristiche della gestione dell’I/O tramite il

concetto del DMA (Direct Memory Access), introdotto in molti calcolatori per permettere trasferimenti di grandi quantità di dati senza alcun intervento da parte della CPU.

L’architettura cui dobbiamo far riferimento è del tipo seguente:

BUS

Chip DMAMemoria centrale

CPU

Dispositivo diI/O

indirizzo

contatore

dispositivo

Direzione (R o W)

La caratteristica di questa architettura è evidentemente il chip DMA: si tratta di

un processore specializzato, esterno alla CPU, che è in grado di agire come master del bus. Esso possiede (almeno) 4 registri al suo interno, che possono essere caricati dal software che opera sulla CPU:

• il primo registro contiene l’indirizzo di memoria da leggere o scrivere;

• il secondo registro contiene il contatore dei byte (o delle parole) da trasferire;

• il terzo registro specifica il numero del dispositivo di I/O oppure l’indirizzo dello spazio di I/O da usare;

• il quarto registro dice infine se i dati sono da leggere dal dispositivo di I/O o da scrivere in tale dispositivo.

Page 20: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

20

Supponiamo, per esempio, che ci sia da scrivere un blocco di 32 byte, situato all’indirizzo di memoria 100, nel dispositivo di I/O numero 4. In questa situazione, la CPU provvede ad inizializzare i registri del chip DMA nel modo seguente:

Chip DMA

100

32

4

1

indirizzo

contatore

dispositivo

Direzione (R o W)

Una volta inizializzato in questo modo (da parte della CPU), il controllore DMA fa

una richiesta del bus per leggere il byte 100 della memoria, nello stesso identico modo con cui lo farebbe la CPU. Una volta ricevuto il byte richiesto, il controllore DMA fa una richiesta di I/O al dispositivo numero 4, per scrivere il byte. Terminato questo procedimento, il controllore DMA incrementa il suo registro di indirizzo (100+1=101) e decrementa il registro contatore (32-1=31): se il registro contatore risulta ancora maggiore di 0, viene letto un ulteriore byte (in questo caso quello di indirizzo 101) dalla memoria e scritto nel dispositivo; quando invece il contatore va a 0, il controllo DMA ferma il trasferimento dei dati e solo allora asserisce la linea di interrupt sul CHIP della CPU, che quindi viene messa al corrente che il trasferimento è completato.

Con un meccanismo del genere, quindi, la CPU deve solo inizializzare quei pochi registri nel chip DMA, dopodiché è libera di fare qualcos’altro fin quando il trasferimento è completato; quando il trasferimento è completato, riceve il corrispondente interrupt dal chip DMA e decide il da farsi. Da notare, tra l’altro, che alcuni chip DMA presentano più gruppi di registri, in modo tale da poter controllare trasferimenti multipli (eventualmente anche simultanei).

A fronte di questi vantaggi, ci sono comunque anche degli svantaggi nel DMA: supponiamo che un dispositivo (come ad esempio un disco) stia operando con DMA; durante i cicli del bus richiesti dal DMA sia per gli accessi alla memoria sia per quelli ai dispositivi, la CPU dovrà sempre aspettare per usare il bus, in quanto il DMA ha sempre priorità maggiore sull’uso del bus, visto che alcuni dispositivi di I/O non tollerano ritardi. Questo processo (in cui quindi il DMA porta via alla CPU un certo numero di cicli del bus) è detto furto di cicli. Si tratta di un sicuro svantaggio del DMA, ma il guadagno che si ottiene nel non dover gestire un interrupt per ciascun byte (o parola) trasferita ha sicuramente maggior peso della perdita dovuta al furto dei cicli, motivo per cui il DMA è quasi sempre utilizzato, specialmente sui personal computer e sui minicalcolatori.

III///OOO cccooonnn cccaaannnaaallliii dddeeeiii dddaaatttiii Mentre il DMA è usato nei personal computer e nei minicalcolatori, nei mainframe

la situazione è spesso diversa:

• in queste macchine, infatti, l’I/O è talmente frequente che il furto dei cicli saturerebbe facilmente il bus, per cui il DMA non appare come una soluzione praticabile;

Page 21: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 21

• allo stesso tempo, non usando il DMA, scegliendo di inviare anche solo un interrupt per blocco trasferito, si impiegherebbe troppo tempo per la gestione degli interrupt, per cui neanche l’I/O guidato dagli interrupt sarebbe una soluzione ottimale.

In base a queste considerazioni, è stata ideata una nuova metodologia per la

gestione dell’I/O, basata sull’uso di processori speciale di I/O, detti canali dei dati (o anche processori di I/O):

Memoriacentrale

CPU

Processoredi I/O

(canale)

Controlloredei terminali

Processoredi I/O

(canale)

Disco Disco Disco

BUS di memoria

BUS di I/O

Stampante

Struttura di I/O di un grande mainframe con canali dei dati

Un canale è semplicemente un processore specializzato: gli viene dato un programma da eseguire, detto programma di canale, dal quale esso “entra” ed “esce” senza bisogno di aiuto da parte della CPU centrale. Quando il programma è stato completamente eseguito, il canale invia un apposito interrupt alla CPU. Dato che un programma di canale può essere anche molto complicato, includendo il trasferimento di molti blocchi di dati, esso richiede meno interrupt che in un semplice trasferimento in DMA.

I tipici mainframe che usano questa strategia sono quelli della IBM. In essi sono presenti due tipi di canali:

• un canale selettore (selector) controlla i dispositivi ad alta velocità (come i

dischi): a causa della elevata velocità di trasmissione dei dati in questi dispositivi, un canale selettore può gestire un solo trasferimento alla volta e, in ogni caso, può avere la responsabilità di non più di due dispositivi di I/O;

• un canale multiplexer, invece, può gestire molti dispositivi a bassa velocità, come ad esempio la tastiera, il mouse, il drive del floppy disk e altro ancora.

Per eseguire un I/O, la CPU crea dapprima un programma per il canale apposito e

lo memorizza nella memoria centrale; esegue poi una istruzione START I/O,

Page 22: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

22

specificando sia il canale coinvolto sia il dispositivo di I/O da usare: il canale chiamato in causa preleva, in una locazione prefissata della memoria, l’indirizzo del programma predisposto dalla CPU e ne avvia l’esecuzione.

Oltre all’istruzione START I/O, la CPU ha comunque a disposizione altre istruzioni di I/O:

• l’istruzione HALT I/O blocca forzatamente tutte le attività del canale

selezionato;

• le istruzioni TEST I/O e TEST CHANNEL sono invece usate per determinare lo stato attuale dell’attività di I/O;

• ci sono poi altre istruzioni di importanza minore. Ogni canale è dotato di propri registri, ciascuno dei quali corrisponde ad un

indirizzo delle istruzioni di I/O eseguite dalla CPU: per questo motivo si parla di I/O mappato in memoria, in quanto sono i registri ad essere “mappati”. Ad esempio, se gli indirizzi possono coprire uno spazio di indirizzamento di 64 MB, si potrebbe pensare che i primi 32 MB corrispondano a locazioni effettive della memoria, mentre i successivi indirizzi corrispondano ai canali di I/O.

Il cosiddetto driver di un dispositivo di I/O è quel programma che conduce il collegamento tra la CPU e il dispositivo: i controllori sono infatti programmabili ed è appunto il driver a programmarli, impostando per esempio la temporizzazione di quella periferica o altro.

Interfaccia con un sistema operativoInterfaccia con un sistema operativo Abbiamo visto in precedenza che un compilatore, quando deve generare un

programma in linguaggio macchina, usa l’insieme di istruzioni del calcolatore su cui il suddetto programma è destinato ad essere eseguito. In modo perfettamente analogo, i sistemi operativi controllano che siano effettivamente presenti le tecnichedi I/O realizzate attraverso l’hardware.

IIIlll ppprrrooobbbllleeemmmaaa dddeeeiii dddaaatttiii ssscccaaaddduuutttiii nnneeelllllleee cccaaaccchhheee La diffusione delle memoria cache nei sistemi di calcolo ha aumentato la

responsabilità del sistema operativo: uno dei motivi è che la presenza delle cache implica la possibilità di avere due copie di dati (una nella cache ed una nella memoria principale) o addirittura tre copie in presenza di memoria virtuale (cache, memoria e disco); la presenza di tali copie comporta a sua volta la possibilità di avere dati scaduti (stale data); ci sono infatti da considerare due problemi:

• in primo luogo, la CPU oppure il sistema di I/O potrebbero modificare una

copia senza aggiornare l’altra;

• in secondo luogo, il sistema operativo o direttamente l’hardware devono sempre assicurarsi che la CPU legga il dato inserito più di recente e che anche l’uscita del sistema di I/O sia un dato corretto, anche in presenza di cache e di memoria virtuale.

E’ difficile pensare che sia il programmatore a prevedere una sorta di

supervisione sui dati scaduti, in quanto la memoria cache e la memoria virtuali

Page 23: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 23

sono “trasparenti” al programmatore stesso, nel senso che egli non deve sapere se sono presenti o meno e come funzionano.

Il verificarsi o meno del problema dei dati scaduti dipende in parte da dove il sistema di I/O è collegato al calcolatore:

• se il sistema di I/O è connesso alla cache della CPU, come nella prossima

figura, non si presenta il problema di scadenza dei dati, dato che tutti i dispositivi di I/O e la CPU vedono la versione più recente direttamente nella cache e, grazie ai meccanismi di gestione della memoria gerarchica, anche le altre copie del dato saranno aggiornate. Nel caso in cui i dati richiesti non sono nella cache, verranno prelevati con i meccanismi tradizionali, in modo che, in ogni caso, le copie più recenti siano nella cache. Si nota dunque che, in questo schema, la memoria cache ha un doppio accesso: dalla CPU e dal sistema di I/O. Questo risulta costoso, in quanto bisogna prevedere due distinte porte di accesso a tale memoria. E’ uno dei motivi per cui anche questa soluzione viene scartata a vantaggio di quella che vedremo quando parleremo di DMA virtuale. Un altro effetto collaterale dello schema con cache a due accessi è costituito da un calo della prestazioni della CPU: infatti, l’I/O sostituirà i blocchi nella cache con dati che poco probabilmente sono necessari al processo attivo nella CPU al momento del trasferimento. Detto in poche parole, tutti i dati dell’I/O passano attraverso la cache, ma si fa riferimento a pochi di loro. Tra l’altro, una simile configurazione richiede un arbitraggio per stabilire chi, tra CPU ed I/O, accede alla cache;

Memoria centrale

Controlloredi I/O

Controlloredi I/O

Disco Disco

BUS CPU-memoria

Stampante

CPU

Controlloredi I/O

Monitor

Memoriacache

BUS di I/O

Adattatoredel bus

TLB

Esempio di bus di I/O direttamente connesso alla memoria cache: rispetto alla configurazione con bus di I/O collegato al bus CPU-memoria, l’unica differenza è che adesso il bus di I/O è

collegato direttamente alla cache.

• se il sistema di I/O è connesso alla memoria, allora esso non interferisce con la CPU, a patto che questa sia dotata di memoria cache; tuttavia, siverifica il problema dei dati scaduti, per le ragioni citate prima. In alternatival’I/O potrebbe invalidare i dati: in particolare, potrebbe invalidare tutti

Page 24: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

24

tutti i dati che potrebbero essere presenti nella cache (nessuna verificadell’etichetta) oppure solo quelli che effettivamente sono stati caricati nellacache.

Possiamo a questo punto individuare due diversi aspetti del problema dei dati

scaduti:

• il sistema di I/O vede i dati scaduti in uscita perché la memoria non è aggiornata. Questo problema si pone quando si vuole generare un output di dati corretti in presenza di una cache e con il sistema di I/O collegato alla memoria:

o il problema verrebbe risolto da una cache di tipo write-through, dato che essa garantirebbe sempre l’uguaglianza dei dati tra cache stessa e memoria;

o se invece la cache è di tipo write-back, allora deve essere il sistema operativo a controllare gli indirizzi di uscita, per assicurarsi che essi non corrispondano a dati presenti nella cache. Questa soluzione richiede del tempo anche se i dati non sono della cache, in quanto i controlli degli indirizzi vengono fatti sequenzialmente. Si potrebbe anche demandare all’hardware il compito di controllare le etichette della cache durante l’uscita, per vedere se i dati corrispondenti sono memorizzati in una cache di tipo write-back (interagendo solo con la cache se il sistema di I/O sta tentando di leggerne un dato);

• la CPU vede i dati scaduti nella cache dopo che il sistema di I/O ha aggiornato la memoria con dati più recenti. Questo problema viene talvolta risolto dal sistema operativo, il quale garantisce che l’area di input dei dati non possa assolutamente essere nella cache. Se non c’è questa garanzia, il sistema operativo deve esaminare gli indirizzi di ingresso dei dati, per assicurarsi che non siano nella cache, il che richiede ancora una volta un certo dispendio di tempo per la ricerca sequenziale nella cache. Come visto prima, si potrebbe ancora una volta demandare all’hardware il controllo delle etichette durante l’ingresso e dei dati ed il compito di invalidare il dato in caso di conflitto.

DDDMMMAAA eee mmmeeemmmooorrriiiaaa vvviiirrrtttuuuaaallleee Supponiamo che il nostro calcolatore sia dotato di memoria virtuale e di DMA

(accesso diretto alla memoria). Si pone il problema di stabilire se il DMA debba compiere trasferimenti usando gli indirizzi virtuali (che quindi prevedano la gestione della memoria virtuale, ossia che prevedano la possibilità che i dati coinvolti si trovino sia sulla memoria principale sia su quella secondaria) oppure solo indirizzi fisici (corrispondenti cioè solo a celle della memoria centrale). Nel caso in cui si usino indirizzi fisici, si riscontrano i seguenti problemi fondamentali:

• quando bisogna trasferire un buffer con dimensioni superiori a quelle di

una pagina, ci sono dei problemi legati al fatto che le pagine del buffer non sono solitamente mappate in pagine sequenziali all’interno della memoria fisica;

• si supponga che il DMA stia trasferendo dati tra la memoria ed una struttura a buffer e che, ad un certo istante, il sistema operativo rimuova

Page 25: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 25

alcune pagine dalla memoria oppure le riallochi diversamente: c’è evidentemente il rischio che il DMA trasferisca dati da o verso una pagina errata di memoria.

Per risolvere questi problemi si può usare il cosiddetto DMA virtuale: esso

permette al DMA di usare gli indirizzi virtuali, che vengono poi mappati in corrispondenti indirizzi fisici durante il trasferimento. In questo modo, un buffer deve essere sequenziale nella memoria virtuale, ma le pagine possono anche essere sparse nella memoria fisica. Inoltre, se un processo viene trasferito usando un DMA virtuale, il sistema operativo potrebbe aggiornare la tabella degli indirizzi usata dal DMA, oppure potrebbe “bloccare” le pagine in memoria fin quando il DMA non è stato completato.

La figura seguente mostra l’architettura da usare per l’uso di DMA virtuale:

Memoria centrale

Controlloredi I/O

Controlloredi I/O

Disco Disco

BUS CPU-memoria

Stampante

CPU

Controlloredi I/O

Monitor

Memoriacache

BUS di I/O

DMA

TLB

Registri perla traduzionedegli indirizzi

Esempio di DMA virtuale: nel dispositivo di controllo per il DMA ci deve essere un registro per ogni pagina che deve essere trasferita: in tale registro sono contenuti il bit di protezione e la

pagina fisica corrispondente alla pagina virtuale.

Da notare che questa soluzione, al contrario di quella con sistema di I/O collegato direttamente (tramite ovviamente l’opportuno adattatore) alla memoria cache, prevede nuovamente una memoria cache a singolo accesso, il che semplifica la realizzazione di tale unità di memoria.

Cenni alle misure delle prestazioni dell’I/OCenni alle misure delle prestazioni dell’I/O Le prestazioni dell’I/O hanno alcune misure che non trovano praticamente alcun

corrispettivo nel progetto della CPU. Ad esempio, un parametro spesso importante per un sistema di I/O è l’eterogeneità: bisogna chiedersi quali dispositivi di I/O possono essere collegati ad un dato sistema. Altro parametro è la capacità, ossia quanti dispositivi possono essere collegati al sistema.

Page 26: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Appunti di “Calcolatori Elettronici” – Capitolo 9

Autore: Sandro Petrizzelli aggiornamento: 7 luglio 2001

26

In aggiunta a misure specifiche come queste, all’I/O vanno poi applicate le classiche misure di prestazioni valide anche per le CPU, come ad esempio il tempo di risposta (o latenza) ed il throghput (7).

La prossima figura aiuta a comprendere come si contrappongono tra loro il tempo di risposta ed il throughput:

Produttore Consumatore

Coda

Modello produttore-consumatore tradizionale per l’analisi del tempo di risposta e del throughput

In questa figura è riportato un semplice modello produttore-consumatore: il produttore genera i compiti che devono essere eseguiti e li pone in coda; il consumatore prende i compiti dalla coda e li svolge. Il tempo di risposta è allora definito come il tempo che un compito impiega dal momento in cui viene messo in coda dal produttore al momento in cui il consumatore ne termine l’esecuzione. Invece, il throughput è semplicemente il numero medio di lavorii ultimati dal consumatore durante un prefissato periodo di tempo. Al fine di massimizzare il throughput, il consumatore deve evidentemente essere sempre attivo e la coda non deve mai essere vuota. D’altra parte, però, il tempo di risposta considera anche il tempo speso in coda ed è perciò minimo quando la coda è vuota.

La figura seguente mostra la relazione esistente per il throughput ed il tempo di risposta di un tipico sistema di I/O

Tempo dirisposta(ms)

Percentuale dithroughput

20% 40% 60% 80% 100%

Relazione esistente tra throughput e tempo di risposta. Il tempo di risposta raggiunge il minimo assoluto in corrispondenza dell’11% del throughput, mentre invece si ottiene il 100% del

throughput con un tempo di risposta 7 volte maggiore del minimo. Tali dati sono relativi ad array di dischi magnetici

Il punto di ginocchio della curva indica l’area a cui un piccolo incremento del throughput corrisponde un grande incremento del tempo di risposta; viceversa, un tempo di risposta leggermente più breve si traduce in throughput molto più basso.

7 A tal proposito, segnaliamo che il throughput dell’I/O viene talvolta detto banda passante dell’I/O.

Page 27: A p p u n ti d i C alcolatori E lettron iciusers.libero.it/.../Calcolatoridownload/Calcolatori09.pdfSistemi di I/O aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 5 • il

Sistemi di I/O

aggiornamento: 7 luglio 2001 Autore: Sandro Petrizzelli 27

Un modo per migliorare contemporaneamente sia il tempo di risposta sia il throughput è quello di aggiungere più consumatori. Ad esempio, nella figura seguente ce ne sono due:

Produttore

Consumatore

Coda

Consumatore

Coda

Modello produttore singolo - consumatore multiplo

In questo caso, aumenta il throughput del sistema di I/O in quanto i dati sono distribuiti ad esempio su due dischi e quindi i vari compiti vengono svolti in parallelo; questo, però, di per sé non aiuta il tempo di risposta, a meno che il carico di lavoro non si mantenga costante ed il tempo di attesa in coda sia ridotto grazie alla presenza di maggiori risorse.

Da notare che, in uno schema come quello di figura, esiste un problema potenziale di sbilanciamento: a meno che i dati non siano perfettamente posizionati nelle code, qualche volta un consumatore sarà inattivo e con la coda vuota, mentre invece l’altro sarà impegnato con molti lavori nella sua coda.

Un’altra misura delle prestazioni dell’I/O è l’interferenza dell’I/O stesso con il lavoro della CPU: il trasferimento di dati potrebbe infatti interferire con l’esecuzione di un altro processo. Bisogna poi considerare un ulteriore carico dovuto alla gestione delle interruzioni di I/O.

Autore: Sandro Petrizzelli e-mail: [email protected]

sito personale: http://users.iol.it/sandry