Elettronica applicata e misure/Protocolli di bus
![]() |
![]() | ![]() | C6. Collegamenti seriali ![]() |
---|
5 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).
8 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[modifica]
10-21 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[modifica]
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[modifica]
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[modifica]
24 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:
- 29 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[modifica]
10 Lo slave con cui vuole comunicare il master viene selezionato tramite l'indirizzamento.
13 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).
- 12-14 Modalità di indirizzamento
- 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.
- 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[modifica]
34 Il throughput <math>T</math> di un bus è il numero di bit trasferito nell'unità di tempo:
- <math>T = W \times S</math>
dove:
- <math>W</math> è la larghezza del bus, cioè il numero di bit per ogni ciclo (numero di fili in parallelo);
- <math>S</math> è la velocità del bus, cioè il numero di cicli nell'unità di tempo;
- <math>t_C = \tfrac{1}{S}</math> è la durata di ogni ciclo di bus, e dipende da:
- parametri elettrici: <math>t_{TX}</math>, <math>t_K</math>;
- parametri dei moduli: <math>t_{SU}</math>, <math>t_H</math>, <math>t_{WR}</math>...;
- protocollo: numero di transizioni per ciclo, tipo di protocollo...
Migliorare le prestazioni significa aumentare il throughput <math>T</math>:
- aumentare il numero <math>W</math> di bit per ogni ciclo, ovvero ridurre il numero dei fili a parità di bit trasportati;
- ridurre la durata <math>t_C</math> dei cicli.
Bus multiplexato[modifica]
36 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[modifica]
38 Le memorie DDR quasi dimezzano la durata <math>t_C</math> 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 <math>T</math>, anche se l'hardware è più complesso perché deve riconoscere una successione più complessa di transizioni di stato.
Protocollo Source Synchronous[modifica]
40 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.
- 35 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[modifica]
41-42 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.
![]() |
![]() | ![]() | C6. Collegamenti seriali ![]() |
---|