Architettura dei sistemi di elaborazione (Input/Output parte 3)
Accesso diretto alla RAM (DMA) Se la periferica è molto veloce, è possibile che la frequenza delle interruzioni sia così alta da non lasciare, tra interruzione e interruzione, il tempo necessario all intera esecuzione della routine di servizio. E il caso delle unità a disco, la cui velocità di trasferimento può superare il milione di caratteri per secondo (stesso ordine di grandezza della velocità di esecuzione delle istruzioni in una CPU di prestazioni medie). Tecnica più efficiente: un dispositivo gestisce il trasferimento diretto dei dati tra periferiche e memoria, senza coinvolgere la CPU (a cui ruba cicli di bus cycle stealing). Tale dispositivo prende il nome di Direct Memory Access Controller (DMAC).
DMA: Accesso diretto alla memoria Approccio alternativo a polling e interrupt per il trasferimento di grandi quantità di dati ad alta velocità (DATA BLOCK TRANSFER). Il controllo del trasferimento dati è delegato dal processore a uno o più DMA CONTROLLER. Il processore comunica al controller: l indirizzo di partenza del blocco, il numero di byte da trasferire e la direzione del trasferimento.
DMA segnali di STATO utilizzati nel DMA: R/W, IRQ, IE, Done registri: BASE e COUNTER In caso di più controllori DMA, si usano le tecniche di daisy chain e abitraggio delle priorità per gestire i vari dispositivi I/O
Furto di ciclo (Cycle Stealing) In generale può sorgere un conflitto sul possesso del bus tra processore e controller DMA. Per risolvere i conflitti si usa un ARBITRO del BUS: quando il DMA acquisisce il controllo sul bus, si dice che ruba i cicli di accesso in memoria al processore.
Arbitraggio del bus 1 Meccanismo centralizzato: Un controller DMA fa richiesta del bus (BUS REQUEST) Se non vi sono conflitti, l arbitro (il processore) concede il bus (BUS GRANT) Il controller richiedente diventa BUS MASTER attivando il segnale BUS BUSY
Arbitraggio del bus 2 Meccanismo distribuito: se uno o più controller DMA richiedono il bus attivano il segnale START-ARBITRATION, ponendo il proprio codice di priorità sulle linee di arbitraggio del bus (in OR tra loro) ognuno confronta il codice presente sul bus con quello proprio a partire dal bit più significativo: chi vince la contesa guadagna il bus
Bus di Comunicazione Internamente ad un sistema a microprocessore la principale struttura di interconnessione è il bus. Il bus è un insieme di conduttori che trasferiscono le informazioni da un elemento sorgente a un elemento destinazione. bus dedicato: collega in modo esclusivo due moduli bus condiviso: collega tra loro più moduli (collegamenti fra elementi diversi avvengono in tempi diversi - time multiplexing) Il bus di sistema, anche se condiviso, in genere si compone di tre sotto-bus: bus di controllo bus degli indirizzi bus dei dati
Bus di Comunicazione Usando bus dedicati, per collegare N moduli ne servono N(N-1). Questa soluzione consente di effettuare contemporaneamente più operazioni di trasferimento dati. L'uso di una struttura di interconnessione condivisa e standardizzata consente di ridurre i costi e di ottenere una struttura modulare scalabile, a scapito delle prestazioni. Questa soluzione è comunque la più utilizzata nei moderni sistemi di elaborazione.
Interfacciamento fisico al Bus
Bus di Comunicazione ISA (Industrial Standard Architecture) Ci sono due versioni del bus ISA: quella a 8 bit con una frequenza di clock di 4.77 MHz e quella a 16 bit, con frequenza pari a 8.3 MHz. Il throughput varia dai 4 ai 5 MB/s. EISA (Extended Industry Standard Architecture) Prima evoluzione di questo standard usata sui computer IBM dal 1988. EISA aumentò il Bus ISA da 16 a 32 Bit e permise a più di una CPU di usare questo Bus in contemporanea. Venne usata principalmente come interfaccia per schede SCSI. Questo slot fu abbandonato con l'arrivo del VESA e del successivo PCI. VESA Local Bus Successore dell'eisa, fu usato prevalentemente nei computer basati sul processore Intel 80486 e fu studiato per eliminare il problema della bassa larghezza di banda dello slot ISA. Lavorava sul Bus ISA ma, a differenza di quest'ultimo, aveva un accesso diretto alla memoria di sistema che lo rendeva molto più veloce. Per controparte aveva però alcune importanti limitazioni (compatibilità, limite al numero di slot, corruzione dei dati).
Bus di Comunicazione PCI (Peripheral Component Interconnect) Sviluppato dalla Intel nel 1992 (in sostituzione del bus ISA). Diverse versioni: PCI, PCI 2.0, PCI 2.1, PCI 2.2, PCI 3.0, PCI-X. Linee dati-indirizzi (sovrapposte) (multiplexed). Clock a 33 66 133 266 MHz. Alimentazione 5 3,3 Volt. Il trasferimento che avviene attraverso un bus PCI è un "burst", composto da una fase di indirizzamento e da una o più fasi di dato. Bassa latenza ed elevato throughput. PCI Express (PCIe) Il PCI Express è il successore (seriale) del bus di espansione PCI (parallelo) e sarà destinato a sostituire il bus AGP fino ad ora in uso per le schede grafiche. L'architettura è completamente differente dal bus PCI classico. La sua caratteristica seriale aiuta a semplificare il layout delle schede madri ed è costituito da una serie di canali. Tali canali possono essere aggregati secondo le esigenze rendendo di fatto il sistema molto flessibile. La banda a disposizione di ciascun canale (FULL DUPLEX) è dedicata e quindi non condivisa con gli altri. Un canale PCIe (detto x1) ha una banda disponibile di 266 MByte/sec. Pertanto, nelle moderne schede video che utilizzano 16 canali PCIe la banda a disposizione è di circa 4 GByte/sec (il doppio del bus AGP 8x).
Bus di Comunicazione ATA (Advanced Technology Attachment) Consiste in un'interfaccia standard per la connessione di dispositivi di memorizzazione quali hard disk e unità CD-ROM all'interno dei personal computer. Sono molti i termini utilizzati per designare tale standard, comprese abbreviazioni e acronimi quali IDE, EIDE, ATAPI, UDMA ed il più recente PATA (Parallel-ATA) per differenziarsi dal SATA (Serial-ATA) che è altra cosa. Gli standard ATA permettono collegamenti con lunghezze di cavo comprese tra 45 e 90 cm, quindi l'utilizzo prevalente per tale tecnologia è per le memorie di massa all'interno dei personal computer. I cavi Parallel ATA permettono il trasferimento di dati con 16 o 32 bit per volta. UDMA0 16.7 MB/s UDMA1 25 MB/s UDMA2 33.3 MB/s UDMA3 44.4 MB/s UDMA4 66.7 MB/s UDMA5 100 MB/s UDMA6 133 MB/s
Bus di Comunicazione SCSI (Small Computer System Interface) L'interfaccia SCSI viene per lo più usata per la comunicazione con unità hard disk e unità nastro di memorizzazione di massa, ma anche per connettere una vasta gamma di dispositivi, come scanner d'immagini, lettori e scrittori di CD (CD-R e CD-RW), lettori DVD. In effetti lo standard SCSI è stato ideato per favorire l'intercambiabiltà e la compatibilità dei dispositivi (tutti, almeno in teoria). Esistono anche stampanti SCSI. In passato l'interfaccia SCSI era molto diffusa in ogni tipologia di computer, mentre attualmente trova un vasto impiego solamente in workstation, server e periferiche di fascia alta (cioè con elevate prestazioni). I computer desktop e portatili sono invece di solito equipaggiati con l'interfaccia ATA/IDE (acronimi rispettivamente di Advanced Technology Attachment e Integrated Drive Electronics) per gli hard disk e con l'interfaccia USB (Universal Serial Bus) per altre periferiche di uso comune.
Bus di Comunicazione USB (Universal Serial Bus) Standard di comunicazione seriale per il collegamento di periferiche (lente). Consiste in un singolo gestore e molte periferiche collegate da una struttura simile ad un albero attraverso dei dispositivi chiamati hub (concentratori). Supporta fino ad un massimo di 127 periferiche per gestore, nel computo vanno inclusi anche gli hub e il gestore stesso quindi in realtà il numero totale di dispositivi collegabili è sensibilmente inferiore. Le porte USB sono dotate del supporto del Plug and Play e supportano i dispositivi hot swap quindi se il sistema operativo lo consente supportano la rimozione a caldo e il reinserimento delle periferiche senza dover riavviare il computer. All'interno del computer, l'usb non ha rimpiazzato lo standard ATA o SCSI per via della sua lentezza. Il nuovo standard serial ATA per esempio consente trasferimenti dell'ordine di 150 Mbyte per secondo, una velocità molto più elevata dello standard USB, che nella versione 2.0 raggiunge un massimo di 60 Mbyte per secondo (480 Mbits/s). L'USB viene molto usato negli hard disk esterni dove si preferisce privilegiare la praticità di poter collegare e scollegare a caldo il componente rispetto alla velocità di una connessione tipo ATA.
Coesistenza di Bus Multipli Esempi di bus dedicati a vari sottosistemi