Sistemi di Elaborazione -...

18
I/O Un calcolatore è completamente inutile senza la possibile di caricare/ salvare dati e di comunicare con l’esterno Input / Output (I/O): insieme di architetture e dispositivi per il trasferimento di informazione da (Out) e verso (In) l’elaboratore I dispositivi di I/O devono essere espandibili eterogenei I dispositivi di I/O sono molto vari e la tipologia di prestazione è diversa In alcuni caso interessa il tempo di accesso (la latenza) e il tempo di risposta Es. dispositivi interattivi come tastiere o mouse In altri casi siamo interessati al throughput Es. dischi o interfacce di rete

Transcript of Sistemi di Elaborazione -...

I/O• Un calcolatore è completamente inutile senza la possibile di caricare/

salvare dati e di comunicare con l’esterno • Input / Output (I/O): insieme di architetture e dispositivi per il trasferimento

di informazione da (Out) e verso (In) l’elaboratore • I dispositivi di I/O devono essere

• espandibili• eterogenei

• I dispositivi di I/O sono molto vari e la tipologia di prestazione è diversa • In alcuni caso interessa il tempo di accesso (la latenza) e il tempo di

risposta• Es. dispositivi interattivi come tastiere o mouse

• In altri casi siamo interessati al throughput • Es. dischi o interfacce di rete

Classificazione dispositivi I/O• I dispositivi di I/O sono di vario tipo e possono essere

classificati in vari modi • Comportamento: Che operazioni posso effettuare con il

dispositivo (R/W) • Partner: può essere un uomo o una macchina • Velocità di trasferimento: tipicamente misurata in Mbit/s

Classificazione dispositivi I/O

Bus• Come collegare CPU e

periferiche? • Connessione completa?

• Bus: percorso comune che connette i diversi dispositivi • Vantaggi: elevata

flessibilità, semplicità, basso costo

• Svantaggi: gestione complessa del canale condiviso

Tipologie di Bus• Esistono tre tipi di bus:

• Bus processore/memoria: • specializzati, corti e veloci (es. northbridge/southbridge)

• Bus di sistema: • Servono per far coesistere la memoria, il processore e i dispositivi di I/O su di

un unico bus (es. PCI, ISA) • Bus IO:

• possono essere lunghi e permettono il collegamento con periferiche eterogenee (es. USB, Ethernet)

• i bus di IO non sono tipicamente collegati alla memoria in maniera diretta ma richiedono un bus processore/memoria o un bus di sistema

• Nelle prime architetture avevamo un unico grosso bus parallelo che collegava tutto • Per problemi di clock e frequenze ora si usano architetture di comunicazione più

complesse fatte di bus paralleli condivisi e di bus seriali punto/punto

Anatomia di un Bus• Bus: infrastruttura di comunicazione tra diverse unità dell’elaboratore. • Suddivisione logica in tre sezioni:

• Bus dati: le linee per trasferire dati e istruzioni da/verso i dispositivi. • Bus indirizzi: su cui la CPU trasmette gli indirizzi di memoria (o di periferica) che identificano il

dato, in lettura/scrittura dalla memoria (o ingresso/uscita da periferica). • Bus di controllo: trasporta informazioni ausiliarie per la definizione delle operazioni da

compiere e per la sincronizzazione tra i dispositivi.

• Esempio: lettura dalla memoria 1. La CPU fornisce l’︎indirizzo della parola desiderata sul bus indirizzi 2. Viene richiesta l︎operazione di lettura attivando il bus di controllo

3. Quando la memoria ha reso disponibile la parola richiesta, il dato viene trasferito sul bus dati e la CPU può prelevarlo dal bus dati ed utilizzarlo nelle sue elaborazioni

Esempio: Pentium 4

Comunicazioni su Bus• Problematiche da risolvere nella comunicazione tramite BUS: • Sincronizzazione

• Il bus è condiviso, quindi si può “trasmettere” sul bus soltanto uno alla volta • Necessario un meccanismo di sincronizzazione per coordinare la comunicazione • Comunicazione sincrona → bus sincrono

• Comunicazione scandita da un segnale di clock comune • Comunicazione asincrona → bus asincrono

• Non esiste un clock; sincronizzazione mediante dialogo fra i partecipanti • Controllo di flusso

• I dispositivi collegati al bus hanno differenti velocità e tempistiche di risposta e di comunicazione.

• Solitamente all’interno dei dispositivi sono presenti buffer, per memorizzare temporaneamente l’informazione e non essere limitati dal dispositivo più lento.

• Dimensionamento del buffer: • Buffer grossi → Aumenta la velocità di trasferimento • Buffer piccoli → Riduce i tempi di risposta (latenza)

Protocolli• Meccanismo di controllo basato su regole condivise tra le unità partecipanti alla

comunicazione • Dipende da:

• Numero di unità coinvolte • Tipo di dati scambiati (dati, acquisizione risorse, sincronizzazione • Modalità di interazione (sincrona o asincrona) • Simmetria (master-slave o multimaster) • Tipo di trasmissione (seriale o parallela) • Canale trasmissivo • Gestione degli errori di trasmissione

• La comunicazione è organizzata in sessioni, a loro volta scomponibile in segmenti • Ogni segmento richiede

1. Acquisizione del canale trasmissivo 2. Selezione dell'unità destinazione 3. Scambio dati con relativa sincronizzazione 4. Eventuale controllo e correzione degli errori 5. Rilascio del canale trasmissivo

Bus Sincrono• Il bus è dotato di un segnale di sincronizzazione (bus clock) • Comunicazione scandita dai cicli di bus clock

• in generale diverso da quello della CPU, ma sincronizzato con esso • Vantaggi

• I protocolli sincroni permettono di ottenere bus molto veloci • Svantaggi

• Tutti i dispositivi devono potere lavorare alla frequenza imposta dal bus clock • Lunghezza massima limitata (i ritardi nei fronti dovuti alla propagazione

producono disallineamenti) • Il segnale di clock deve essere dimensionato sull'interlocutore più lento

• I bus processore-memoria sono in genere sincroni: • hanno dimensioni ridotte, pochi elementi connessi e devono essere veloci • Ciclo di bus (bus cycle): n. cicli per effettuare una transazione (2÷5 CC)

Bus Sincrono: lettura mem → CPU

Bus Asincrono• Un bus asincrono non è dotato di clock • La comunicazione avviene mediante un protocollo di handshaking• Vantaggi:

• possono avere lunghezza elevata e connettere molti dispositivi (spesso i bus esterni sono asincroni)

• Svantaggi: • in genere, bassa velocità di trasferimento dati

• Esempio: comunicazione Master/Slave: Master controlla la comunicazione • Segnali:

• Master_Sync: 0: master ready, 1: master release • Slave_Sync: 0: slave ready, 1: slave release

Bus Asincrono: lettura mem → CPU

Periferiche• Periferica: dispositivo

per ingresso/uscita di informazioni, collegato alla CPU mediante bus e/o interfacce

• Interfaccia: procedura standardizzata (hw/sw: circuiti/protocolli) per la comunicazione. • hardware: controllore

della periferica • software: driver

Struttura di un’interfacciaInterfaccia di I/O

Bus di controllo

Bus dati

Bus indirizzi

Registro dati

Registro di stato

Unità di controllo dell’interfaccia

Periferica

Indirizzamento I/O• Come si accede alle periferiche da programma? • Due modalità fondamentali:

• Memory-mapped: • Come se si accedesse a celle della memoria principale

• Necessità di distinguere tra indirizzi di memoria e indirizzi di I/O

• Mediante istruzioni speciali di I/O: • Istruzioni appartenente alla ISA che indirizzano direttamente il

dispositivo • Nell’istruzione è contenuto:

• Numero identificativo del dispositivo • Parola di comando (o indirizzo della parola di comando)

Indirizzamento Memory-mapped• I registri dell’interfaccia sono considerati come celle di

memoria RAM. • I loro indirizzi saranno diversi da quelli delle celle di

memoria. • Il processore esegue operazioni di I/O come se fossero

operazioni di lettura/scrittura in memoria. • Esempio:

• sw $s0, indirizzo • lw $s0, indirizzo

• dove indirizzo è al di fuori dallo spazio fisico della memoria

Indirizzamento Memory-mapped• I controller ascoltano tutti i segnali in transito sul bus (bus

snooping) e si attivano solamente quando riconoscono sul bus indirizzi l’indirizzo corrispondente alla propria locazione di memoria.

• Gestione indirizzi di I/O in modalità memory-mapped • Gli indirizzi riservati ai registri dell’interfaccia corrispondono

di norma a porzioni di memoria riservate al SO • Non sono accessibili quindi al programma utente.

• I programmi utente devono quindi passare dal S.O. per accedere a questi indirizzi riservati (modalità kernel) • Questo è quanto viene fatto ricorrendo alle: syscall