Architettura di un sistema di elaborazione N. 3 I Bus presenti nel PC (Unità 4-5) Nei sistemi elettronici e nei computer in particolare, i componenti del sistema colloquiano tramite linee dedicate dette BUS. Il bus è quindi un canale che permette a periferiche e componenti del sistema di dialogare tra loro. Un solo bus può collegare tra loro più dispositivi. In particolare il flusso delle informazioni, costituito da dati, codici e indirizzi, viaggia su linee a più fili, ognuno dei quali trasporta l’informazione di un bit. Fisicamente, il bus è composto da tanti conduttori elettrici lungo i quali l’informazione viene trasformata sotto forma di segnali elettrici binari. Le connessioni elettriche del bus possono essere realizzate direttamente su circuito stampato. In questo caso, il bus è riconoscibile sulla scheda madre perché si nota sul circuito un nutrito gruppo di piste compatte che vanno a toccare i vari componenti della scheda. Il bus è quindi una linea a cui sono contemporaneamente connesse le unità del calcolatore e che consente il trasferimento di dati tra tali unità. Il bus si divide in tre bus minori: • bus dati • bus indirizzi • bus controlli Il Bus dei dati è l’insieme delle linee che trasportano i dati ed è usufruibile da tutti i componenti del sistema, sia in scrittura sia in lettura. E’ bidirezionale, serve ad esempio a trasferire il contenuto di una cella di memoria in un registro del processore o, viceversa, per scrivere il contenuto di un registro in una locazione di memoria. Il Bus degli indirizzi è l’insieme delle linee che trasportano gli indirizzi. È il bus attraverso il quale la CPU decide in quale indirizzo andare a scrivere o a leggere informazioni; sia le celle di memoria (RAM) sia le periferiche di I/O (Input/Output) sono infatti divise in zone, ognuna delle quali ha un dato indirizzo. Dopo aver comunicato l'indirizzo tramite questo bus, la scrittura o lettura avviene normalmente tramite il bus dati. Naturalmente questo bus è fruibile in scrittura solo dalla CPU ed in lettura dagli altri componenti, in quanto tramite questo bus viene dato solo l'indirizzo della cella, che è deciso dalla CPU. È monodirezionale. Il bus controlli è un insieme di collegamenti il cui scopo è coordinare le attività del sistema; tramite esso, la CPU può decidere quale componente deve scrivere sul bus dati in un determinato momento, quale deve leggere l'indirizzo sul bus indirizzi, quali celle di memoria devono scrivere e quali invece leggere, etc. Infatti la memoria e tutti gli altri componenti comunicano con la CPU attraverso un unico bus condiviso; questo significa che senza un controllo da parte dalla CPU si verrebbero a creare dei conflitti e delle collisioni. Il bus controlli è bidirezionale: trasferisce all’unità stabilita l’istruzione da eseguire e poi trasmette all’unità di elaborazione il segnale dell’avvenuto espletamento dell’operazione. Vediamo di rappresentare tutto ciò in particolare: 1 L’ampiezza dei bus ….(pag. 48,49,51) Il compito dei bus è trasferire dati; la misura di questa capacità, la rapidità di trasferimento, è misurata in bps (bit per secondo). L 'ampiezza del valore che si può leggere o scrivere con un'unica operazione (parola o word) dipende dall'ampiezza del bus dati. Le caratteristiche principali di un bus sono la capacità della linea e la velocità di trasmissione; la prima indica la quantità di dati elementari (binari) che possono essere trasmessi in ogni operazione, mentre la seconda è legata al tempo medio impiegato da due unità per scambiarsi un dato. A seconda del microprocessore: - il bus dati può avere 8,16,32,64,80 linee (bit). Il numero dei bit del bus dati rappresenta la massima dimensione dei dati che è in grado di elaborare con una singola istruzione; - il bus indirizzi rappresenta lo spazio fisico di indirizzamento, inteso come spazio degli indirizzi disponibili. Il bus degli indirizzi di solito ha 16, 20, 24, 32 linee (bit), quindi lo spazio di indirizzamento di un microprocessore è rispettivamente di 64KB, 1MB, 16MB e 4GB. Poiché nei sistemi che operano in base binaria le quantità vengono solitamente espresse in termini di potenze di 2, vale la seguente corrispondenza: 1 KB → equivale a 210 byte = 1024 byte 1 MB → equivale a 220 = 210× 210 = 1024 × 1024 byte 1 GB → equivale a 230 = 210 × 210 × 210 = 1024 × 1024 × 1024 byte m Un bus indirizzi con m≥1 linee contiene 2 indirizzi (numerati da 0 a 2 Su un bus dati con n linee si possono scambiare parole da n bit. m-1 ). Lo spazio viene ripartito tra memoria RAM, ROM e interfacce di I/O. Il collegamento fra le diverse unità si basa sui concetti di master-slave (pag. 55). In prima istanza, il collegamento contemporaneo di tutti i dispositivi potrebbe apparire poco facilmente gestibile: si pensi al caso in cui la CPU stia accedendo alla memoria per leggere un dato e contemporaneamente da un’interfaccia input/output siano in arrivo dati che devono transitare su questo stesso bus. La soluzione è stata identificata attribuendo ad un solo componente del sistema, la CPU appunto (master), la gestione dell’intero sistema ed in particolare l’accesso al bus, impedendo dunque alle unità periferiche (slave) la possibilità di accedervi autonomamente. Ogni trasferimento di dati avviene sotto il controllo della CPU, che identifica la sorgente e la destinazione dei dati mediante il loro indirizzo, e sincronizza con i segnali di controllo i dispositivi che devono colloquiare. Così il bus viene utilizzato evitando qualsiasi collisione fra i dati di competenza delle diverse periferiche. Alcuni dispositivi sono in grado di comportarsi sia come master sia come slave e in un certo istante può esistere un solo master, per cui è necessario regolare l’accesso ai bus attraverso un’operazione chiamata arbitraggio. L’arbitraggio può essere gestito da un dispositivo chiamato arbitro del bus (arbitraggio centralizzato) o dai dispositivi stessi che si autoregolano (arbitraggio distribuito). 2 I bus si possono dividere in due categorie: bus interni alla CPU e bus esterni, secondo la seguente figura I bus possono essere ancora suddivisi in altre due categorie: sincroni e asincroni Bus sincroni: è previsto un segnale di sincronizzazione (clock) che permette di gestire la temporizzazione delle comunicazioni. Bus asincroni: la comunicazione è gestita senza segnali di sincronia, attraverso lo scambio dei messaggi, sfruttando al meglio le prestazioni di ciascun dispositivo che utilizza i bus. Ma come avviene la lettura o la scrittura di un dato dalla memoria? 3 Per eseguire un operazione di lettura il processore fornisce sul bus indirizzi (arancio) l'indirizzo della locazione desiderata (PASSO1) e sul bus di controllo (verde) un segnale per abilitare la Ram all'operazione di lettura (PASSO2), quindi riceve dalla Ram sul bus dati (azzurro) il valore presente in quella locazione (PASSO3) e sul bus di controllo (verde) un segnale per confermare l’avvenuto espletamento dell’operazione (PASSO4). Per eseguire una operazione di scrittura il processore fornisce sul bus indirizzi (arancio) l'indirizzo della locazione desiderata (PASSO1), sul bus dati (azzurro) il valore da memorizzare in memoria (PASSO2) e sul bus di controllo (verde) un segnale per abilitare la Ram all'operazione di scrittura (PASSO3), quindi la Ram preleva il dato da memorizzare dal bus dati (azzurro) e lo scrive in memoria (PASSO4) e sul bus di controllo (verde) invia un segnale per confermare l’avvenuto espletamento dell’operazione (PASSO5) . Chi gestisce il processo di elaborazione è il microprocessore: quando si parla di lettura il dato entra nel microprocessore, quando si parla di scrittura il dato esce dal microprocessore. 4 Esistono sul BUS due linee di controllo molto importanti: - INTR (Interrupt Request) è una linea utilizzata dalle unità di I/O per comunicare al processore di interrompere l’attività in corso perchè si deve gestire un trasferimento di dati - INTA (Interrupt Acknowledge) è una linea gestita dal processore che serve ad avvisare il dispositivo di I/O che il processore è pronto a gestire il trasferimento. Quindi, alle operazioni che devono essere ripetute per ciascuna istruzione contenuta in un programma, in dettaglio possiamo considerare le due linee di interrupt: 1) 2) 3) 4) 5) 6) Il processore legge l’istruzione dalla memoria (fetch) La decodifica (decode) Calcola gli indirizzi degli operandi in memoria Carica gli operandi dalla memoria (fetch) Esegue l’istruzione (exec) la CPU verifica, leggendo lo stato di un apposito registro del dispositivo, la disponibilità della periferica. Quindi richiede la lettura del dato 7) La periferica di I/O carica i dati nel proprio buffer e, quando deve trasmettere i dati al processore, attiva la linea INTR 8) Il processore analizza se ci sono richieste di interruzioni (INTR) da parte di qualche dispositivo di I/O 9) Se ci sono richieste termina l’istruzione in corso, gestisce l’eventuale evento dando l’OK (attiva l’INTA) e attende i dati dalla periferica 10) La periferica si identifica e trasmette il dato 11) Il processore calcola la posizione dell’istruzione successiva a quella che stava trattando prima della richiesta di interrupt e ricomincia dal passo 1. (Nota: nella successiva dispensa Gestione I/O il concetto verrà approfondito ulteriormente) Il Clock Come abbiamo visto precedentemente, il computer funziona mediante gli impulsi di un clock, ogni operazione infatti non può essere eseguita in qualsiasi momento, casualmente, ma è regolata da impulsi regolari. Il clock genera impulsi di tensione di una certa frequenza, misurata in MHz o in GHz, ma non tutti i componenti funzionano alla stessa frequenza, è per questo che esistono diversi clock, per scopi diversi. Il clock più conosciuto è quello del processore, indica cioè la frequenza di lavoro del processore. Tuttavia il clock più importante è quello del bus front-side (FSB), (l‘FSB è quella parte di bus di sistema che mette in collegamento la CPU con qualunque altra periferica installata nel computer, ad esempio modem interni, scheda video, scheda audio, ecc....), ovvero il clock di sistema, da questo clock dipendono le frequenze di lavoro del processore e dei vari bus. Il clock del processore lavora sincronizzandosi su un multiplo di quello del bus di sistema. I pin del processore si occupano di mantenere la sincronia fra i due clock. Molti dispositivi possiedono un clock: le unità disco hanno bisogno di un clock per funzionare, la frequenza di questo deve essere doppia rispetto alla velocità con cui gira il disco; lo schermo, per regolare la frequenza di refresh; il modem, per inviare e ricevere i bit a una velocità adeguata. 5 Tipi di Bus Se si vogliono aggiungere componenti ad un sistema, esistono dei connettori disponibili, detti slot di espansione del sistema, che fanno parte del bus e nei quali vengono inserite le schede di interfaccia. Quando queste schede vengono inserite, si collegano elettricamente al bus e quindi diventano a tutti gli effetti parti integranti del sistema. (bus di espansione: che si estendono all’esterno dell’unità funzionale e che la collegano alle altre unità funzionali (CPU, Memoria e Unità Periferiche) Bus PCI Il bus PCI (Peripheral Component Interconnect interconnessione componente periferica), è l'interfaccia sviluppata da Intel intorno agli anni Novanta per collegare al computer le più svariate periferiche. bus e garantire che tutti i dispositivi possano dialogare tra loro. E’ il bus attualmente più diffuso: è un bus a 32 bit con larghezza di banda a 133 MBytes/s, generata da una trasmissione dati con frequenza pari a 33MHz. Supporta il bus mastering, infatti il trasferimento dei dati per l’I/O non è controllato dal microprocessore ma da uno speciale circuito, detto chipset, che è un insieme di circuiti per gestire il Sebbene l'interfaccia PCI abbia fatto segnare un notevole passo avanti nell'evoluzione dei pc, sia per il costo contenuto sia per le buone (e inizialmente sufficienti) prestazioni che ne hanno decretato la diffusione di massa rimpiazzando l'ISA, i primi limiti si sono fatti sentire poco dopo in sistemi come server e workstation, dove vi è bisogno di un enorme larghezza di banda per la trasmissione dei dati. Fu così che si iniziò a cercare e progettare sostituti per questa interfaccia: ad esempio il PCI a 66MHz, la diretta conseguenza del classico PCI: si caratterizza per un aumento della frequenza da 33 a 66MHz, per poi essere sfruttato sia con interfaccia a 32 che a 64bit per una banda massima teorica di 528MBytes/s. Bus PCI Express (PCIe) Il PCI Express è il successore (seriale) del bus di espansione PCI (parallelo), introdotto con i primi Pentium, che ha preso il posto della vecchia interfaccia per schede grafiche, l'AGP. 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 è 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). 6 Slot PCI Express (Partendo da sopra: x4, x16, x1 e x16), comparati ad uno slot PCI tradizionale a 32 bit (ultimo), in una DFI LanParty nF4 SLI-DR Plug and Play Per identificare in modo univoco una scheda all’interno di un pc, il microprocessore deve conoscere 3 parametri: • • • L’indirizzo di interfaccia, o porta Il numero di interrupt, ovvero quale linea deve utilizzare per effettuare l’interrupt Che modalità di comunicazione ha con le periferiche, cioè se la lettura/scrittura dei dati in memoria avviene passando dal microprocessore o dal DMA (in quest’ultimo caso occorre conoscere anche il canale di comunicazione con la memoria) Per installare una scheda, era necessario che l’utente conoscesse i parametri d’impostazione, quindi occorreva conoscere bene la configurazione della macchina per evitare il blocco del sistema. Già con la versione di Windows ’95 sono state rese disponibili un certo tipo di schede in grado di dialogare direttamente con il sistema operativo, il quale, conoscendo la configurazione hardware della macchina, assegna automaticamente i parametri richiesti. La tecnologia fu indicata con il termine plug and play (collega e utilizza) e con essa anche utenti molto inesperti possono installare nuove schede di espansione. In genere per scheda plug and play si intende una scheda che possa essere messa in uso semplicemente collegandola alla scheda madre del computer mentre il computer stesso è spento e riavviando. Il plug and play ha permesso soprattutto di facilitare l'installazione delle periferiche, rendendo automatici il caricamento dei driver e l'allocazione delle risorse, semplificando quindi l'interazione con l'hardware da parte dell'utente. Con il plug and play, il BIOS prima ed il sistema operativo poi si fanno carico di effettuare queste scelte per conto dell'utente, in maniera del tutto trasparente all'utente. Standard Usb Nei personal computer, i primi dispositivi diffusi su larga scala ad essere "veramente" plug and play (cioè anche hot plug, un'interfaccia che permette il collegamento e/o lo scollegamento di un dispositivo anche a sistema avviato.) sono state le periferiche USB. 7 L'Universal Serial Bus (USB) è uno standard di comunicazione seriale che consente di collegare diverse periferiche ad un computer. Le principali caratteristiche di Usb sono, oltre al basso costo, la velocità di trasferimento dei dati fino a 12Mbps (Megabit al secondo) e un collegamento fino a 127 dispositivi periferici. Il sistema USB consiste in un singolo host (gestore) e molte periferiche collegate da una struttura ad albero attraverso dei dispositivi chiamati hub (concentratori). La lunghezza massima che può avere il cavo senza che il segnale diventi troppo debole è pari a 5 m; oltre questo limite è necessario ricorrere ad uno o più hub attivi che amplifichino il segnale. Le specifiche prevedono il collegamento consecutivo al massimo di 5 hub. Standard ATA 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. 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. Standard SATA Il Serial ATA (abbreviazione dell'inglese "Serial Advanced Technology Attachment"), in sigla SATA, è una interfaccia per computer generalmente utilizzata per connettere hard disk o drive ottici (masterizzatori e/o lettori di DVD, CD, ecc.) Il Serial ATA è l'evoluzione dell'ATA, rinominato Parallel ATA (PATA) in seguito alla nascita del Serial ATA in modo da evitare fraintendimenti, rispetto al quale il Serial ATA presenta tre principali vantaggi: maggiore velocità, cavi meno ingombranti e possibilità di hot swap (cioè la possibilità di collegare o scollegare i dispositivi anche a computer acceso, c'è bisogno però che anche la scheda madre supporti questa modalità). 8 Gli hard disk esterni di ultima generazione possono essere collegati al computer tramite l'interfaccia ESATA (External SATA), un'interfaccia standard utilizzata per connettere dispositivi esterni (ad esempio gli hard disk esterni), più veloce ed efficiente rispetto all'USB. Bus SCSI L'interfaccia SCSI (Small Computer System Interface), che si pronuncia “Scasi”, 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'intercambiabilità e la compatibilità dei dispositivi (tutti, almeno in teoria). Esistono anche stampanti SCSI. I dispositivi dialogano attraverso il bus SCSI collegato al computer attraverso un controllore: questo dispositivo viene detto SCSI host adapter o semplicemente controllore 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. Irda La porta a infrarossi (IRDA) è una porta seriale senza fili che funziona attraverso raggi infrarossi, come i telecomandi dei televisori. E’ bidirezionale e la velocità di trasmissione che riesce a raggiungere è piuttosto bassa (9600 bit al secondo), proprio per questo è in grado di collegare tastiere e mouse ed altre apparecchiature che non richiedono alte velocità. Recenti evoluzioni di questa porta hanno aumentato la sua velocità fino a 4Mbps; il trasferimento dei dati è possibile solo se le porte “si vedono” e la loro distanza non supera i 2-3 metri. Bluetooth La porta BLUETOOTH consente di collegare diversi dispositivi (ad esempio cellulari, stampanti, notebook o computer desktop dotati della stessa tecnologia) ad una distanza di 10 metri senza fili e ad una velocità di 1 Mbps in maniera totalmente sicura ed affidabile. Rappresenta una valida alternativa alla tecnologia a raggi infrarossi in quanto i dispositivi non devono essere necessariamente orientati tra di loro per poter funzionare in maniera corretta. 9 Curiosità: Attualmente più di un miliardo di dispositivi montano un'interfaccia Bluetooth. I telefoni cellulari che integrano chip Bluetooth sono venduti in milioni di esemplari e sono abilitati a riconoscere e utilizzare periferiche Bluetooth in modo da svincolarsi dai cavi. BMW è stato il primo produttore di autoveicoli a integrare tecnologia Bluetooth nelle sue automobili in modo da consentire ai guidatori di rispondere al proprio telefono cellulare senza dover staccare le mani dal volante. Attualmente molti altri produttori di autoveicoli forniscono di serie o in opzione vivavoce Bluetooth che integrati con l'autoradio dell'automobile permettono di utilizzare il cellulare mantenendo le mani sul volante a quindi aumentando la sicurezza della guida. La porta seriale La porta seriale viene utilizzata per collegare dispositivi che non richiedono un flusso di dati molto veloce; nella porta seriale i dati vengono inviati un bit alla volta: i bit viaggiano in serie, l’uno dopo l’altro, sullo stesso filo; per trasmettere un byte, sono necessari otto invii. La porta seriale consente il transito dei dati in entrambe le direzioni (full-duplex), sia dal computer alla periferica che viceversa. L’utilizzo principale della seriale avviene nel caso di collegamenti con periferiche attive, come mouse, modem, scanner, penne ottiche; il connettore della porta seriale ha 9 punti di contatto (pin): uno serve per i bit di trasmissione, uno per i dati, uno per il collegamento a terra, gli altri per lo scambio di particolari segnali fra le periferiche ed il PC. I segnali riguardano, ad esempio, lo stato di “pronto a ricevere” della periferica o del computer e quello di “richiesta di invio”. La porta parallela La porta parallela si usa quasi sempre per la stampante, ma è adatta per qualunque dispositivo che richieda un flusso di dati più veloce rispetto alla capacità della porta seriale; nella porta parallela i dati vengono trasmessi un byte alla volta: i bit viaggiano parallelamente su otto fili. La porta parallela consente il transito in una sola direzione (half-duplex), dal computer alla periferica; viene usata quasi esclusivamente per il collegamento con le stampanti. I connettori della porta parallela hanno 25 pin, otto dei quali per l’invio dei dati e gli altri per l’invio e lo scambio di segnali (anche se non può ricevere dati, la porta parallela può ricevere segnali dalla periferica, come il segnale di “occupato” o quello di “carta esaurita”). La trasmissione parallela non consente un controllo sull’identità fra i dati trasmessi e quelli ricevuti, quindi, pur garantendo una maggiore velocità, permette solo collegamenti a breve distanza. 10