Periferiche: Memorie di massa, Ingresso/Uscita e...

56
2007 2007 - - 08 08 1 Periferiche: Memorie di massa, Periferiche: Memorie di massa, Ingresso/Uscita e reti Ingresso/Uscita e reti Mariagiovanna Sami Mariagiovanna Sami

Transcript of Periferiche: Memorie di massa, Ingresso/Uscita e...

20072007--0808 1

Periferiche: Memorie di massa, Periferiche: Memorie di massa, Ingresso/Uscita e retiIngresso/Uscita e reti

Mariagiovanna SamiMariagiovanna Sami

20072007--0808-- 22 --

Il sistema di ingresso/uscitaIl sistema di ingresso/uscita

Sistema di collegamento col mondo esterno: oltre alle unità di ingresso/uscita, include anche le memorie di massa e i collegamenti alle reti informatiche; più che sulle prestazioni, i requisiti si concentrano su:

“Credibilità” (dependability – l’utente deve potersi fidare della disponibilità del sistema) e costo;Espandibilità: legata in particolare ai sistemi di memoria di massa (in genere si indica un valore minimo della memoria di massa per garantire il funzionamento di un dato software!)Possibilità di inserire molti dispositivi di tipi diversi – aspetti non richiesti per CPU e memorie cache e primaria!

20072007--0808-- 33 --

Il sistema di ingresso/uscitaIl sistema di ingresso/uscita

Le prestazioni vanno valutate a seconda dell’applicazione e del tipo di dispositivo di I/O. Caratteristiche utili per organizzare i vari tipi di dispositivo:

Comportamento – ingresso (sola lettura), uscita (sola scrittura, non può essere letto), memorizzazione (permette la rilettura e in genere anche riscritture);Interlocutore: un utente umano o una macchina?Frequenza dati (data rate): massima frequenza a cui si possono trasferire dati fra dispositivo di I/O e memoria primaria o CPU. È utile sapere qual è la richiesta massima che il dispositivo può generare.

20072007--0808-- 44 --

Tipica architettura con I/OTipica architettura con I/O

CPU

CACHE

Bus di Memoria e I/O

Memoriaprimaria

interrupt

dischi

Contr. diI/O

Contr. diI/O

Uscita grafica

Contr. diI/O

rete

20072007--0808-- 55 --

Caratteristiche di alcuni dispositivi Caratteristiche di alcuni dispositivi di I/Odi I/O

240/2560MacchinaMemoriaDisco magnetico

100/1000MacchinaI/ORete/LAN

800/8000UmanoUscitaDisplay grafico

8.0000UmanoUscitaSound output

3.0000MacchinaIngressoSound input

0.0001UmanoIngressoTastiera

Data rate (Mbit/sec)

InterlocutoreComportamentoDispositivo

20072007--0808-- 66 --

Architettura di I/OArchitettura di I/O

Come valutare le prestazioni di un sistema di I/O?In genere dipende dall’applicazione: Spesso, è rilevante il throughput: importa soprattutto la larghezza di banda del sistema di I/O, definibile in due modi diversi:1. La quantità di dati che si possono trasferire in una data

quantità di tempo2. La quantità di operazioni di I/O che si possono fare in una

data quantità di tempo.

La scelta della specifica prestazione dipende dall’applicazione.

20072007--0808-- 77 --

Architettura di I/OArchitettura di I/O

Es.:1. Applicazioni multimediali: in genere la richiesta di I/O

riguarda lunghi flussi di dati – la caratteristica importante è la banda di trasferimento;

2. Gestione di un servizio quale un ufficio imposte: si devono elaborare molti accessi indipendenti e brevi da parte di un dispositivo di I/O. Conviene trasferire in parallelo un gran numero di brevi files indipendenti –importa il numero di operazioni che si possono fare nell’unità di tempo.

20072007--0808-- 88 --

Architettura di I/OArchitettura di I/O

Altro esempio:Sistema di controllo in tempo reale: importa il tempo di risposta – in genere conviene un sistema di I/O che garantisca la minima latenza di risposta per ogni accesso;Spesso interessano sia throughput elevato sia tempo di risposta ridotto – es., Bancomat, gestione degli inventori, Web server. Importano sia il tempo richiesto da una operazione complessiva (task) sia il numero di operazioni gestite nell’unità di tempo.

20072007--0808-- 99 --

I dischi magneticiI dischi magnetici

Unità Dischi magnetici: basate su dischi rotanti rivestiti con una superficie di materiale magnetico, con una testina mobile di lettura e scrittura che accede al disco.La registrazione su disco è non volatile – i dati rimangono memorizzati anche quando si toglie l’alimentazione;Unità dischi magnetici: costituita da un insieme di dischi, ognuno con due facce su cui si può registrare, che ruotano a velocità da 5.400 a 15.000 giri al minuto (RPM); il diametro va da un pollice a circa 3,5 pollici.

20072007--0808-- 1010 --

I dischi magneticiI dischi magnetici

Ogni superficie di un disco è divisa in cerchi concentrici detto piste (tracks); su una superficie ci sono da 10.000 a 50.000 piste.Ogni pista è divisa in settori che contengono l’informazione; ce ne sono da 100 a 500 per pista. Dimensione tipica di un settore: 512 byte (si tende ora ad aumentare i settori fino a 4096 byte).Sequenza registrata sul supporto magnetico: costituita da numero del settore, intervallo libero, informazione scritta nel settore (compreso un codice per la correzione dell’errore), un altro intervallo e poi la prossima sequenza.

20072007--0808-- 1111 --

I dischi magneticiI dischi magnetici

Nei primi dischi magnetici, tutte le piste avevano lo stesso numero di settori (quindi lo stesso numero di bit); al principio degli anni ’60 si è introdotta la “registrazione di bit a zone” (Zone Bit Recording – ZBR) che ammette un numero variabile di settori per pista, mantenendo identica invece la spaziatura fra bit. La soluzione ZBR aumenta il numero di bit registrati nelle piste esterne, quindi aumenta la densità dell’unità disco (disk drive).

20072007--0808-- 1212 --

I dischi magneticiI dischi magnetici

Lettura e scrittura dell’informazione: effettuate mediante testine mobili che vengono spostate in modo da portarsi sul punto giusto. Le testine relative a ogni superficie sono collegate insieme e si spostano in modo solidale – in un dato istante ogni testina si trova sulla stessa pista di ogni superficie. L’insieme di piste su tutte le superfici dei dischi che a un dato istante si trovano sotto le testine si definisce cilindro.

20072007--0808-- 1313 --

I dischi magneticiI dischi magnetici

Accesso all’informazione sul disco: effettuato dal sistema operativo in tre passi successivi:1. Posizionamento della testina sulla pista voluta:

l’operazione è detta ricerca, seek, e il tempo necessario è detto tempo di ricerca, seek time; i produttori indicano valori minimo, massimo e medio del seek time (tempo medio: calcolato come la somma di tutti i possibili tempi di ricerca divisa per il numero di ricerche possibili). Normalmente viene indicato fra i 3 ms e i 14 ms, ma il tempo medio reale può essere solo il 25% - 33% di quello indicato grazie alla località delle ricerche su disco.

20072007--0808-- 1414 --

I dischi magneticiI dischi magnetici

Secondo passo2. Attesa che il settore voluto giunga sotto la testina – tempo

detto latenza di rotazione o ritardo di rotazione. Latenza media: pari a metà di un giro. Date le velocità di rotazione dl disco, i valori medi della latenza di rotazione sono fra:

msgiri

rotgiri

rotRML

6,5sec0056,0minsec/60/5400

5,0min/5400

5,0__

=

===

msgiri

rotgiri

rotRML

2sec0020,0minsec/60/15000

5,0min/15000

5,0__

=

===

20072007--0808-- 1515 --

I dischi magneticiI dischi magnetici

Ultima componente nel calcolo del tempo di accesso:3. Tempo di trasferimento = tempo necessario per trasferire

un blocco di bit. È funzione della dimensione del settore, della velocità di rotazione e della densità di registrazione lungo la pista. Frequenze di trasferimento (2004): da 30 a 80 MB/sec. La Maggior parte dei controllori di disco includono una cache in cui vengono memorizzati i settori mano a mano che la testina li scorre – le frequenze di trasferimento da questa cache può giungere (2004) a 320 MB/sec. Oggi, la maggior parte dei trasferimenti da disco riguardano lunghezze di più settori.

Controllore del disco: di norma gestisce il controllo dettagliato del disco e i trasferimenti fra disco e memoria. Aggiunge un suo ritardo – tempo del controllore.

20072007--0808-- 1616 --

I dischi magneticiI dischi magnetici

Esempio: si voglia calcolare il tempo medio per leggere o scrivere un settore di 512 byte da un disco che ruota a 10.000 RPM, con tempo di ricerca dichiarato di 6 ms, frequenza di trasferimento di 50 MB/sec e tempo di controllore pari a 0,2 ms. Si supponga che il disco non fosse già impegnato in un altro lavoro, così che non occorre valutare un tempo d’attesa.Tempo medio di accesso al disco = Tempo medio di ricerca + ritardo medio di rotazione + tempo di trasferimento + ritardo del controllore.

20072007--0808-- 1717 --

I dischi magneticiI dischi magnetici

Usando il tempo medio di ricerca dichiarato si ha:

Se il tempo di ricerca misurato è il 25% di quello dichiarato, il tempo medio di accesso si riduce a1.5ms+3.0ms+0.01ms+0.2ms = 4.7 ms(in questo caso il ritardo di rotazione può diventare la componente più rilevante del tempo di accesso).

ms

msMB

KBRPMrotms

2.92.001.00.30.6

2.0sec/50

5.010000

5.00.6

=+++=

=+++

20072007--0808-- 1818 --

I dischi magneticiI dischi magnetici

In 50 anni le densità dei dischi sono continuamente aumentate, mentre le dimensioni sono sempre diminuite. Analogamente, sono diminuiti i costi per byte: oggi i costi possono andare da 0.50 a 5 dollari per gigabyte, a seconda delle dimensioni, dell’interfaccia e delle prestazioni. Unità più piccole presentano vantaggi in termini di potenza consumata e volume per byte.Esempio: caratteristiche di tre unità disco.

20072007--0808-- 1919 --

I dischi magneticiI dischi magnetici

12.0-14.08.5-9.53.6-3.9Seek medio

1.5-2.01.0-1.20.2-0.4Minim.seek(ms)

3432-5857-86Freq.trasf a reg.(MB/sec)

ATA,100Serial AITA,150Ultra320SCSI,320Banda interf.esterna

888Dimens. Cache del disco (MB)

5400720015000Velocità di rot.(RPM)

248Numero di superfici(testine)

SeagateST94811ASeagateST3200822SeagateST373453Caratteristiche

40.0200.073.4Capacità (GB)

2.53.3.5Diametro (pollici)

20072007--0808-- 2020 --

Dischi magneticiDischi magnetici

Altro parametro importante: la dependability –possibilità per l’utente di aspettarsi con elevata probabilità che il disco sia in grado di fornire il servizio richiesto (di avere “il comportamento previsto”). Si definiscono due caratteristiche di un sistema:Affidabilità (reliability): misura del tempo prima che si verifichi un guasto a partire da un dato istante; una cifra tipica è il tempo medio prima del guasto (Mean Time ToFailure - MTTF). Se il sistema ammette riparazione, si introduce anche il tempo medio per la riparazione (MTTR); il tempo medio fra due guasti (MTBF) è valutabile come MTTF+MTTR.

20072007--0808-- 2121 --

Dischi magneticiDischi magnetici

Disponibilità (availability): misura del servizio reso rispetto all’alternanza fra i due stati di servizio disponibile (sistema funzionante) e interruzione di servizio (sistema guasto). Si valuta statisticamente come

Si noti: affidabilità e disponibilità sono misure quantificabili. Nel caso dei dischi visti prima, MTTF (a temperatura ambiente 25°) va da 1.200.000 ore (il primo disco) a 600.000 (per il secondo) e 330.000 (il terzo).

MTTRMTTFMTTFAvailab+

=.

20072007--0808-- 2222 --

Dischi magneticiDischi magnetici

Per migliorare il MTTF, si possono utilizzare componenti di migliore qualità o progettare il sistema in modo che continui a fornire il servizio anche se qualche componente si guasta; si distinguono tre soluzioni per migliorare MTTF:1. Fault avoidance: si evita l’insorgere di guasti con un

processo di produzione molto curato;2. Fault tolerance: si usa qualche forma di ridondanza per

consentire che il servizio continui anche se è insorto un guasto;

3. Fault forecasting: si predice la presenza o l’insorgere di un guasto (si applica anche a errori software)

La disponibilità può essere migliorata anche riducendo MTTR.

20072007--0808-- 2323 --

Dischi magneticiDischi magnetici

Affidabilità e disponibilità: essenziali per un’unità disco. Soluzione ampiamente usata che sfrutta ridondanza (cioè aggiunta di qualche disco rispetto al numero nominale) per migliorare la disponibilità: soluzione RAID (RedundantArrays of Inexpensive Disks). Invece di usare pochi dischi (di grande capacità) molto costosi, si usa un gran numero di dischi più piccoli e meno costosi; il costo della ridondanza è minore che nel primo caso. Occorre definire il livello di ridondanza opportuno.

20072007--0808-- 2424 --

Dischi magneticiDischi magnetici

RAID 0: in realtà non ha ridondanza. I dati vengono distribuiti su più dischi (soluzione detta striping) così da forzare l’accesso a più dischi simultaneamente. Si ottengono prestazioni migliori nel caso di accesso a grandi masse di dati; in realtà, non comprende ridondanza.RAID 1 o Mirroring: schema tradizionale di tolleranza ai guasti (detto anche shadowing). Si usa il doppio di dischi che in RAID 0; ogni volta che si scrive un dato su un disco lo si scrive anche su un disco ridondante – ci sono sempre due copie di qualsiasi informazione. Se un disco si guasta, il sistema accede allo “specchio” e vi legge il dato voluto. La soluzione è la più cara (N dischi nominali 2N dischi fisici).

20072007--0808-- 2525 --

Dischi magneticiDischi magnetici

RAID 2 – uso di codici per rilevare e correggere errori: si adottano particolari codici (usati di norma per le RAM) che permettono di verificare se un dato è integro ed eventualmente consentono di ricostruire il valore corretto. Di fatto, oggi non si usa. Da RAID 3 in avanti, si ricorre a schemi opportuni basati su un’estensione del concetto di parità, riducendo la ridondanza in base al fatto (verificato statisticamente) che gli errori sono molto pochi ed è molto improbabile che in una pila di dischi si presenti più di un guasto simultaneamente.

20072007--0808-- 2626 --

Dischi magneticiDischi magnetici

Es.: RAID 3. Ipotesi di errore su cui si basa la soluzione (statisticamente provata): sugli N dischi, solo uno (in una determinata posizione) presenta un errore. L’errore si presenta come l’inversione del valore di un bit (0 invece di 1, o viceversa). L’informazione registrata in un settore è strutturata in modo da rilevare (in lettura) se nel settore si è presentato un errore oppure no;Alla pila di dischi se ne aggiunge uno (ridondanza: 1 su N); sul disco ridondante si registra per ogni settore la sequenza di “bit di parità” rispetto ai dischi nominali (bit di parità =0 se il numero di 1 presenti in una configurazione è pari, =1 se tale numero è dispari):

20072007--0808-- 2727 --

Dischi magneticiDischi magnetici

Quando su uno dei dischi si rileva la presenza di errori in un settore, la configurazione corretta si costruisce “per differenza” fra la sequenza di bit di parità registrata e quella che si valuta sui dischi sani.Sono presenti soluzioni basate su questo principio fondamentale ma organizzate in modo da ammettere un numero maggiore di errori simultanei.

20072007--0808-- 2828 --

I bus e gli altri collegamenti nel I bus e gli altri collegamenti nel sistemasistema

Bus: interconnessione condivisa da più sottosistemi, che si servono di un unico insieme di linee di collegamento per comunicare.Vantaggi principali: versatilità e costo ridotto; grazie alla presenza di un unico schema di interconnessione, si possono facilmente aggiungere nuovi dispositivi e si possono adottare periferiche “sostabili” da un calcolatore all’altro, purché tutti adottino lo stesso tipo di bus.

20072007--0808-- 2929 --

I bus e gli altri collegamenti nel I bus e gli altri collegamenti nel sistemasistema

Svantaggio principale del bus: crea un collo di bottiglia nelle comunicazioni – può limitare il throughput massimo del sistema di I/O. Se tutti i trasferimenti in ingresso e in uscita devono passare attraverso un bus, la banda del bus limita il throughput. Fattori principali che limitano la velocità di un bus: lunghezza del bus stesso e numero dei dispositivi collegati.

20072007--0808-- 3030 --

I bus: elementi fondamentaliI bus: elementi fondamentali

Bus tipico: costituito da un insieme di linee di controllo e un insieme di linee di dati:

Linee dati: portano informazione da una sorgente a una destinazione; negli schemi-base si distinguono il gruppo di linee che trasportano indirizzi di memoria (bus degli indirizzi) da quelle su cui si trasferiscono parole trasferita a/dalla CPU (bus dei dati). In altre soluzioni, l’informazione trasferita sullo stesso bus dati può essere costituita da dati piuttosto che da indirizzi etc. Es.: un disco vuole trasferire dati da un settore alla RAM: sulle linee dati si trasferiranno prima l’indirizzo in cui scrivere il dato, poi il dato stesso.

20072007--0808-- 3131 --

I bus: elementi fondamentaliI bus: elementi fondamentali

Bus tipico (cont.):Linee di controllo: segnalano “richieste” e “accettazioni” (request-acknowledge) per garantire la corretta sincronizzazione degli scambi sul bus dati. SE le stesse linee possono trasferire sia dati sia indirizzi, linee specifiche indicano che tipo di informazione è trasferito sulle linee dati in un dato istante. In genere, i segnali sulle linee di controllo implementano un protocollo che regola i trasferimenti fra le vari unità collegate al bus.

20072007--0808-- 3232 --

I bus: elementi fondamentaliI bus: elementi fondamentali

Tipica transazione di bus: include due parti –inviare un indirizzo e ricevere o trasmettere un dato. Transazione di lettura: trasferisce dati dalla memoria; transazione di scrittura: trasferisce dati alla memoria. Si parla anche di input(ingresso) se l’informazione va alla CPU, di output se proviene dalla CPU.In linea di principio, uno stesso bus collega alla CPU sia memorie sia periferiche: può risultare un collo di bottiglia molto limitante.

20072007--0808-- 3333 --

I bus: elementi fondamentaliI bus: elementi fondamentali

Alternativa tradizionale: bus processore-memoria e bus di I/O.Bus processore-memoria: di norma breve, ad alta velocità, con organizzazione correlata a quella della memoria per massimizzare la banda memoria-processore.Bus di I/O: possono essere piuttosto lunghi: vi si collegano molti tipi di dispositivi, spesso hanno un ampio spettro di caratteristiche di banda per i dispositivi collegati.

20072007--0808-- 3434 --

I bus: elementi fondamentaliI bus: elementi fondamentali

I bus di I/O in genere non si collegano alla memoria direttamente, ma tramite un bus processore memoria o un backplane bus. Si sono realizzati anche bus specializzati (es., per la scheda grafica).Sono stati sviluppati diversi standard di bus di I/O – servono come specifiche sia per il produttore di calcolatori sia per quello di periferiche. Lo standard garantisce al progettista del calcolatore che esisteranno periferiche disponibili, e al progettista di periferiche che gli utenti potranno collegarle al calcolatore.

20072007--0808-- 3535 --

I bus: elementi fondamentaliI bus: elementi fondamentaliStandard dominanti per bus di I/O: Firewire (1394) e USB.

USE implementators forumIEEE 1394, 1394 BNome dello standard

5 m4.5 mMax lunghezza (rame)

12763Max. n° di dispositivi

SiSiCollegabile “a caldo”

0.2 MB/S (bassa velocità)1.5 MB/S (piena velocità) 60 MB/S (alta velocità)

50MB/s (Firewire 400)100MB/S (Firewire 800)

Manda massima teorica

AsincronoAsincronoSchema di Clock

24Ampiezza-base del bus (segnali)

I/OI/OTipo del bus

USBFirewirecaratteristiche

20072007--0808-- 3636 --

I bus: elementi fondamentaliI bus: elementi fondamentali

Schemi fondamentali di comunicazione sul bus: Sincrono eAsincrono.Bus sincrono: fra le linee di controllo esiste la linea del clock; il protocollo di comunicazione fa riferimento al clock. Es.: bus CPU-memoria su cui si esegua una lettura da memoria: il protocollo potrebbe inviare nel primo ciclo di clock l’indirizzo e il comando di lettura (tipo di operazione: indicato su una linea di controllo) e richiedere che la memoria fornisca il dato sul bus dati nel quinto ciclo di clock. Protocolli sincroni: implementati con semplici FSM, possono essere molto veloci e con logica di interfaccia compatta.

20072007--0808-- 3737 --

I bus: elementi fondamentaliI bus: elementi fondamentali

Bus sincrono: svantaggi principali: tutti di dispositivi devono fare riferimento allo stesso clock, per problemi di clock skew devono avere lunghezza limitata. Soluzione adottata in genere per il bus CPU-memoria.Bus asincrono: non ha un clock associato. Si possono collegare dispositivi di molti tipi diversi, e si può allungare senza che nascano problemi di clock skew. Per coordinare la trasmissione fra trasmittente e ricevente, un bus asincrono usa un protocollo di handshake. Protocollo di handshake: successione di passi in cui i due interlocutori procedono al prossimo passo solo se ambedue concordano. Richiede l’introduzione di linee di controllo associate al protocollo.

20072007--0808-- 3838 --

I bus: elementi fondamentaliI bus: elementi fondamentali

– Si consideri un dispositivo che richiede un dato dalla memoria: esistano tre linee di controllo:

1. ReadReq: un fronte (es., di salita) su questa linea indica una richiesta di lettura dalla memoria. Simultaneamente si porta sulle linee dati l’indirizzo di memoria.

2. DataRdy: indica che sulle linee dati è ora disponibile il dato. Nel caso in esame, è la memoria che porta l’opportuno valore del segnale su questa linea (in una transazione di ingresso, lo farebbe il dispositivo periferico di ingresso);

3. Ack: l’altro interlocutore segnala il “riconoscimento” del segnale di ReadReq o di quello di DataRdy che gli è stato inviato.

20072007--0808-- 3939 --

I bus: elementi fondamentaliI bus: elementi fondamentali

– In un protocollo asincrono, le linee di controllo ReadReq e DataRdy vengono mantenute “attive” fino a quando l’altro interlocutore (memoria o dispositivo) non segnala che l’informazione sulle linee dati è stata letta. Il processo complessivo viene detto handshaking.

ReadReq

Lineedati

Ack

DataRdy

20072007--0808-- 4040 --

L’interfaccia fra periferiche, CPU, L’interfaccia fra periferiche, CPU, memorie e sistema operativomemorie e sistema operativo

Il protocollo di bus (o più in genere di rete) dice come comunicare i dati su un insieme di linee – si deve ancora stabilire:

1. Come la richiesta di I/O viene trasformata in un comando al dispositivo e comunicata allo stesso;

2. Come si trasferiscono i data a/da memoria;3. Che ruolo ha il sistema operativo.

Il sistema operativo ha una funzione essenziale nella gestione del’I/O; agisce da “interfaccia” fra hardware e programma che richiede le operazioni di I/O.

20072007--0808-- 4141 --

L’interfaccia fra periferiche, CPU, L’interfaccia fra periferiche, CPU, memorie e sistema operativomemorie e sistema operativo

Sistemi di I/O: tre caratteristiche che richiedono l’intervento del S.O.:

1. Più programmi che girano simultaneamente sul calcolatore condividono il sistema di I/O;

2. I sistemi di I/O spesso usano il meccanismo della interruzione per comunicare informazione sulle operazioni di I/O. Le interruzioni provocano il passaggio della CPU a un “modo supervisore” e devono essere gestite dal S.O.

3. Il controllo a basso livello dell’I/O richiede la gestione di eventi concorrenti e operazioni spesso molto dettagliate.

20072007--0808-- 4242 --

Funzioni fornite dal sistema Funzioni fornite dal sistema operativo per l’I/Ooperativo per l’I/O

Il S.O.:garantisce che un programma di utente acceda solo a quelle parti dell’I/O cui l’utente ha diritto; es., il programma d’utente non può leggere o scrivere in un dato file su disco se non ha il corrispondente diritto di accesso a quel file;fornisce astrazioni dei dispositivi di I/O fornendo delle routine che ne gestiscono le operazioni a basso livello;Gestisce le interruzioni generate dai dispositivi di I/O;Fornisce equo accesso alle risorse di I/O condivise, e ordina gli accessi per migliorare il throughput.

20072007--0808-- 4343 --

Funzioni fornite dal sistema Funzioni fornite dal sistema operativo per l’I/Ooperativo per l’I/O

Il S.O. deve poter comunicare coi dispositivi di I/O e impedire che i programmi di utente comunichino direttamente con tali dispositivi:Il S.O. deve poter dare comandi ai dispositivi di I/O (oltre a lettura e scrittura, ricerca su disco etc.);Il dispositivo deve poter comunicare al S.O. quando ha terminato un’operazione o quando si è generato un errore;Si devono trasferire i dati fra dispositivo di I/O e memoria.

20072007--0808-- 4444 --

Come trasferire comandi ai Come trasferire comandi ai dispositivi di I/O?dispositivi di I/O?

Occorre che la CPU possa indirizzare il dispositivo e trasferirgli una o più parole di comando. Due soluzioni per l’indirizzamento:1. “Memory-mapped I/O”2. Istruzioni speciali d’ingresso/uscita

1. “memory-mapped I/O”: si assegna una parte dello spazio degli indirizzi ai dispositivi di I/O; letture e scritture su questi indirizzi vengono interpretate come comandi ai dispositivi di I/O. Es.: si usa una store per inviare al dispositivo di I/O un dato che il dispositivo interpreterà come comando.

20072007--0808-- 4545 --

Come trasferire comandi ai Come trasferire comandi ai dispositivi di I/O?dispositivi di I/O?

1. memory-mapped I/O (cont.):la CPU porta indirizzo e dato sul bus dati: la memoria non riconosce l’indirizzo (che non le appartiene) e lo ignora. Il controllore del dispositivo di I/O riconosce il proprio indirizzo, legge il dato e lo trasferisce (in quanto comando) al dispositivo. Il programma d’utente non può inviare comandi direttamente al sistema di I/O – il S.O. “protegge” lo spazio degli indirizzi riservato ai dispositivi di I/O.Il controllore del dispositivo di I/O può essere anche complesso – la singola operazione di lettura o scrittura può in realtà richiedere una successione di trasferimenti (es., il controllore può essere dotato di una parola di stato).

20072007--0808-- 4646 --

Come trasferire comandi ai Come trasferire comandi ai dispositivi di I/O?dispositivi di I/O?

2. Istruzioni dedicate all’I/O: possono specificare sia l’indirizzo del dispositivo, sia la parola di comando (oppure indicare dove in memoria si trova il comando). L’insieme di linee su cui si trasferisce l’indirizzo del dispositivo fa normalmente parte del bus di I/O; il comando vero e proprio può essere trasmesso sulle linee dati del bus. es.: la famiglia IA-32 Intel è dotata di istruzioni dedicate all’I/O.

20072007--0808-- 4747 --

La comunicazione fra CPU e I/OLa comunicazione fra CPU e I/O

Come viene gestita la comunicazione con un dispositivo di I/O?

1. Soluzione banale: si verificano periodicamente da programma i bit di stato del dispositivo di I/O (che indicano se il dispositivo è libero, se ha completato l’operazione assegnata, etc.). Soluzione detta polling: il programma ha il controllo totale del sistema, l’istante in cui un’operazione di I/O viene eseguita è predeterminabile da programma (e sincronizzata col programma). Usata per questo motivo in applicazioni di tempo reale, là dove occorra predeterminare in modo rigoroso l’intervallo di tempo fra due operazioni. Svantaggio: spreca molto tempo di CPU (nel programma si inserisce un “ciclo di attesa” per trovare la disponibilità del dispositivo di I/O).

20072007--0808-- 4848 --

La comunicazione con la CPULa comunicazione con la CPU

2. Soluzione che ottimizza il carico di lavoro della CPU: uso del meccanismo di interruzione: usato in quasi tutti i sistemi per parte almeno dei dispositivi di I/O – il dispositivo che ha completato un’operazione o che richiede di essere gestito invia un’interruzione alla CPU.Per identificare quale dispositivo ha generato l’interruzione, si può ricorrere a interruzione vettorizzata (il dispositivo invia sul bus dati l’indirizzo iniziale del proprio programma di gestione) oppure trasmettere al registro di “causa delle eccezioni” il codice del dispositivo interrompente. In ambedue i casi il S.O. riconosce quali operazioni intraprendere.

20072007--0808-- 4949 --

La comunicazione con la CPULa comunicazione con la CPU

2. Interruzione (cont.)Quasi tutti i processori ammettono più livelli di priorità, che indicano in quale ordine le interruzioni devono essere servite quando si presentano contemporaneamente. Sia polling sia interruzione sono tecniche che coinvolgono l’intervento della CPU e funzionano bene con dispositivi esterni a banda relativamente stretta (e con data rate relativamente basso): come gestire – ad esempio – uno schermo video, che richiede il trasferimento di una grande quantità di dati a velocità elevata?

20072007--0808-- 5050 --

Il trasferimento di dati fra Il trasferimento di dati fra dispositivo e memoriadispositivo e memoria

In queste situazioni, non si chiede di elaborare immediatamente un singolo dato, ma di trasferire grandi quantità di dati fra memoria e I/O;Nel polling, è la CPU che legge i dati dal dispositivo e li trasferisce in memoria (o viceversa); lo stesso avviene nel caso dell’interruzione. CPU e S.O. intervengono per effettuare ogni trasferimento.Soluzione che “scarica” CPU e S.O: è il controllore del dispositivo esterno che effettua direttamente il trasferimento a/da memoria: soluzione detta direct memory access (DMA), implementata con uno speciale controllore (DMAC).

20072007--0808-- 5151 --

Il trasferimento di dati fra Il trasferimento di dati fra dispositivo e memoriadispositivo e memoria

Caratteristica essenziale del DMA: il controllore di DMAdiventa anch’esso master del bus, come lo è la CPU, e dirige i trasferimenti fra se stesso e la memoria. Trasferimento in DMA: segue tre passi:

1. La CPU “inizializza” il controllore definendo l’identità del dispositivo, l’operazione da compiere (lettura o scrittura), l’indirizzo iniziale dell’area di memoria in cui leggere o scrivere, il numero di byte da trasferire.

2. Il DMAC inizia l'operazione di trasferimento fungendo da arbitro del bus; fornisce l’indirizzo di memoria (se deve trasferire più dati, provvede a incrementare l’indirizzo a ogni ciclo di trasferimento), genera gli opportuni segnali di controllo.

20072007--0808-- 5252 --

Il trasferimento di dati fra Il trasferimento di dati fra dispositivo e memoriadispositivo e memoria

3. Quando il trasferimento è completato, il controllore invia alla CPU un’interruzione per segnalare il termine dell’operazione. (si noti: in effetti il controllore di DMA ricorre all’uso di tutte e tre le modalità di gestione dell’I/O… in genere, contiene una propria area di memoria dati).Possono esserci più controllori di DMA in un sistema: es., se ci sono più bus di I/O, ognuno può includere un proprio controllore di DMA. Il DMA è utilizzato, tipicamente, per i trasferimenti col disco, col video, con la rete.

20072007--0808-- 5353 --

DMA e memoriaDMA e memoria

Senza DMA, i trasferimenti coinvolgono solo CPU e memoria : traduzioni degli indirizzi, trasferimenti a/da cache etc. avvengono come già descritto.In presenza di DMA, esiste un secondo percorso che accede alla memoria – di solito senza meccanismi di traduzione degli indirizzi (se si usano gli indirizzi fisici) né ricorso alle cache. Possono nascere problemi, che vengono risolti utilizzando tecniche miste hw/sw.

20072007--0808-- 5454 --

DMA e memoriaDMA e memoria

Esistono rischi dovuti a conflitti fra I/O e gerarchia di memorie?Problemi legati alla memoria virtuale: nascono perché le pagine hanno indirizzi sia virtuali sia fisici;Problemi legati alla cache: dovuti al fatto che possono esserci due copie di un dato – una in cache e una in RAM – e il controllore di DMA accede direttamente alla cache

possibili problemi di coerenza. Es.: si legge da disco: il DMA scrive il nuovo valore in memoria. Se l’indirizzo era presente in cache, il processore continua a leggere il valore vecchio. Analogamente, se la cache è del tipo write-back, il DMA rischia di leggere dalla RAM un valore vecchio (e quindi errato).

20072007--0808-- 5555 --

DMA e memoriaDMA e memoria

Caso della memoria virtuale: una prima soluzione consiste nel permettere al DMA di lavorare sugli indirizzi virtuali, così da consentire di fare trasferimenti che superino i confini della pagina fisica. In alternativa, il S.O. deve spezzare il trasferimento in più segmenti corrispondenti ognuno a una pagina fisica. È comunque richiesto un intervento significativo del S.O.

20072007--0808-- 5656 --

DMA e memoriaDMA e memoria

Problema di coerenza della cache: ha tre soluzioni. La prima richiede di coinvolgere la cache nei trasferimenti (costosa e con potenziale impatto negativo sulle prestazioni). La seconda richiede che il S.O. operi un’invalidazione selettiva della cache ogni volta che c’e’ una lettura da I/O oppure che forzi un write-backogni volta che c’è una scrittura su I/O (tecnica detta flushing). La terza soluzione richiede che tale invalidazione/write back sia comandata direttamente da hardware apposito.