Architetture I Lez. 21-22 Il sistema di I/O A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Dispositivi di I/O • I dispositivi di I/O hanno: • Una componente meccanica • Una componente elettronica • La componente elettronica chiamata device controller impartisce comandi al dispositivo fisico (drive/device) e ne controlla la corretta esecuzione • L’insieme dei comandi impartiti dal controller al device, il loro formato, i codici di errore riportati definiscono l’interfaccia tra il device ed il dispositivo • Un controller può controllare più device purché abbiano la stessa interfaccia • Interfacce famose: IDE (Integrated Device electronics, SCSI (Small Computer System Interface), USB (Universal Serial BUS A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Tipi di Device • I dispostivi possono essere suddivisi in due grosse categorie in funzione delle modalità con cui “manipolano” i dati su cui operano: • Dispositivi a blocchi: memorizzano e trasferiscono le informazioni in blocchi di dimensione fissa, e ciascun con un suo indirizzo. La dimensione del blocco varia da 512-32,768 byte • Dispositivi a carattere: memorizzano e trasferiscono stringhe di byte senza riferimento ad alcuna struttura di blocco • Il clock è un dispositivo di I/O che non ricade in nessuna delle due predette categorie A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Tipi di device A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Device Controller • Sono l’interfaccia di comunicazione tra la periferica e la CPU, e sono composti da registri ed in alcuni casi data buffer • Caricando opportune sequenze di bit all’interno di questi registri, il sistema operativo può richiedere l’esecuzione di comandi il cui risultato può essere prelevato sempre attraverso questi registri • L’insieme di comandi usati per comunicare con il controller, il loro formato, ed i codici di errore costituiscono l’interfaccia del controller verso il sistema operativo, questa interfaccia è devicedependent A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi La comunicazione tra controller e CPU • Come si programmano i registri dei controller? • I/O port: ad ogni registro è assegnato un numero di 8/16 bit, che specifica la porta di I/O corrispondente a cui ci si riferisce usando istruzioni di I/O • Es. mov al, 0x20 out 0x20, al • Memory mapped: Registri di I/O come indirizzi qualunque di memoria • Sistema ibrido: Buffer dati mappati in memoria, registri di controllo come I/O port A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi I/O port INTEL A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Controllo programma • I dati sono scambiati direttamente tra il controller e la CPU • La CPU ha il diretto controllo dell’operazione di I/O • La CPU inoltra un comando al controller e poi si mette in attesa della sua terminazione A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Interrupt • I registri di controllo di un device controller posseggono almeno uno status bit che indica se un’operazione di ouputè stata completata oppure se c’è un nuovo dato da consumare • Nelle periferiche più sofisticate questo inisme a questi bit viene asserita una linea di IRQ sul bus di sistema • Quindi ogni volta che si inserisce un nuovo controller su un sistema va indicato l’IRQ di riferimento, per evitare conflitti questa scelta viene spesso demandata al BIOS in fase di boot A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi DMA A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Un sistema di calcolo • Un sistema di calcolo è costituito da tre tipologie di dispositivi: • Cpu • Memorie • Periferiche di I/O • Tra questi dispositivi devono però essere stabilite degli opportuni collegamenti A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Componenti A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Primo tentativo • Una prima soluzione potrebbe essere quella di collegare i vari componenti tra di loro singolarmente ( modalità di connessione puntopunto) ma ciò comporta: • complessità dell’hardware • costo realizzativo • struttura poco flessibile A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Secondo tentativo Alternativa: utilizzare un canale di comunicazione condiviso dai vari componenti CPU Cache Bus Memory A.A. 09/10 Disk Network USB DVD … Architetture degli Elaboratori I © Danilo Bruschi BUS • Linee di Controllo: • • • Linee Indirizzi: • • trasportano segnali di richiesta e di acknowledgment indicano che tipo di transazione si sta svolgendo trasportano gli indirizzi dei dati da trasferire Linee Dati: • trasportano i dati da trasferire (anche comandi complessi per alcune periferiche) A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Vantaggi - Svantaggi • Vantaggi • Basso costo:lo stesso canale di comunicazione è utilizzato in modi diversi per diverse esigenze • Versatilità: facile aggiungere o rimuovere dispositivi e periferiche • Svantaggi • Poco performante: Il bus può operare a velocità limitata a causa della necessità di supportare un insieme di dispositivi che operano a velocità diverse A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Alternativa • Per ovviare alle carenze del modello a singolo bus si introducono diversi tipi di bus, che meglio si adattano alle caratteristiche delle periferiche collegate • Bus diversi sono collegati tra loro da opportuni moduli di interfaccia A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Esempio Memory I/O module CPU “CPU bus” or “System bus” A.A. 09/10 “Bus interface” I/O device “I/O bus” Architetture degli Elaboratori I © Danilo Bruschi I/O Hierarchy CPU Cache Memory Bus Memory Disk I/O Controller I/O Bus Network A.A. 09/10 USB DVD … Architetture degli Elaboratori I © Danilo Bruschi Tipi di Bus • Processor-Memory bus • corti ed ad alta velocità • progettati solo per il memory system (massimizzano la banda passante tra • memoria e processore) • sono connessi direttamente al processore • ottimizzati per il trasferimento a blocchi della cache • I/O Bus (standard: SCSI, USB, ISA, IDE) • di solito lunghi e più lenti • devono adattarsi a un vasto insieme di dispositivi I/O • si connettono al processor-memory bus o al backplane bus • Backplane Bus o Expansion bus (standard o proprietario, es. PCI) • backplane: una struttura di interconnessione nello chassis • Usato come intermediario per collegare I/O bus al processor-memory bus A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Expansion Bus • Si tratta di “slot” presenti sulla motherboard • Esempi: • • • • • • • • • ISA – Industry Standard Architecture PCI – Personal Component Interconnect EISA – Extended ISA SIMM – Single Inline Memory Module DIMM – Dual Inline Memory Module MCA – Micro-Channel Architecture AGP – Accelerated Graphics Port VESA – Video Electronics Standards Association PCMCIA – Personal Computer Memory Card International Association (not just memory!) A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi 3 ISA slots 5 PCI slots A.A. 09/10 Pentium CPU 6 SIMM slots 2 DIMM slots Architetture degli Elaboratori I © Danilo Bruschi I/O Bus • Esempi • • • • • • • • Tutte le interfacce disco (IDE, SCSI, ATA, ecc.) Porta Parallela – chiamata anche LPT (“line printer”) Seriale – tipicamente RS232C PS/2 – per tastiere e mouse USB – Universal Serial Bus IrDA – Infrared Device Attachment FireWire – nuova, ad alta velocità, developed by IEEE Ethernet A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Confronto A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Connettere i bus • Per connettre tra loro bus diversi si usano degli appositi moduli di I/O, in particolare un modulo di I/O: • Connette un I/O bus a un system bus • Connette un I/O ad un altro I/O bus A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Ethernet Adapter - PCI Addtron AEF-360TX RJ-45 connector BNC connector A.A. 09/10 PCI bus interface Architetture degli Elaboratori I © Danilo Bruschi PCMCIA bus Motherboard PCMCIA slot I/O module PCMCIA serial card I/O module RS232C bus Modem § Memory PCMCIA slot CPU CPU/system bus A.A. 09/10 I/O module PCMCIA bus PCMCIA SCSI card I/O module Disk SCSI bus Disk Architetture degli Elaboratori I © Danilo Bruschi Example: The Pentium 4’s System BusBuses (“Front Side Bus”): Memory Controller Hub (“Northbridge”) 64b x 800 MHz (6.4GB/s), 533 MHz, or 400 MHz Graphics output: 2.0 GB/s DDR SDRAM Main Memory Gbit ethernet: 0.266 GB/s Hub Bus: 8b x 266 MHz 2 serial ATAs: 150 MB/s PCI: 32b x 33 MHz 2 parallel ATA: 100 MB/s 8 USBs: 60 MB/s I/O Controller Hub (“Southbridge”) Lec 09 Systems Architecture II Architetture degli Elaboratori I 28 © Danilo Bruschi Comunicazioni sul bus • La comunicazione sul bus non è paritetica. • Bus Master: ha la capacità di controllare il bus, inizia la transazione • Bus Slave: modulo attivato in seguito alla transazione • Un dispositivo sul bus può fare solo master (CPU), solo slave (memoria) o entrambi (DMA controller) • La comunicazione tra master e slave avviene in base ad una sequenza precisa di azioni realizzate dai partner (transazione). • Il Protocollo di Comunicazione del Bus precisa la sequenza di eventi e le specifiche di tempificazione con cui avviene la transazione. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Una transazione • Si compone di tre fasi: • Arbitraggio: per guadagnare l’accesso al bus • Richiesta: per inoltrare comando e indirizzo • Azione: trasferimento dei dati • Nei sistemi più semplici: • Il processore è l’unico master di bus • Unico problema: deve essere coinvolto in ogni transazione Control: Master initiates requests Bus Master A.A. 09/10 Data can go either way Bus Slave Architetture degli Elaboratori I © Danilo Bruschi Esempio di transazione semplice • Tutte le richieste per accedere al bus devono transitare dal processore Step 1: il disco deve utilizzare il bus ed invia la richiesta al processor Control Memory Processor Data Step 2: il processore risponde e genera gli opportuni segnali di controllo Control Memory Processor Data Step 3: il processore concede i diritti di bus slave al disco, che potrà usare il bus Control Memory Processor Data A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Transazione con più bus master • • • • Nel caso ci siano più master a richiedere il bus, bisogna decidere a quale di questi assegnarlo tramite un arbitraggio del bus, gestito da un apposito dispositivo (Arbitration Unit o arbitro di bus). Il dispositivo che intende controllare il bus segnala un bus request all’arbitro di bus; il controllo viene eventualmente concesso tramite un bus grant (molti bus request un unico bus grant). A seguito del bus grant, il dispositivo (master) può iniziare la transazione La tecnica di arbitraggio deve bilanciare due fattori: • priority • fairness • Diverse tecniche di arbitraggio: • Centralizzate • Distribuite A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus Sincrono • Le operazioni sul bus sono tempificate da un segnale di sincronizzazione (clock) e gli istanti in cui sono validi i segnali sulle linee sono fissati dal clock (tipicamente sul fronte di salita o di discesa) • In relazione al clock, si definiscono anche la durata dei segnali e gli intervalli temporali di separazione dei segnali (tipicamente in termini di periodi o semiperiodi del clock) • Vantaggi: • semplicità di progettazione del sistema (circuiti sincroni più facili da progettare degli asincroni) • Svantaggi: • la velocità del bus deve adeguarsi ai dispositivi più lenti A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus sincrono Legenda: Breq: bus request BG: bus grant R/W Address: comandi indirizzo Wait: Dati non ancora pronti A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus asincrono • Nei bus asincroni manca un segnale di clock principale e le operazioni avvengono sulla base di un colloquio (handshake) tra master e slave basato su apposite linee di sincronizzazione (DATA READY, DATA REQUEST, ACK, ecc.) • Il tempo impiegato dalle singole operazioni è legato esclusivamente alle velocità esibite dai dispositivi coinvolti. • Vantaggi: • possibilità di connettere periferiche con velocità diverse • Svantaggi: • al tempo necessario per una transazione bisogna aggiungere il tempo dell’handshake A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus Asincrono (write) • • • • • • t0 : Il master predispone indirizzo, direzione del trasferimento e dati Attende un certo intervallo di tempo (necessario perché gli slave leggano l’indirizzo) t1: Il master asserisce la linea di richiesta (REQ) t2: Lo slave asserisce ack (dato ricevuto) t3: Il master abbassa la linea di richiesta t4: Lo slave abbassa l’ack A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus asincrono (read) • • • • • • t0 : Il master predispone indirizzo e direzione del trasferimento Attende un certo intervallo di tempo (necessario perché gli slaves leggano l’indirizzo) t1: Il master asserisce la linea di richiesta (REQ) t2: Lo slave asserisce ack (dato disponibile) t3: Il master abbassa la linea di richiesta (dato ricevuto) t4: Lo slave abbassa l’ack A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Long Asynchronous is better Short Clock skew (function of bus length) Quale bus? Synchronous is better Similar A.A. 09/10 Mixture of I/O device speeds Varied Architetture degli Elaboratori I © Danilo Bruschi Esercizio • Operazione di lettura in memoria di una parola da 32 bit • Tempo per la lettura in memoria: 200 ns • Bus sincrono • Periodo di clock: 50 ns • Un periodo di clock per ogni trasmissione sul bus • Bus asincrono • 40 ns per ogni trasmissione di dato di “controllo” A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus sincrono • • • • • 50 ns per inviare indirizzo alla memoria 200 ns per la lettura in memoria 50 ns per inviare il dato 300 ns per l’intera transazione Banda del bus: • 32 bit / 300 ns = 13.3 Mbyte/sec A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bus asincrono • Master prepara indirizzo e R/W • 40 ns master asserisce REQ • 200 ns per la lettura in memoria • • • • Slave asserisce ACK 40 ns master abbassa REQ 40 ns slave abbassa ACK Banda del bus: • 32 bit / 320 ns = 10 Mbyte / sec A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Velocizzare il bus • Oltre alla scelta della tecnica di tempificazione, altri parametri influiscono sulla velocità di trasferimento del bus: • parallelismo del data bus Æ aumento del numero di linee • linee dati ed indirizzi separate Æaumento del numero di linee • trasferimento dati a blocchi Æ accresciuto tempo di risposta • split transaction Æ tempi di transazione più lunghi A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Split-transaction • split-transaction: una transazione di bus è divisa in due transazioni separate: • Transazione di ”request” • Transazione di ”reply” • Entrambe devono competere per l’accesso al bus • I vantaggi della split transaction sono eveidenti nel caso di richieste con tempi di risposta variabili A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Backplane, I/O bus S-bus MicroChannel PCI IPI SCSI 2 Data width (bits) 32 32 32-64 16 8-16 Clock rate (Mhz) 16-25 Async 33 Async 10 or async Bus masters Multiple Multiple Multiple Single Multiple Bandwidth (32 bit reads) 33 20 MB/sec MB/sec 33 MB/sec 25 MB/sec 20 or 6 MB/sec Bandwidth (peak) 89 75 MB/sec MB/sec 132 MB/sec 25 MB/sec 20 or 6 MB/sec Standard None - ANSI X3.129 A.A. 09/10 - ANSI Architetture degli Elaboratori I X3.131 © Danilo Bruschi CPU-memory bus HP summit SGI Challenge Sun XDbus Data width (bits) Clock rate (MHz) Bus masters 128 256 144 60 48 66 Multiple Multiple Multiple Bandwidth (peak) Standard 960 MB/sec 1200 MB/sec 1056 MB/sec None None None A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi