Introduzione

      In un calcolatore la comunicazione tra i vari dispositivi avviene attraverso il bus di sistema1. Dato che tutti i dispositivi sono collegati al bus2 è necessario un meccanismo in grado di controllarne l’accesso. Il motivo è facilmente intuibile: se non vi fosse alcun controllo ogni periferica che volesse comunicare potrebbe cercare di forzare sulle linee del bus un proprio indirizzo, e se questo fosse compiuto contemporaneamente da tutti, si otterrebbe un sistema totalmente instabile. Così come quando più persone cercano di parlare tutte nello stesso istante e ciò che dicono diventa incomprensibile. È quindi necessario qualcuno in grado di coordinare e dare l’autorizzazione a parlare, o devono essere loro stessi ad autodisciplinarsi seguendo delle regole che devono essere rispettate da tutti.  
      Quando la cpu o una periferica ottiene l’accesso al bus, questa assumerà il ruolo di master. Un master può aver bisogno ad esempio di leggere dei dati in memoria, la quale, in queste condizioni, svolgerà il ruolo di slave. Questi stati possono essere assunti dalla maggior parte dei dispositivi che opportunamente si comporteranno da master o da slave. Una eccezione è fatta dalla memoria che può avere solo il ruolo di slave.
      La presenza su un bus di più dispositivi master richiede quindi l’intervento di un meccanismo in grado di regolare l’accesso al bus stesso, nonché di evitare situazioni indesiderate quali: attese indefinite (starvation) o paralisi del sistema (dead-lock).
      Tale meccanismo può essere centralizzato o decentralizzato.
      In un sistema centralizzato un circuito detto arbitro, accetta su linee dedicate le richieste da parte dei master stabilendo a quale concedere l’autorizzazione (grant) all’utilizzo del bus.
      Una struttura decentralizzata non richiede la presenza di un arbitro. L’assegnazione del master avviene mediante un protocollo distribuito, cioè per mezzo di una logica posseduta da tutti i dispositivi e attraverso la quale concorrono al bus stabilendo l’ordine di accesso in base al proprio livello priorità.
    La scelta avviene quindi sulla base di un livello di priorità pre-assegnato ma deve anche soddisfare un’importante proprietà di equità (fairness): ogni dispositivo deve poter accedere al bus.

    Sono anche possibili arbitraggi misti, in cui i master si accordano tra loro con una tecnica autoselettiva, ma la gestione del bus viene comunque demandata a un controllo centralizzato3 .

      Un’ulteriore classificazione dipende dal modo in cui i dispositivi sono connessi rispetto al bus. Gli schemi possibili sono due: un collegamento a festone (daisy chaining) in cui i dispositivi sono collegati in serie, oppure un collegamento in parallelo.
      In fase di progettazione la scelta dello schema di arbitraggio più idoneo dipende da diversi fattori, tra cui il livello di espandibilità che deve essere garantito dal bus in termini di numero di dispositivi e di lunghezza del bus, la velocità richiesta per l’arbitraggio, ed il grado di fairness voluto.
    Q
uello di fairness è un concetto fondamentale nella teoria dell’arbitraggio del bus. Lo scopo principale dell’implementazione di un buon algoritmo di arbitraggio è quello di evitare situazione di deadlock dovute alle lunghe attese dei dispositivi per accedere al bus. Soddisfare la proprietà di fairness significa quindi garantire l’accesso al bus ad ogni potenziale master che ne fa richiesta indipendentemente dalle altre richieste. E’ una politica che assicura che i master ad alta priorità non abbiano il controllo totale del bus a discapito di quelli a priorità minore anche nel caso in cui i primi facciano continue richieste. Questo però, non significa che a tutti i dispositivi deve essere garantito un uguale numero di accessi al bus. L’acquisizione del bus da parte di un dispositivo e quindi il suo grado di priorità dipenderà dalle sue caratteristiche e dal suo bisogno di accedere al bus per poter operare in modo ottimale.
      Quando parleremo del bus PCI sarà presentato un esempio in grado di far comprendere meglio questo concetto.
      Faremo una panoramica dei diversi sistemi di arbitraggio del bus analizzandone, per ogni tipologia, uno realmente implementato, cercando di mettere in evidenza quali sono i pro e i contro di ciascuno tipo di schema.
      Infine proveremo a capire quale sarà il destino del bus e delle tecniche di arbitraggio dal momento che l’attuale architettura dei calcolatori sta per essere profondamente modificata.


first.pngprev.pngnext.pnglast.png