Calcolatori elettronici/I bus

Da WikiAppunti.
< Calcolatori elettronici(Reindirizzamento da Bus)
Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è A14. I bus.
Gtk-go-back-ltr.svg  A13. Intel 8259Gtk-home.svg  Calcolatori elettroniciA15. Le architetture a pipeline  Gtk-go-forward-ltr.svg

2-5 Il bus è la struttura di interconnessione condivisa tra la CPU e il resto del sistema (memoria, periferiche). È composto da:

  • bus di indirizzi: segnali di indirizzo
  • bus dati: segnali di dato
  • bus controllo: segnali di controllo

Solo un dispositivo per volta può scrivere sul bus; possono essere più di uno i dispositivi che leggono dal bus. Quando un dispositivo diventa il bus master (o master del bus), prende il controllo del bus e decide a ogni ciclo il tipo di operazione da effettuare (ad es. ciclo di lettura dalla memoria, ciclo di scrittura su un periferico, ciclo di Interrupt Acknowledge).

3 Human-edit-redo.svg 2. Il progetto di circuiti logici#Interfacce al bus

Implementazione[modifica]

  • 4 bus interno a un circuito integrato (ad es. il processore);
  • pista a bordo di una scheda su cui sono montati più circuiti integrati;
  • bus di backplane: può collegare più schede.

6 In un bus multiplexato le stesse linee portano a seconda dei momenti segnali di dato o di indirizzo → si risparmiano linee di bus, ma è necessaria una circuiteria per la connessione alla memoria e la velocità è minore rispetto ai bus non multiplexati.

11 Nelle architetture a bus multiplo, più bus sono organizzati gerarchicamente in base alla velocità e sono connessi tra loro attraverso dei processori di IO oppure dei bridge, che si occupano al momento opportuno di leggere il segnale dal bus di livello superiore e di restituirlo al bus di livello inferiore.

175 Da/su un bus condiviso possono leggere/scrivere più moduli. I bus dedicati sono impropriamente strutture di comunicazione tra due moduli. Il bus condiviso è più economico, ma ha prestazioni meno elevate rispetto al bus dedicato, perché non può supportare più di una comunicazione in contemporanea.

Sincronizzazione[modifica]

Bus sincroni[modifica]

17 Tutti i dispositivi collegati a un bus sincrono condividono un unico segnale di clock, e la frequenza di clock è imposta dal dispositivo più lento. È preferibile che non ci siano dei dispositivi troppo lenti o troppo lontani tra di loro o dalla sorgente di clock a causa dei ritardi fisici del segnale.

21 Ogni volta che un dispositivo slave non riesce a completare un'operazione sul bus entro il tempo prestabilito, il bus master deve aggiungere dei colpi di clock, chiamati cicli di wait, fino a quando il dispositivo non completa l'operazione e non attiva il segnale di ready. I cicli di wait devono essere però richiesti il meno possibile, ad esempio da dispositivi acceduti raramente o da memorie impegnate nel refreshing.

Bus asincroni[modifica]

18 La soluzione a bus asincrono non prevede un segnale di clock comune, ma ogni ciclo di bus è delimitato dai segnali di controllo strobe e acknowledge:

  • strobe: il dispositivo sorgente comunica che il segnale è stato scritto sul bus;
  • acknowledge: il dispositivo di destinazione comunica che ha terminato la lettura del segnale dal bus.

La durata del trasferimento dipende solo dalle velocità dei due dispositivi coinvolti. La soluzione sincrona è più complessa e costosa rispetto a quella asincrona perché sono necessari dei segnali di controllo e una logica che li piloti.

Arbitraggio[modifica]

24 Quando una risorsa è condivisa, serve un meccanismo di arbitraggio per gestire le situazioni di contesa:

  • arbitraggio del bus: la CPU e il DMA Controller vogliono diventare bus master nello stesso momento, ma ad ogni istante un solo dispositivo può funzionare da master del bus;
  • più processori voglio fare accesso in contemporanea a un disco fisso;
  • più dispositivi vogliono effettuare una richiesta di interruzione al processore: Human-edit-redo.svg Interrupt.

Arbitraggio distribuito[modifica]

25 L'arbitraggio distribuito non prevede alcun arbitro. Nel caso del bus SCSI, ad esempio, ogni dispositivo che vuole essere promosso a bus master deve prima accertarsi che non esista un altro dispositivo a priorità più alta (cioè su una linea DB(i) con numero i maggiore) che a sua volta intende diventare il bus master.

Arbitraggio centralizzato[modifica]

26 L'arbitraggio centralizzato prevede un arbitro che decide chi promuovere a bus master per il prossimo ciclo di bus. Tutti i dispositivi sono collegati al segnale Bus Busy che indica se il bus è attualmente libero o occupato da un bus master.

Richieste indipendenti[modifica]

33 Con il meccanismo delle richieste indipendenti ogni dispositivo è collegato all'arbitro tramite una coppia di segnali di controllo:

  • Bus Request: il dispositivo richiede di essere promosso a bus master;
  • Bus Grant (o Acknowledge): l'arbitro concede al dispositivo la promozione a bus master.

È una soluzione costosa perché servono molti segnali di controllo e un arbitro che implementi una strategia intelligente.

Daisy Chaining[modifica]

27 Nel Daisy Chaining i vari segnali Bus Request delle unità sono collegati in wired-or. Quando arriva una richiesta il Bus Grant, segnale unico, inizia a scorrere nella catena delle unità alla ricerca di quella che ha fatto la richiesta:

  • se l'unità corrente è quella che ha fatto la richiesta, essa attiva il Bus Busy e prende il controllo del bus;
  • se l'unità corrente invece non ha fatto richiesta, passa il Bus Grant all'unità successiva.

È una soluzione semplice ed economica perché il numero dei segnali è indipendente dal numero di unità, ma presenta delle caratteristiche svantaggiose:

  • poco flessibile: le priorità sono fisse, e l'ultimo dispositivo nella catena ha la priorità minima;
  • lenta: il Bus Grant impiega un certo tempo a scorrere la catena;
  • poco affidabile: se un'unità precedente nella catena smette di funzionare, la catena si interrompe.

Polling[modifica]

Esempio di arbitraggio centralizzato con polling.

30 La soluzione con polling differisce dal Daisy Chaining per il meccanismo del Bus Grant. Quando il bus si libera e almeno un'unità ha fatto la richiesta (tramite connessione wired-or), l'arbitro scandisce la catena interrogando i dispositivi uno alla volta, e si ferma al primo che risponde e attiva il Bus Busy. A ogni unità è associato un codice identificativo binario, che durante la scansione della catena viene fornito dall'arbitro su un'altra linea a cui sono collegate tutte le unità.

Vantaggi
  • maggiore flessibilità all'interno dell'arbitro: cambiando l'ordine con cui l'arbitro scandisce i dispositivi è possibile implementare qualsiasi meccanismo di gestione delle priorità;
  • maggiore tolleranza ai guasti: se un'unità si guasta le altre continuano a funzionare.
Nota disambigua.svg Il titolo di questa pagina non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è A14. I bus.
Gtk-go-back-ltr.svg  A13. Intel 8259Gtk-home.svg  Calcolatori elettroniciA15. Le architetture a pipeline  Gtk-go-forward-ltr.svg