Il BUS La trasmissione parallela: il Bus Come vedremo la comunicazione su medie e lunghe distanze prevede generalmente un tipo di trasmissione seriale. Sulle brevi distanze la trasmissione parallela riveste comunque un ruolo di primo piano poiché consente velocità di trasmissione molto elevate. Studieremo dapprima questo particolare tipo di trasmissione. Vedremo, successivamente, come interfacciare una linea parallela (caratteristica di ogni elaboratore) con una linea seriale (caratteristica di una rete). I PC debbono la propria versatilità ai loro Slot di espansione. Inserendo una scheda nello Slot appropriato, è possibile trasformare il Computer in uno strumento atto a soddisfare esigenze di qualsiasi genere (naturalmente entro certi limiti). Concettualmente il concetto di Bus non è affatto complicato, anzi, di per sé, risulta estremamente intuitivo anche per i non addetti ai lavori: “un insieme di conduttori (linee del bus) in grado di far transitare informazioni (Dati, Indirizzi, Interruzioni, Controlli, Comandi)” il tutto in dipendenza di un sincronismo particolare denominato Clock. BUS Tuttavia i vari dispositivi presenti in un Elaboratore necessitano di diversi accorgimenti (e diversi Chip) tesi ad ottimizzare il trasferimento dei dati. Diversamente dovremmo accontentarci di un Sistema Base estremamente veloce e flessibile ma che è in grado di offrire solo in minima parte le potenzialità di cui si è parlato all’inizio di questo paragrafo. Un Bus, in generale, è costituito da diverse linee di transito che, come vedremo tra poco, è quasi sempre opportuno suddividere concettualmente in tre gruppi fondamentali: le linee dei dati, le linee degli indirizzi, le linee di controllo. • • • Le linee dei dati sono destinate a far transitare informazioni che sono essenzialmente parole di memoria. Per questo motivo si utilizza un numero di linee adeguato: 8, 16, 32 …. Le linee degli indirizzi, dovendo spesso contenere indirizzi di memoria vengono scelte anch’esse in numero adeguato: 20, 24, 32 …. Le linee di controllo possono contenere informazioni di svariata natura, dai bit di parità (per il controllo del transito corretto dei dati), alle richieste di Interruzione (che abbiamo già visto), alle informazioni relative allo scambio dei dati fra periferiche (ad esempio nell’Handshaking). Il Bus, come si è detto, è il collegamento fisico tra i dispositivi presenti nell’Elaboratore. Il punto di partenza del Bus del PC originale era il Bus Locale del Processore 8088. Nei primi PC il Bus era rappresentato da una semplice espansione del Bus interno del microprocessore. Il Bus espandeva la piedinatura del chip in modo che potesse collegarsi ai 1 dispositivi che, allora, non avevano le pretese di apertura e le necessità di espansione che caratterizzano i moderni Elaboratori. Quando i processori raggiunsero velocità superiori ai 4,7 MHz dei primi PC, per passare agli 8 MHz dei gloriosi 286, fece la sua apparizione il Bus AT. Caratteristiche fondamentali di questo Bus erano: • • • • 16 linee per i dati 24 linee per gli indirizzi ( indirizzamento fino a 16 MB di memoria) Altre linee per il controllo IRQ e DMA (Direct Memory Access) 8 Mhz di frequenza di clock. Il Bus ISA Nato sulla base delle specifiche del Bus AT (1984), il Bus ISA (Industry Standard Architecture) viene approvato formalmente dall’Istituto IEEE nel 1987. Per motivi di compatibilità, purtroppo, la frequenza di clock doveva essere mantenuta a 8 Mhz. Per questo motivo si ricorse ad un secondo Bus destinato a velocizzare gli scambi tra il processore e la memoria. Quando, nel 1991, i circuiti video cominciarono ad aver bisogno di trasferimenti di dati a velocità elevata (132 MB/s), il Bus ISA, rivelandosi inadeguato (poteva trasferire solo 8 MB/s), fu necessario aggiungere un terzo Bus (Local Bus) che collegava direttamente al CPU al sistema di visualizzazione montato sulla Scheda Madre. Con l’introduzione del Pentium a 64 bit (1993), VESA sviluppò quello che sarebbe dovuto divenire uno Standard: il VL Bus ver. 2. Tuttavia questo nuovo Standard non riuscì mai ad affermarsi. Le aziende avevano ormai spostato la loro attenzione all’architettura PCI, lo Standard attuale. Nonostante questo, il Bus ISA rappresenta, ancora oggi, la struttura classica per la definizione e la rappresentazione, a livello non solo concettuale, di Bus. Tuttora presente, per motivi di compatibilità, nelle macchine attuali, viene utilizzato insieme al Bus PCI. Anche se la tendenza sia quella di eliminare definitivamente lo Standard ISA dai nostri Computer, molti sostengono che, in ogni caso, lo Standard ISA rimane l’unico vero modello di Bus di espansione. D’altra parte, la comprensione della struttura ISA facilita enormemente lo studio del Bus PCI. 2 Struttura del Bus di espansione Per fornire un modello di Bus faremo riferimento alla struttura del Bus ISA servendoci delle sue caratteristiche principali. Nella figura che segue vengono rappresentate alcune delle linee del Bus che svolgono funzioni fondamentali per il traffico delle informazioni. SD 0 SD 1 . . . SD 15 SA 0 SA 1 . . . SA 23 CLK REFRESH MEMR MEMW I/O R I/O W IRQ3 IRQ4 . . . IRQ15 DACK0 DACK1 DACK7 . . . DRQ0 DRQ1 DRQ7 . . . I/O CH CK I/O CH RDY Struttura del Bus ISA – Le principali linee del Bus 3 Le linee da SD0 a SD15 sono le linee System Data. Su di esse transitano parallelamente i 16 bit dei dati. Le linee da SA0 a SA23 sono le linee System Address. Su di esse transitano parallelamente 24 bit d’indirizzo (possibilità d’indirizzamento fino a 16 Mbyte). La linea CLK è la linea di Clock che trasporta il segnale da 8 a 10 MHz. La linea REFRESH trasporta il segnale per il Refresh Memory. La linea MEMR è la linea Memory Read. Indica alla memoria di leggere i dati dal Bus. La linea MEMW è la linea Memory Write. Indica alla memoria di depositare i dati sul Bus. La linea I/OR è la linea I/O Read. Indica alla periferica attualmente selezionata di leggere i dati dal Bus. La linea I/OW è la linea I/O Write. Indica alla periferica attualmente selezionata di depositare i dati sul Bus. Le linee da IRQ3 a IRQ15 sono le linee di Interrupt Request che indicano al processore l’interruzione da servire. Più periferiche possono generare una medesima interruzione. E’ questo il motivo per cui vengono usate le interruzioni vettorizzate (si consulti il paragrafo sulle interruzioni). Le linee da DACK0 a DACK7 sono le linee di DMA Acknowledge. Contengono i segnali di “ricevuto” durante il processo di Accesso Diretto in Memoria. Le linee da DRQ0 a DRQ7 sono le linee di DMA ReQuest. Contengono i segnali di “richiesta” durante il processo di Accesso Diretto in Memoria. La linea I/OCHCK è la linea I/O Channel Check.. Segnala una NMI (Interruzione Non Mascherabile). La linea I/OCHRDY è la linea Channel Ready. Indica a un dispositivo la disponibilità del Bus. Se questa linea è alta (stato logico 1) il Bus è disponibile. Quando questa linea è bassa indica al dispositivo di inserire degli stati di attesa (wait states). Per motivi di sintesi alcune linee sono state omesse. Chi volesse approfondire le conoscenze su questo standard può consultare la pagina Web www.techfest.com/hardware/bus/isa.htm. 4 Il Bus PCI Lo scopo originale per il quale venne inizialmente introdotta la tecnologia PCI (Peripheral Component Interconnect) era quello di facilitare le aziende produttrici di Chip Set e di Schede Madri realizzando una struttura in grado di collegare fra loro, con estrema flessibilità, i Chip della MotherBoard. Il nome stesso “Interconnessione tra Componenti Periferici” non lascia dubbi sulle funzioni specifiche di supporto che questo Standard prometteva per connettere dispositivi diversi in maniera semplice e veloce. Nel Luglio 1992 Intel Corporation presenta la tecnologia PCI. In questa prima versione lo Standard PCI risultava compatibile con gli altri Bus che allora andavano per la maggiore. L’interesse per questa tecnologia, che, come già osservato, facilitava enormemente la vita ai produttori di chip, divenne subito altissimo. Nel Maggio 1993, proprio quando il Vesa Local Bus, noto come VL Bus, stava per decollare come supporto fondamentale per i nuovi microprocessori Pentium, Intel propose la seconda versione di PCI (la cosiddetta “specifica PCI 2.1”). Il nuovo progetto era diverso da VL Bus, inoltre era, con esso, incompatibile. Il successo di quello che è ormai noto come Bus PCI non era, però, semplicemente legato ad eleganti “astuzie” di mercato. La versatilità, ossia la possibilità di offrire prestazioni autonome rispetto al sistema, e la tolleranza per il “classico” Bus ISA hanno fatto la fortuna di questa tecnologia per conquistare con trasparenza i consensi del pubblico. Caratteristiche fondamentali Il Bus PCI può essere pensato come il Bus di domani. Questo per vari motivi. Il Bus PCI è veloce (33, 66, 133 Mhz). Il Bus PCI è indipendente dal microprocessore (se l’Industria dei microprocessori dovesse abbandonare lo Standard Intel, PCI sopravviverebbe). Il Bus PCI non necessita dell’appoggio su altri Bus (come, ad esempio, accade per VL Bus), ma può gestire autonomamente anche le espansioni. • • • • Velocità. Il Bus PCI può lavorare in modo sincrono o asincrono. In modo sincrono viene prelevato il clock della CPU ed eventualmente “demoltiplicato” (ad esempio, la CPU lavora a 66 Mhz e il PCI a 33 Mhz). In modo asincrono può lavorare, con la CPU e/o con le periferiche utilizzando opportune linee del suo Bus per sospendere momentaneamente la transazione corrente; questo si ottiene disponendo su tali linee di controllo segnali di “richiesta”, di “pronto” e di “attesa”( si veda oltre: arbitraggio del Bus). Multiplexing. Vengono utilizzate 32 linee per il trasferimento dei dati. Al fine di evitare un numero eccessivo di queste linee, le stesse vengono utilizzate anche per il trasferimento degli indirizzi. Avviene cioè un multiplexaggio (veloce) ogniqualvolta si debba immettere sul Bus un Indirizzo oppure un dato. Per questo motivo le 32 linee vengono nominate come AD00, AD01, ……, AD31 (Dove AD sta per Address-Data). Bursting. Per velocizzare il transito dei dati lungo le linee del Bus, viene collocato (in multiplexing) un singolo indirizzo che viene poi seguito da una raffica (bursting) di dati. In modalità Burst si ottengono prestazioni di 132 MB/s. Ampiezza. L’ampiezza del Bus dati (32 linee) consente il transito parallelo di 2 Word per 5 • volta. Nei PCI a 64 bit (PCIX) vengono fatte transitare ben 4 Word alla volta. Tensione. Il Bus PCI anticipa la logica delle tensioni ridotte. Utilizzando 3,3 Volt invece dei tradizionali 5Volt, si anticipa la tecnologia a risparmio energetico. Arbitraggio del Bus e Interruzioni Delle linee che compongono il Bus PCI, alcune vengono destinate al transito dei dati e degli indirizzi (linee AD00 – AD31), altre svolgono funzioni di controllo. Le linee REQ# e GNT# (Request e Grant) svolgono funzioni analoghe a quelle già trattate a proposito del DMA Controller nel paragrafo relativo al DMA. Il Bus Controller (Chip specifico che controlla il Bus PCI) invia un Grant (segnale elettrico sulla linea GNT#) quando riceve un Request (segnale elettrico sulla linea REQ#). Il dispositivo che riceve il Grant diviene così Master del Bus ossia ne prende il dominio secondo un ordine di precedenze stabilito dal Bus Controller. I segnali di Interrupt Hardware viaggiano sulle 4 linee di controllo INTA#, INTB#, INTC# e INDD#. Si possono così definire 16 diversi Interrupt. Come per gli altri Bus, in caso di condivisione di Interrupt da parte di più periferiche, si ricorre alle Interruzioni Vettorizzate (già trattate nei precedenti paragrafi). Conclusioni Sebbene il Bus ISA rappresenti il vero modello tradizionale di Bus e il suo studio sia quindi un fondamento per la comprensione delle tecniche utilizzate per gestire questo strumento di connessione e di espansione, la conoscenza del Bus PCI è doverosa, viste le implicazioni con gli Standard precedenti e vista la sua affermazione come risorsa fondamentale per le macchine attuali. La sua odierna convivenza insieme al Bus ISA è dovuta solo a motivi di compatibilità con vecchi sistemi. Gli slot di espansione ISA, che ancora troviamo su Computer recenti, dovrebbero, gradualmente, essere totalmente soppiantati dalla sola presenza degli slot PCI. Le prestazioni e i livelli di tensione, d’altronde, mostrano con chiarezza che la scelta sia obbligata. Quello che rimane sono, sempre e comunque, i fondamenti: il Bus è il mezzo su cui transitano i dati in formato elettrico, le tecniche utilizzate per migliorarne le prestazioni sono solo stratagemmi mirati a perfezionarne l’architettura, mantenendola al passo con le macchine più recenti. 6