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
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 Periferiche
Struttura di un interfaccia Interfaccia di I/O Registro di stato Registro dati Unità di controllo dell interfaccia Periferica Bus indirizzi Bus dati Bus di controllo
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