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.