Arbitraggio decentralizzato daisy chaining.
      
      Un secondo possibile arbitraggio del bus è quello decentralizzato, in cui i compiti dell’arbitro vengono distribuiti ai singoli master che comunicando tra di loro decidono chi deve usare il bus.
      La scelta di un tale sistema se da un lato riduce i costi di un circuito dedicato, dall’altro obbliga le periferiche collegate al bus ad avere una logica di controllo più complessa.
      Un tipico schema di arbitraggio decentralizzato è riportato in figura 5 in cui si osserva che vengono utilizzate principalmente tre linee. La bus request è una tipica wired-OR che è asserita dal dispositivo al momento della richiesta. La linea busy, già vista per il VMEbus, è attivata dal master che ha ottenuto il bus. La terza linea, che attraversa uno dopo l’altro tutti i dispositivi  collocati in daisy chaining, è quella di arbitraggio che è mantenuta sempre asserita.

       Decentralizzato_640.gif
Figura 5        Arbitraggio decentralizzato di tipo daisy chaining.

      Affinché un dispositivo possa acquisire il controllo del bus è necessario che la linea busy non sia attiva e il segnale che sta ricevendo all’ingresso IN sia asserito. Se IN non è asserito il dispositivo che vuole ottenere il bus, nega OUT in modo che i dispositivi successivi vedano il loro segnale IN negato. Se il bus è libero e IN è asserito il dispositivo potrà diventare master, quindi nega OUT e asserisce busy iniziando la propria transizione sul bus.
      Un simile schema di arbitraggio fu implementato per il Multibus I5 .
    Supponiamo che il master 4 stia pilotando il bus, quindi busy è asserita e IN4 è asserita. Se il dispositivo 2, a priorità più alta, ha necessità di accedere al bus e vede il bus occupato, nega OUT2.  Il dispositivo 4 campiona la propria linea di arbitraggio e si accorge che è stata negata, ma il rilascio del bus non avviene istantaneamente. E’ necessario un certo intervallo di ritardo che consente al dispositivo 4 di interrompere la transazione corrente. Successivamente il dispositivo 4 disasserisce la linea busy e nel caso non abbia concluso le proprie operazioni mantiene alta la richiesta cercando di riguadagnare il bus non appena il master a priorità maggiore lo avrà rilasciato. Adesso il dispositivo 2 potrà pilotare il bus asserendo la linea busy e iniziando la transazione. Si noti che il ruolo della linea busy è quello di garantire la sincronizzazione tra i dispositivi.
      Questa fase di scambio del controllo del bus tra i dispositivi, detta appunto bus exchange, è molto importante per questo tipo di arbitraggio. Al fine di evitare che i dispositivi a bassa priorità attendano a lungo, è obbligatorio, da parte dei master, sottoporsi ad un ciclo  di bus exchange rilasciando il bus dopo ogni transazione anche in assenza di altre richieste. A garantire ancor meglio il fairness nel Multibus I è presente una quarta linea chiamata Common Bus Request con la quale si informa il master corrente che il bus deve essere rilasciato perché vi sono richieste pendenti.
      Per evitare che il master corrente si sottoponga al bus exchange si può utilizzare un’altra possibile tecnica detta del bus parking, che consiste nel lasciare il controllo del bus all’ultimo master. Di questa tecnica ne discuteremo più avanti.
      Le strutture di tipo daisy chaining hanno il vantaggio di essere semplici da realizzare, ma  occorre utilizzare una politica di arbitraggio adeguata per evitare lunghe attese ai master a bassa priorità, e inoltre il segnale di grant in cascata può limitare la velocità del bus.


first.pngprev.pngnext.pnglast.png