Un BUS è una struttura che unisce e interfaccia due o più componenti. Ogni valore introdotto sul BUS è leggibile da tutti i componenti che sono ad esso collegati. Le unità collegate utilizzano un trascreiver, che è diviso in due parti:
• driver, che serve per pilotare le linee del BUS
• receiver, che serve per leggere i valori presenti sul BUS
Esistono diversi tipi di BUS:
• interni ad un singolo circuito integrato
• per la connessione di più circuiti integrati su una scheda
• per la connessione di più schede in un sistema (backplane)
Un BUS è normalmente diviso in tre gruppi di segnali:
• di dato: normalmente sono in numero pari ad un multiplo di 8;
o bidirezionali
o unidirezionali
• di indirizzo: identificano lo slave con cui il master vuole comunicare
• di controllo: forniscono informazioni di stato, di temporizzazione, di tipo
Per ridurre il parallelismo del BUS molte volte si usano le stesse linee per trasmettere tutti e tre i tipi di dato. Esistono poi all’interno di un calcolatore diverse architetture di BUS:
• BUS singolo
• BUS multipli, se si hanno bisogno più BUS per aumentare le prestazioni o interfacciare dispositivi che supportano linee di BUS differenti
Esistono due categorie di BUS a seconda di come le periferiche ad esso collegate possono capire quando è terminata la trasmissione di un determinato dato:
• BUS sincroni: in essi le tempistiche sono dettate da un CK. E’ importante osservare che la frequenza di CK è imposta dal dispositivo più lento collegato al BUS. (funziona bene su brevi distanze)
• BUS asincroni: ogni operazione può avere una propria velocità siccome vengono mandati anche dei segnali di controllo (handshaking)
Nei BUS sincroni è possibile introdurre segnali particolari con la funzione di WAIT in modo tale da non essere troppo rallentati dalla presenza di memoria o di altri dispositivi molto più lenti rispetto ad altri.
In ogni istante di tempo solo un dispositivo può operare operazioni di scrittura sul BUS (BUS master), mentre tutti possono leggere simultaneamente. Esiste quindi un sistema di arbitraggio, che permette di risolvere i problemi legati alla richiesta di scrittura simultanea da parte di due dispositivi diversi. L’arbitraggio può avvenire in diversi modi:
• Centralizzato: esiste un vero e proprio “arbitro”
o Dasy chaining: quando il BSY si disattiva l’arbitro attiva il segnale BUS GRANT. Tutti i dispositivi che non hanno bisogno di prendere il ruolo di BUS Master inviano il segnale al dispositivo successivo, finchè uno di essi non ha bisogno. Allora prende il ruolo di BUS MASTER e smette di trasmettere il segnale BUS GRANT. Questo sistema richiede solo 3 segnali di controllo, non permette di modificare la priorità, è molto sensibile ai guasti, non è adatto con catene molto lunghe, può essere molto lento.
o Polling: tutti i dispositivi che necessitano il controllo del BUS attivano il BUS REQUEST. Nel momento in cui il BUS BUSY si disattiva l’arbitro inizia a scandire tutte i dispositivi mettendo tutti i loro indirizzi, finchè una unità non viene chiamata. A questo punto l’unità attiva il BUS BUSY e ne prende il controllo. Questo metodo richiede 2+log(n) segnali di controllo, è possibile una elevata latenza, è possibile impostare le priorità, sono tollerati i guasti.
o Richieste indipendenti: quando il BUS BUSY è libero le unità fanno richiesta e l’arbitro concede il pilotaggio a quella con priorità maggiore attivando BUS GRANT[i]. Questa tecnica utilizza 2*n+1 segnali di controllo, le priorità possono essere modificate, sono tollerati i guasti.
• Distribuita: ogni dispositivo ha una logica che gestisce le sovrapposizioni
o BUS SCSI: questo BUS ha al suo interno 8 linee con funzione sia di arbitraggio, sia di trasmissione. Nel momento in cui BSY diventa attiva tutti i dispositivi che vogliono prendere il Ruolo di BUS Master alzano la linea BSY[i]. A seconda della priorità viene mandato il segnale di OK a uno solo mentre gli altri aspettano il turno successivo.
Per le immagini Ringraziamo ©estan
| < Prec. | Succ. > |
|---|






