# Elettronica applicata/Protocolli di bus

Elettronica applicata
Copertina Tutti i moduli · Sviluppo
    CopertinaElettronica applicata/Copertina
* Circuiti digitali
** Circuiti logiciElettronica applicata/Circuiti logici
** Circuiti sequenziali IElettronica applicata/Circuiti sequenziali I
** Circuiti sequenziali IIElettronica applicata/Circuiti sequenziali II
** Logiche programmabiliElettronica applicata/Logiche programmabili
** Comparatori di sogliaElettronica applicata/Comparatori di soglia
** Generatori di onda quadraElettronica applicata/Generatori di onda quadra
* Bus e interconnessioni
** InterconnessioniElettronica applicata/Interconnessioni
** Modelli a linea di trasmissioneElettronica applicata/Modelli a linea di trasmissione
** Pilotaggio di lineeElettronica applicata/Pilotaggio di linee
** Cicli di trasferimento baseElettronica applicata/Cicli di trasferimento base
** Protocolli di busElettronica applicata/Protocolli di bus
** Collegamenti serialiElettronica applicata/Collegamenti seriali
** Collegamenti seriali sincroniElettronica applicata/Collegamenti seriali sincroni
** Integrità di segnaleElettronica applicata/Integrità di segnale
* Sistemi di acquisizione dati
** Sistemi di conversione A/D e D/AElettronica applicata/Sistemi di conversione A/D e D/A
** Convertitori D/AElettronica applicata/Convertitori D/A
** Conversione A/DElettronica applicata/Conversione A/D
** Convertitori pipeline e differenzialiElettronica applicata/Convertitori pipeline e differenziali
** Condizionamento del segnaleElettronica applicata/Condizionamento del segnale
** FiltriElettronica applicata/Filtri
* Alimentatori e regolatori
** Sistemi di alimentazioneElettronica applicata/Sistemi di alimentazione
** Regolatori a commutazioneElettronica applicata/Regolatori a commutazione
Modifica il sommario
Una transazione è una sequenza di cicli di trasferimento, che sposta informazioni legate da un significato (indirizzo, dati, vettore di priorità...). In una transazione comunicano due unità:
* master: avvia l'operazione (es. CPU, DMA controller);
* slave: risponde ai comandi del master (es. memoria, periferiche di I/O).
In un sistema multi-punto tutte le unità condividono lo stesso canale, detto bus, costituito da un fascio di conduttori che connette tra loro tutte le coppie master-slave. Tutte le unità devono seguire lo stesso protocollo di transazione. Questo sistema è detto modulare aperto perché la configurazione del sistema può essere modificata aggiungendo o rimuovendo a piacere le schede.

## Allocazione

Solo un master alla volta può prendere il controllo del bus → un meccanismo di allocazione del canale garantisce che il bus sia pilotato da un solo master alla volta ed evita così le collisioni.

### Token passing

Il segnale di concessione del bus, detto grant, viene passato da un master all'altro secondo un ordine prestabilito, e ogni master quando fa richiesta aspetta il suo turno.

### Collision detection

Tutti i master richiedenti possono parlare sul bus in qualunque momento, ma deve esistere un meccanismo di collision detection in grado di rilevare la collisione (es. CSMA/CD).

### Arbitraggio

Un arbitro esamina le richieste e concede il grant secondo un criterio di arbitraggio:

#### First Come First Served (FCFS)

L'arbitro segue l'ordine temporale delle richieste, ma è impossibile avere una risoluzione temporale infinita per le richieste quasi simultanee.

#### Priorità

Ogni richiesta è associata a una certa priorità prestabilita, e vengono servite per prime le richieste a priorità maggiore → una sequenza ravvicinata di richieste ad alta priorità possono condannare alla starvation le richieste a bassa priorità, ovvero queste ultime non vengono mai servite perché hanno sempre la priorità richieste a priorità maggiore:

#### Priorità con fairness

Il meccanismo di fairness impedisce la starvation delle richieste a bassa priorità: l'arbitro crea in un certo istante un'istantanea delle richieste attive, le serve secondo le loro priorità ignorando tutte le nuove richieste che giungono nel frattempo, e alla fine quando tutte le richieste nell'istantanea sono state servite crea una nuova istantanea e ripete la procedura.

## Indirizzamento

Lo slave con cui vuole comunicare il master viene selezionato tramite l'indirizzamento.
All'interno di una unità slave si possono riconoscere:
* decoder di indirizzi: riconosce l'indirizzo fornito dal master;
* unità di controllo e temporizzazione: gestisce l'handshake (strobe/ACK);
* core (es. celle di memoria nel caso di una memoria);
* data buffer (es. transceiver).

### Modalità di indirizzamento

* Indirizzamento lineare
* Indirizzamento codificato
* lineare: c'è un filo per ogni coppia master-slave, e lo slave viene selezionato direttamente attivando il suo filo → è possibile selezionare più slave alla volta, ma è adatto solo per sistemi con pochi slave;
* codificato: il master scrive l'indirizzo dello slave sul bus, e lo slave deve riconoscere tale indirizzo come il suo.
* Indirizzamento logico
* Indirizzamento geografico
* logico: ogni slave è identificato da un indirizzo indipendentemente dalla sua posizione lungo il bus, quindi l'indirizzamento continua a funzionare anche se avviene lo scambio di due slave;
* geografico: l'indirizzo dello slave dipende dalla sua posizione lungo il bus, quindi il master non si accorge dello scambio di due slave.

## Tecniche di miglioramento delle prestazioni

Il throughput $T$ di un bus è il numero di bit trasferito nell'unità di tempo:
    $T=W\times S$
dove:
* $W$ è la larghezza del bus, cioè il numero di bit per ogni ciclo (numero di fili in parallelo);
* $S$ è la velocità del bus, cioè il numero di cicli nell'unità di tempo;
* $t_{C}={\tfrac {1}{S}}$ è la durata di ogni ciclo di bus, e dipende da:
** parametri elettrici: $t_{TX}$, $t_{K}$;
** parametri dei moduli: $t_{SU}$, $t_{H}$, $t_{WR}$...;
** protocollo: numero di transizioni per ciclo, tipo di protocollo...
Migliorare le prestazioni significa aumentare il throughput $T$:
* aumentare il numero $W$ di bit per ogni ciclo, ovvero ridurre il numero dei fili a parità di bit trasportati;
* ridurre la durata $t_{C}$ dei cicli.

### Bus multiplexato

* Bus parallelo
* Bus multiplexato
In un normale bus parallelo i segnali di indirizzo e di dato usano fili separati in cicli successivi, quindi in tempi diversi → il bus multiplexato ottimizza l'uso dei fili: sia i segnali di indirizzo sia quelli di dato viaggiano sullo stesso fascio di fili, quindi a parità di numero di fili è possibile trasferire più bit.

### Ottimizzazione del numero di transizioni

Le memorie DDR quasi dimezzano la durata $t_{C}$ dei cicli rimuovendo le transizioni inutili dei segnali di controllo strobe e ACK (dual-edge handshake) → si riduce il consumo di energia e aumenta il throughtput $T$, anche se l'hardware è più complesso perché deve riconoscere una successione più complessa di transizioni di stato.

### Protocollo Source Synchronous

Prevede solo operazioni di scrittura: i segnali di informazione e di comando (strobe) viaggiano insieme, e arrivano alla destinazione con un ritardo l'uno dall'altro al massimo pari allo skew.

#### Parametri di temporizzazione

* latenza dei dati: indica il tempo di attesa per ricevere i dati, e dipende da un solo tempo di trasmissione e dallo skew;
* frequenza di ciclo: è l'inverso della durata del ciclo, e non dipende dal tempo di trasmissione ma solo dallo skew.

#### Confronto prestazioni

* protocollo sincrono: la velocità dipende dalla periferica più lenta;
* protocollo asincrono: la velocità è adattativa;
* protocollo semisincrono: è il più lento perché bisogna aspettare l'eventuale segnale di wait dal dispositivo più distante;
* protocollo Source Synchronous: è il più veloce perché non si deve attendere alcuna risposta → è usato per le RAM ad alta velocità.

### Burst transfer

Spesso un'operazione di lettura, soprattutto da una memoria, viene effettuata su celle di indirizzo contiguo (località del software) → è possibile leggere una serie di locazioni di memoria sequenziale inviando solo il primo indirizzo, e un controllore situato nella memoria si occupa di incrementare l'indirizzo da cui leggere a ogni ciclo di dati.