L'arbitro del bus entra in gioco nel momento in cui più dispositivi richiedono contemporaneamente l'utilizzo del bus.
L'arbitraggio del bus può essere:
Quando l'arbitro, "vede" una richiesta attiva la linea di grant del bus.
Un dispositivo di I/O invia una richiesta per accedere al bus. Il bus riceve tale richiesta e concede (grant) il bus a tale dispositivo. Si noti che prima di quel dispositivo, ci possono essere altri dispositivi, il che vuol dire, per esempio, che se il modulo 3 richiede l'accesso, e l'arbitro concede il bus, i dispositivi 1 e 2 ignorano il bus (poiché non l'hanno richiesto), mentre il 3 lo accetta.
Può succedere che il 2 e il 3 richiedano il bus, allora in tal caso, il bus più vicino occupa il bus e il 3 si mette attesa che il 2 abbia completato le operazioni da fare sul bus. Chi è più lontano nella catena ha una priorità più bassa.
Questo tipo di bus è detto bus a catena, o Daisy chaining (catena di Daisy).
La catena può avere più livelli di priorità:
L'assegnamento segue lo stesso principio della Daisy chaining, ma dispositivi con priorità più alta hanno precedenza nell'assegnamento del grant da parte dell'arbitro. Si notino come sono collegati i dispositivi, ci sono moduli collegati al livello più alto e altri al livello più basso.
Ci sono tante linee quanti sono i dispositivi, ognuno osserva le linee prima di effettuare la richiesta (soluzione poco flessibile, ma si risparmia il costo dell'arbitro).
Quella che si vede sopra è una soluzione con tre linee: bus request, busy e linea di arbitraggio.
La linea di busy serve ai dispositivi per indicare che stanno usando il bus. Quando un dispositivo deve trasmettere sul bus controlla tale linea, se la linea comunica che il bus non è occupato allora comincia a trasferire, impostando la linea del bus a busy (occupata).
Più economico e più veloce del Daisy chaining centralizzato.
Prossimo argomento: dispositivi di input-output.