Conclusioni.

    Tutte le volte che due o più dispositivi devono utilizzare una sola linea per poter comunicare occorre una tecnica di arbitraggio per stabilire chi può trasmettere per primo in base al proprio livello di priorità, ma si deve consentire anche a chi possiede il livello di priorità più basso, di poter effettuare le proprie transazioni secondo una proprietà di fairness. Qualunque tipo di algoritmo di arbitraggio si utilizzi è sempre necessario trovare un compromesso tra le priorità dei dispositivi e il grado di fairness necessario.
    L’operazione di arbitraggio deve essere veloce per evitare lunghe attese, e per questa ragione occorre scegliere uno schema di arbitraggio appropriato in fase di progettazione: uno schema centralizzato lavorerà bene soltanto con pochi master (fino a otto), volendo utilizzare più dispositivi una tecnica distribuita è più adeguata.
      I quattro tipi di schemi analizzati descrivono tutte le tecniche utilizzate nell’arbitraggio del bus. Esiste tuttavia un altro metodo di arbitraggio molto importante che, anche se non utilizzato per il bus nel senso classico del termine, completa la panoramica fatta su questo argomento e ci aiuta a introdurre le considerazioni su quella che è l’attuale tendenza  sulla futura architettura dei calcolatori. Si tratta di un arbitraggio distribuito con rilevamento delle collisioni in cui ciascun dispositivo avanza indipendentemente la sua richiesta di controllo del bus. Richieste multiple simultanee provocano una collisione. La collisione viene rilevata e si usa un protocollo di arbitraggio per la selezione di un dispositivo tra quelli che hanno causato la collisione. Un esempio di arbitraggio distribuito con rilevamento delle collisioni è la rete Ethernet molto utilizzata oggi nelle schede di rete locale.
      Il protocollo che gestisce il traffico delle reti Ethernet è il CSMA/CD (Carrier Sense Multiple Access with Collision Detection). CS indica che le varie stazioni prima di trasmettere ascoltano se il canale è libero, MA sta ad indicare che più stazioni possono iniziare a trasmettere contemporaneamente dando luogo a collisioni e CD vuol dire che le collisioni rilevate, causate da trasmissioni simultanee,  vengono gestite.
      Per avere una idea di come questo sistema di arbitraggio funziona tracciamone alcuni passi generali senza entrare troppo nei dettagli per evitare di allontanarci dal tema centrale di questa trattazione.
      Ogni adattatore di rete che deve effettuare una trasmissione prepara i dati e altre informazioni necessarie, all’interno di un pacchetto detto frame. Se il canale è libero la trasmissione ha seguito, altrimenti si attende prima di ritrasmettere. Durante l’invio dei dati l’adattatore monitora la rete cercando eventuali collisioni in assenza delle quali considera il frame spedito con successo. Se durante una trasmissione viene rilevata una collisione, cioè un tentativo da parte di un’altra stazione di utilizzare il canale, la trasmissione viene interrotta e viene inviato un segnale di disturbo (jam) che avverte tutti gli adattatori che è stata rilevata una collisione. Tutti le stazioni si mettono in attesa per intervalli di tempo casuali che, in caso di ulteriori collisioni, aumentano con legge esponenziale.
      
      Proprio il mondo delle reti locali ed in particolare le caratteristiche di funzionamento delle reti ethernet hanno influenzato i progettisti riguardo l’evoluzione dell’attuale architettura dei calcolatori e nello specifico del bus.
      Il bus PCI, che è quello attualmente più diffuso, anche se funziona egregiamente, non è più in grado di rispondere alla sempre più crescente larghezza di banda richiesta da alcune applicazione soprattutto grafiche. Finora si è ovviato creando dei canali dedicati solo per gli adattatori grafici sui quali si è quadruplicata la banda del PCI, ma adesso anche questa è diventata insufficiente. Ci troviamo in un momento di svolta importante nel mondo dell’architettura dei calcolatori.
      Il successore del bus PCI è stato realizzato da Intel ed è chiamato PCI Express. Ad di là del nome, non ha nulla in comune col bus PCI, anzi in verità non è neppure un vero e proprio bus. Col PCI Express si rinuncia definitivamente al bus parallelo comune e a tutti i numerosi master e slave e ovviamente alle tecniche di arbitraggio di cui ci siamo occupati. Rifacendosi alla topologia delle reti, esso, ha una architettura basata su connessioni seriali punto-punto chiamate link. I dispositivi convergono tutti verso uno switch che ha il compito di creare questi link tra di loro.
      Oltre alla struttura punto-punto, il PCI Express ha un’altra caratteristica presa dal mondo delle reti, ed è quella della commutazione di pacchetto: la trasmissione di dati da parte di un dispositivo ad un altro avviene per mezzo dei frame, come abbiamo visto per gli adattatori ethernet.
      PCI Express e bus PCI per il momento convivono all’interno della stessa mainboard, ma presto il PCI sarà relegato ad un ruolo secondario fino a quando, nel giro di qualche anno scomparirà del tutto, come d’altra parte  è avvenuto per il bus ISA.
      La problematica legata all’arbitraggio del bus, nel senso classico del termine, forse scomparirà insieme al PCI, ma, come si è voluto sottolineare all’inizio di questa sezione, quando due o più dispositivi devono utilizzare un’unica linea per comunicare sarà sempre necessario una politica di arbitraggio. E d’altra parte, tornando al PCI Express, sicuramente nel momento in cui allo switch arrivano più richieste simultaneamente, occorre stabilire a quali di queste richieste dare priorità. Ma questo è un altro argomento che richiederebbe una trattazione specifica.


first.pngprev.pngnext.pnglast.png