Arbitraggio centralizzato daisy chaining.
      
      In un qualunque schema di arbitraggio, quando un dispositivo vuole usare il bus invia un segnale di richiesta (bus request) ricevendo successivamente un segnale di autorizzazione (bus grant) che gli da diritto a utilizzare il bus. Quando avrà finito, il bus potrà essere assegnato ad un altro richiedente.
      In un sistema ad arbitraggio centralizzato è presente un circuito che ha il compito di individuare quale dispositivo ha diritto di utilizzare il bus. Nella figura 1 è schematizzato un semplice esempio di arbitraggio centralizzato. Le periferiche inviano le richieste all’arbitro utilizzando una linea wired-OR  per cui l’arbitro non può sapere quanti dispositivi hanno inviato la richiesta di utilizzo del bus.
      Quando arriva una richiesta, se il bus è disponibile, l’arbitro asserisce la linea di bus grant che attraversa uno dopo l’altro i dispositivi collegati in daisy chaining. Il primo dispositivo, cioè più vicino all’arbitro, vede l’autorizzazione e, se ha fatto richiesta se ne impossessa interrompendo la propagazione del bus grant. Se non ha fatto richiesta propaga la concessione al dispositivo successivo.
      In questo schema ai dispositivi non è assegnato un livello di priorità anche se esiste una priorità implicita che è determinata dalla distanza dall’arbitro. Lo svantaggio principale è che non è garantito il fairness: una richiesta effettuata da un dispositivo distante dall’arbitro potrebbe rimanere bloccata indefinitamente.
      Per aggirare questo ostacolo si definiscono dei livelli di priorità. Esistono tante linee di richiesta e di concessione quanti sono i livelli. A ciascun dispositivo viene assegnato un livello per la richiesta del bus.
      La Figura 2 illustra uno schema di arbitraggio centralizzato a 2 livelli di priorità. In situazioni reali si possono avere 4, 8 o 16 livelli.
      

Figura 1        Schema di un arbitraggio del bus centralizzato a un livello di tipo daisy chaining.

      Quando due o più dispositivi fanno richiesta del bus quello a priorità più alta lo otterrà per primo. A parità di priorità vale la regola del daisy chaining.
      E’ chiaro allora che in questo caso, ad esempio, il dispositivo 5 rischia  di attendere a lungo prima che il segnale di grant lo raggiunga.
      Per comprendere meglio il modo in cui l’arbitro gestisce le richieste dei master, evitando che si verifichino situazioni di attesa indefinita è utile presentare il seguente caso reale di cui una rappresentazione semplificata è mostrata in figura 3. Uno schema centralizzato a 4 livelli è adottato per il bus VME (comunemente chiamato versabus)4 .


Figura 2     Schema daisy chaining centralizzato a 2 livelli di priorità.

      Quattro linee di richiesta separate arrivano all’arbitro, da BR0* a BR3* dove lo 0 è il livello più basso e il 3 è quello più alto. Ad ogni livello di priorità è associata una coppia di linee per la gestione del bus grant, BGxIN* e BGxOUT*. Sono inoltre presenti altre due linee, BBSY* che indica se il bus è disponibile o meno e BCLR* il cui funzionamento verrà chiarito più avanti.
      Per la denominazione dei segnali si è preferito utilizzare quella riportata sulle specifiche del bus VME e così si farà anche nel seguito di questa trattazione per altri bus. Quindi è possibile trovare una linea con la stessa funzione, ma che utilizza un nome diverso. Si osservi inoltre che il simbolo * che segue il nome, indica semplicemente che il segnale è asserito quando il suo valore è basso. In seguito sarà possibile trovare altre simbologie.
      Quando un dispositivo effettua una richiesta del bus, l’arbitro, se BBSY* indica che il bus è libero, genera il segnale sul bus grant al livello corrispondente alla linea di richiesta. Il primo dispositivo riceve il segnale di autorizzazione attraverso BGxIN*, verifica se ha fatto richiesta e in caso negativo lo propaga su BGxOUT* al BGxIN* del dispositivo successivo. Il grant è quindi propagato lungo la catena finché non arriva al richiedente, il quale ne bloccherà la propagazione  e attiverà il BBSY*. Una volta che il dispositivo è riuscito ad avere il bus, esso può tenerlo indefinitivamente a meno che l’arbitro non asserisca BCLR* obbligando il suo rilascio.
      
       
Figura 3     Schema di arbitraggio del bus VME in cui si è evidenziato il solo livello 3.

      Le motivazioni che portano ad attivare BCLR* dipendono dal modo in cui vengono gestite le priorità. Si possono usare diverse tecniche che rispondono a diversi requisiti di funzionamento. Utilizzando la tecnica a priorità fissa si rischia di escludere dal controllo del bus i dispositivi alla fine della catena e con priorità più bassa. Si può invece utilizzare una tecnica a priorità rotante (round robin) che garantisce a ciascun dispositivo un tempo massimo, trascorso il quale, la linea BCLR* può essere asserita in presenza di altre richieste.
      In figura 3 è inoltre interessante notare la presenza di due linee, DWB e DGB che permettono la comunicazione tra il master e la propria interfaccia di controllo che avrà il compito di effettuare all’arbitro la richiesta vera e propria. La DWB viene attivata dal master nel momento in cui informa il suo controllore che ha bisogno di accedere al bus. Non appena il controller ottiene il bus asserisce DGB informando il master che può iniziare la transizione. Se durante un utilizzo del bus arriva una richiesta a priorità più alta (BCLR* asserita), il controllore disasserisce DWG facendo interrompere la transazione ma, se il master non ha completato le proprie operazioni, il DWB continua a rimanere attivo in modo che al prossimo ciclo sia già pronto per una nuova richiesta.
      In figura 4 è riportato l’andamento dei segnali quando il dispositivo allo slot 3 effettua la richiesta del bus.
      

 

Figura 4             Andamento dei segnali durante la fase di richiesta del bus VME da parte del dispositivo 3. I segnali con asterisco sono asseriti con valore basso. La richiesta inizia con l’attivazione di DWB3 a cui segue quella di BR3* (1). Poiché BBSY* è disasserito il grant si propaga (2) fino ad arrivare allo slot 03 che se ne impossessa asserendo DGB3 (3). Il dispositivo 3 può utilizzare il bus per tutto il tempo necessario, ma l’attivazione di BBSY* (4) interrompe la propagazione del grant  (5) e i segnali DWB3 e BR3*  vengono disasseriti in modo da permettere altre richieste.




first.pngprev.pngnext.pnglast.png