Un BUS è un sistema di comunicazione che trasferisce i dati tra i componenti all'interno di un computer, o tra computer..
I bus sono collegati tramite appositi piedini, chiamati pin, ovvero collegamenti elettrici costituiti da un pad metallico progettato per collegare elettricamente due dispositivi
I BUS sono suddivisi in due categorie principali:
- BUS interno: che trasporta informazioni da e verso l'ALU (Unità Aritmetico-Logica)
- BUS esterno: che trasporta informazioni da e verso le periferiche e la memoria
Ad ogni tipo di BUS appartengono le seguenti caratteristiche prestazionali:
Bitrate: la quantità di bit al secondo (b/s) trasmessi nel canale)
Velocità: la frequenza con la quale è gestito il ciclo di un BUS sincrono)
Larghezza: il numero di linee, quindi il numero di bit che possono viaggiare in contemporanea sul BUS
Banda: il numero massimo di byte al secondo (B/s) che possono essere trasmessi nel canale
Inoltre, è possibile suddividere i BUS in altre due categorie:
- BUS sincrono
- BUS asincrono
Il BUS sincrono è provvisto di un oscillatore che sincronizza le operazioni di comunicazione tramite un segnale d'onda quadra generata da un clock. E' dotato di una struttura più semplice, ma vincola le prestazioni globali al dispositivo più lento connesso.
Il BUS asincrono, invece, non ha un clock. I cicli del BUS non devono essere gli stessi per tutti i dispositivi e quindi permette di sfruttare al massimo le prestazioni di ogni dispositivo. Esso possiede una circuiteria complessa di sincronizzazione MSYN (Master Synchronization) e SSYN (Slave Synchronization).
Per regolare l'accesso ad un BUS viene effettuata un'operazione chiamata arbitraggio, che può essere di tre tipi:
- Arbitraggio centralizzato ad un livello
- Arbitraggio centralizzato a più livelli
- Arbitraggio distribuito
Nell'arbitraggio centralizzato ad un livello è presente un dispositivo chiamato arbitro appunto, che gestisce l'accesso al BUS. Le operazioni sono così sintetizzate:
Il dispositivo che vuole utilizzare il BUS attiva la linea BUS request (richiesta BUS), successivamente l'arbitro attiva la linea BUS grant (concessione BUS) appena diventa disponibile. La linea BUS grant passa da un dispositivo all'altro solo se questo non ha attivato la linea BUS request. Infine il dispositivo che ha attivato la linea BUS request deve attendere che la linea BUS grant si liberi prima di poter utilizzare il BUS.
L'arbitraggio centralizzato a più livelli è analogo a quello ad un livello, solo che comprende più linee BUS grant (con diversi livelli di priorità), e quindi, nel caso che vengano attivate due o più linee BUS request, l'arbitro attiva la linea BUS grant con livello più basso (con priorità maggiore).
Nell'arbitraggio distribuito invece non esiste l'arbitro; esiste invece una linea chiamata arbitration line che gestisce l'accesso al BUS. Le operazioni sono così sintetizzate:
Il dispositivo che vuole utilizzare il BUS nega la linea arbitration out, attende che si attivi la linea arbitration in e che si disattivi la linea busy. Quindi attiva la linea busy e la linea arbitration out e utilizza il BUS. Quando termina, il dispositivo disattiva la linea busy.
Davide Ragazzoni