Tutte le operazioni di I/O fra le unità avvengono sostanzialmente attraverso i Bus.
Tali operazioni coinvolgono i seguenti problemi principali:
Dato l’elevato numero di componenti collegate al BUS, le varie richieste provenienti dai vari moduli, che potrebbero portare a conflitto, devono essere in qualche maniera filtrate e arbitrate: c’è quindi una politica di arbitraggio, implementata via hardware, che decide chi ha priorità nell’uso del BUS e ne gestisce il controllo. Inoltre, tutte le azioni svolte tramite BUS vengono temporizzate tramite un clock: in particolare le azioni vengono svolte nel fronte ascendente del ciclo di clock.
In ogni istante, una sola unità possiede il controllo del Bus, cioè decide quali operazioni di I/O eseguire. Generalmente la CPU possiede il controllo del Bus (o dei Bus, se ve n’è più di uno), ma può anche cedere temporaneamente questo ruolo ad altre unità
Concetto di Master e Slave
L’unità che detiene il controllo del Bus si chiama Master: decide quale operazione eseguire, lettura oppure scrittura, e in quale istante di tempo; decide ovviamente qual’è l’unità funzionale da leggere oppure da scrivere
Le rimanenti unità funzionali, che non detengono il controllo del Bus, si chiamano Slave
Ogni Bus è controllato da un unico Master; ogni Master può controllare più Bus. Il calcolatore deve possedere almeno un Master (do solito la CPU)
Ogni Bus può collegare più Slave
Normalmente la CPU ha il ruolo di Master tra le unità funzionali
Tuttavia in determinate circostanze anche altre unità funzionali possono assumere temporaneamente il ruolo di Master. Unità di I/O: possono diventare Master per trasferire dati direttamente con la memoria, senza bisogno della CPU (DMA). (CO)processore di I/O: può diventare Master per prelevare operando dalla memoria
In caso di cessione del ruolo di Master da un’unità funzionale a un’altra, o di più richieste contemporanee del Bus, occorre un meccanismo di ARBITRAGGIO DEL BUS, che ne regoli l’utilizzo da parte delle unità funzionali
Esistono due meccanismi principali di arbitraggio: centralizzato e distribuito.