Elettronica applicata/Protocolli di bus

CopertinaElettronica applicata/Copertina
  1. Circuiti digitali
    1. Circuiti logiciElettronica applicata/Circuiti logici
    2. Circuiti sequenziali IElettronica applicata/Circuiti sequenziali I
    3. Circuiti sequenziali IIElettronica applicata/Circuiti sequenziali II
    4. Logiche programmabiliElettronica applicata/Logiche programmabili
    5. Comparatori di sogliaElettronica applicata/Comparatori di soglia
    6. Generatori di onda quadraElettronica applicata/Generatori di onda quadra
  2. Bus e interconnessioni
    1. InterconnessioniElettronica applicata/Interconnessioni
    2. Modelli a linea di trasmissioneElettronica applicata/Modelli a linea di trasmissione
    3. Pilotaggio di lineeElettronica applicata/Pilotaggio di linee
    4. Cicli di trasferimento baseElettronica applicata/Cicli di trasferimento base
    5. Protocolli di busElettronica applicata/Protocolli di bus
    6. Collegamenti serialiElettronica applicata/Collegamenti seriali
    7. Collegamenti seriali sincroniElettronica applicata/Collegamenti seriali sincroni
    8. Integrità di segnaleElettronica applicata/Integrità di segnale
  3. Sistemi di acquisizione dati
    1. Sistemi di conversione A/D e D/AElettronica applicata/Sistemi di conversione A/D e D/A
    2. Convertitori D/AElettronica applicata/Convertitori D/A
    3. Conversione A/DElettronica applicata/Conversione A/D
    4. Convertitori pipeline e differenzialiElettronica applicata/Convertitori pipeline e differenziali
    5. Condizionamento del segnaleElettronica applicata/Condizionamento del segnale
    6. FiltriElettronica applicata/Filtri
  4. Alimentatori e regolatori
    1. Sistemi di alimentazioneElettronica applicata/Sistemi di alimentazione
    2. Regolatori a commutazioneElettronica applicata/Regolatori a commutazione
Sistema punto-punto
Sistema multi-punto

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.

AllocazioneModifica

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 passingModifica

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 detectionModifica

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).

ArbitraggioModifica

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.

IndirizzamentoModifica

Lo slave con cui vuole comunicare il master viene selezionato tramite l'indirizzamento.

 
Struttura interna di un'unità slave

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
  • 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 prestazioniModifica

Il throughput   di un bus è il numero di bit trasferito nell'unità di tempo:

 

dove:

  •   è la larghezza del bus, cioè il numero di bit per ogni ciclo (numero di fili in parallelo);
  •   è la velocità del bus, cioè il numero di cicli nell'unità di tempo;
  •   è la durata di ogni ciclo di bus, e dipende da:
    • parametri elettrici:  ,  ;
    • parametri dei moduli:  ,  ,  ...;
    • protocollo: numero di transizioni per ciclo, tipo di protocollo...

Migliorare le prestazioni significa aumentare il throughput  :

  • aumentare il numero   di bit per ogni ciclo, ovvero ridurre il numero dei fili a parità di bit trasportati;
  • ridurre la durata   dei cicli.

Bus multiplexatoModifica

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 transizioniModifica

Le memorie DDR quasi dimezzano la durata   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  , anche se l'hardware è più complesso perché deve riconoscere una successione più complessa di transizioni di stato.

Protocollo Source SynchronousModifica

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 transferModifica

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.