IL BUS

Principali linee di ingresso e di uscita dei vari moduli

Nell’architettura di Von Neuman i moduli basilari sono il processore, o CPU, la memoria e i dispositivi di I/O, ognuno dei quali presenta delle linee di ingresso e delle linee di uscita sulle quali può passare o un solo bit, nel caso in cui si consideri un segnale di controllo, oppure più bit se si ha un’informazione di tipo diverso. Analizziamo singolarmente ognuno di questi moduli.

La CPU riceve dall’esterno linee sui viaggiano istruzioni, linee dati e segnali di interruzione e manda verso l’esterno linee dati, dirette alla memoria oppure a delle periferiche, segnali di controllo, per esempio un segnale per l’attivazione della lettura da memoria, e linee indirizzo, su cui si muovono, per esempio, gli indirizzi per prelevare il contenuto di alcune locazioni dalla memoria. Tutte le linee che entrano ed escono dalla CPU, vista come un blocco unitario, sono linee su cui viaggiano più bit. Non rientrano nello studio particolare che stiamo facendo ora i segnali interni alla CPU relativi all’unità di controllo.

Per quanto riguarda la memoria, ricordiamo che quest’ultima è costituita da n parole i cui indirizzi vanno da 0 ad n-1. Le linee di ingresso alla memoria sono: le linee di controllo per la lettura, le linee di controllo per la scrittura, le linee indirizzo e le linee dati, mentre per quanto riguarda le linee in uscita si hanno solo linee dati. Fra quelle indicate, soltanto le due prime linee, ossia quelle di controllo, sono ad un solo bit, bit che rappresenta l’autorizzazione data o meno a lettere oppure scrivere da/sulla memoria.

Infine si hanno i moduli di I/O, questo tipo di moduli sono un’interfaccia hardware o software che permettono di gestire le varie periferiche comprese nel sistema e di connetterle ad esso, proprio per raggiungere questo scopo un modulo di I/O presenta un certo numero di porte a cui collegare le precedenti periferiche. Le linee di ingresso ad un modulo di I/O sono: linee di controllo per la lettura, linee di controllo per la scrittura, di eventuali dati locali al modulo, linee indirizzo, attraverso le quali è possibile specificare la porta relativa alla periferica voluta, linee per dati interni, ossia dati che provengono dalla CPU, ed infine linee di dati esterni, che provengono da una delle periferiche. Per quanto riguarda le linee di uscita, queste sono :linee dati per l’esterno, dirette alle periferiche, linee dati per l’interno, dirette alla CPU, e linee per segnali di interruzione. Tra le linee relative ai moduli di I/O soltanto quelle relative al controllo per la scrittura e la lettura sono linee su cui viaggia un solo bit, su tutte le altre viaggiano più bit insieme.

I vari moduli che sono stati elencati sono collegati tra loro all’interno di un’architettura in modo tale che le linee di uscita di un modulo rappresentino le linee di ingresso di un altro e quindi sia possibile la comunicazione tra gli unti e gli altri, in particolare si osserva come ci sia passaggio di informazioni:

  • dalla memoria al processore,
  • dal processore alla memoria,
  • dal modulo o dai moduli di I/O al processore,
  • dal processore al modulo, oppure ai moduli, di I/O,
  • ed infine sono possibili delle comunicazioni dirette tra la memoria e i dispositivi di I/O, senza che si debba passare per il processore.
Quest’ultimo tipo di trasferimento di informazioni risulta essere più efficiente delle precedenti perché permette di non impegnare ulteriormente il processore, quindi evita di congestionarlo o di bloccarlo.

Bus rispetto alle funzioni svolte

Il bus è il mezzo attraverso cui avviene la comunicazione tra il processore, la memoria e gli altri dispositivi dell’architettura. Il bus si presenta come un’insieme di linee su cui le informazioni si muovono in parallelo, in particolare su ogni linea viaggia un singolo bit e nel loro insieme questi bit si muovono opportunamente sincronizzati. Ci sono due tipologie di bus, il tipo dedicato ed il tipo generico.

Nel tipo dedicato le varie linee sono suddivise in sottogruppi ognuno avente un proprio scopo, in particolare si avrà un insieme di linee dedicato ai dati, un insieme dedicato agli indirizzi ed un insieme dedicato ai segnali di controllo; nel tipo generico, invece, non si ha questa differenziazione per cui ogni tipo di informazione sfrutta tutte le linee di cui è costituito il bus. In particolare si osserva come non essendoci una specifica organizzazione interna al bus generico, è necessario aggiungere alle normali linee presenti delle altre linee di controllo che indichino che tipo di informazione sta viaggiando sul bus e chi ve l’ha posta.

Ritornando al bus dedicato, abbiamo detto che si possono distinguere:

  • linee dati o bus dati,
  • linee indirizzo o bus indirizzo,
  • linee di controllo. All’interno del bus ci possono essere 8, 16 o 32 linee fisiche dedicate al flusso dei dati. Sapendo che la larghezza del bus equivale al numero di linee in esso contenute costituendo, quindi un indicatore delle sue prestazioni osserviamo come la larghezza del bus dati influisce sulle prestazioni del sistema perché premette di valutare la dimensione del dato che può viaggiare in un’unica volta nel bus da cui, per esempio, segue il numero di accessi in memoria che occorre fare per reperire una quantità prefissata di accessi in memoria che occorre fare per reperire una quantità prefissata di informazioni.

Per quanto riguarda il bus indirizzi, le linee che lo costituiscono danno indicazioni sulla dimensione della memoria questo perché se n è il numero di bit necessario per selezionare una certa locazione allora la dimensione della memoria è 2n. Inoltre dall’osservazione del generico indirizzo che si muove sul bus indirizzi è possibile desumere la presenza di una rete di selezione per arrivare alla giusta locazione di memoria o alla giusta porta del modulo di I/O: osservando il generico indirizzo, infatti, si vede che una prima parte della stringa binaria che rappresenta l’indirizzo, in particolare i bit più significativi, indicano uno specifico modulo di memoria oppure un modulo di I/O mentre la parte restante, della stessa stringa, la particolare locazione di memoria che si vuole raggiungere nel modulo di memoria o la particolare porta interna al modulo di I/O.

Le principali linee di controllo sono quelle su cui viaggiano i seguenti segnali: lettura dalla memoria oppure scrittura in memoria, lettura da un modulo di I/O oppure scrittura su di un modulo di I/O (a seconda del tipo di architettura le linee di lettura e le linee di scrittura possono coincidere o meno), in particolare il segnale per la richiesta di una lettura o di una scrittura prevedono un segnale di ritorno detto ACK che indica che le operazioni richieste sono avvenute, e anche il segnale ACK viaggia sulle linee di controllo, si possono poi elencare il segnale con cui un modulo di I/O che ha bisogno di porre delle informazioni sul bus richiede l’autorizzazione per il suo utilizzo, il segnale di risposta al precedente segnale di richiesta che indica la sua accettazione e relativa concessione del bus, il segnale per la richiesta di una interruzione, il segnale di ACK che indica l’accettazione dell’interruzione, il segnale di clock ed infine il segnale di RESET con cui si riportano allo stato iniziale i vari moduli.

Distinguendo fra questi tre tipi di linee si evidenziano le due seguenti cose. Se un modulo vuole inviare dei dati deve, per prima cosa, mandare un segnale sulle linee di controllo con cui chiede di poter usare il bus, successivamente deve attendere la concessione del bus ed infine deve porre i dati sul bus. E’ necessario che il modulo chieda l’autorizzazione ad impadronirsi del bus perché se così non venisse fatto ogni modulo potrebbe mandare informazioni sul contemporaneamente ad altri e questo modo non controllato provocherebbe una sovrapposizione delle informazioni. Se, invece, un modulo vuole dei dati, come prima, deve chiedere l’autorizzazione per l’uso del bus usando le linee di controllo, deve attendere il segnale di accettazione della sua richiesta, deve trasferire nelle linee indirizzo l’indirizzo da cui prelevare i dati ed infine deve aspettare che il modulo destinatario ponga i dati sul bus.

Bus rispetto ai moduli

Ogni modulo, in un calcolatore, è realizzato con delle schede collegate al bus attraverso opportuni connettori detti SLOT, il tutto è collocato in un contenitore detto CHASSIS. Il calcolatore è impostato sulla separazione in moduli, o schede, per avere sia la possibilità successiva di poter ampliare la struttura sia la possibilità di individuare i guasti relativi ad un modulo specifico. Da questo tipo di suddivisione seghe anche una specializzazione del bus che si differenzia in:

  • bus locale,
  • bus di sistema,
  • bus di estensione.
Tra il processore e la memoria centrale non c’è comunicazione diretta perché si vogliono evitare al processore delle attese inutili dovute al reperimento delle informazioni, i dati raggiungono il processore in modo diverso. Il contenuto di un blocco di locazioni di memoria, residenti nella memoria centrale viene trasferito nella memoria cache a seguito di una richiesta del processore, una volta concluso il trasferimento il processore colloquia direttamente con la memoria cache attraverso il bus locale e opera le sue elaborazioni durante le quali, se richiesto, verrà effettuato un nuovo trasferimento di blocchi di informazioni dalla memoria centrale alla memoria cache. La prima e la seconda sono collegate attraverso il bus di sistema. Per quanto riguarda il moduli periferici, questi sono collegati al bus di estensione ed il bus di estensione è collegato al bus di sistema attraverso un’interfaccia al bus di estensione. I moduli periferici possono essere una rete, un sistema SCSI come un video o un cd Rom, un modem oppure un sistema seriale come una stampante oppure uno scanner.

La distinzione del bus nei tre tipi indicati è stata fatta per rendere più efficiente la comunicazione infatti consente trasferimenti più veloci, relativi al processore e alla memoria cache, di no essere rallentati da comunicazioni più lente, tipici del resto dell’architettura.

Metodi di arbritaggio

Un metodo di arbritaggio ha lo scopo di designare un modulo master assegnandogli il potere di cominciare un trasferimento e un modulo slave che fornirà i dati richiesti dal master oppure riceverà i dati sempre dal master, a seconda che sia stata espressa una richiesta di lettura oppure di scrittura.

Si possono distinguere due tipi di metodi di arbritaggio, il metodo centralizzato e il metodo distribuito. Se l’architettura prevede un metodo centralizzato, allora è presente un modulo hardware a cui compete l’assegnazione del bus e la designazione del modulo slave, questo modulo è un dispositivo detto controllore o arbitratore del bus che può far parte o meno del processore e in cui confluiscono le linee di controllo del bus. Su queste linee legge le richieste di utilizzo del bus e fornisce i segnali di accettazione nonché quelli di designazione su di un’ulteriore linea di uscita. Con il metodo distribuito, invece, ogni dispositivo presente nell’architettura dispone dell’opportuna logica, hardware o software, per l’accesso al controllo del bus.

Temporizzazione

Strettamente collegata ai metodi di arbritaggio è la temporizzazione attraverso cui ogni modulo riesce a porre nel momento opportuno le informazioni sul bus. Si ha temporizzazione sincrona oppure temporizzazione asincrona.

Con la temporizzazione sincrona gli eventi sono coordinati rispetto ad un segnale orologio che alternerà un segnale alto ad un o basso mentre con la temporizzazione asincrona manca il segnale orologio ma sono presenti due altri segnali, quello del master e quello dello slave tali per cui il primo rappresenta il motivo di reazione del secondo, e un “evento” innesca il primo e di conseguenza tutto il resto.

Esempio: lettura sincrona.

Supponiamo che gli eventi si verifichino sul fronte di salita dell’onda. Il segnale orologio è rappresentato dal segnale di clock, per cui ogni altro segnale coinvolto nel processo di lettura sincrona rimane alto, quindi attivo, per un intero ciclo di clock. Quando è necessaria una lettura sincrona il processore abilita tre segnali, il segnale di lettura, con cui si fa richiesta di uso del bus, il segnale inizio, con cui si indica l’inizio dell’operazione, ed un segnale indirizzo, attraverso cui si specifica l’indirizzo della locazione da cui si vuole leggere. Questi segnali rimangono attivi per un ciclo di clock e durante questo ciclo vengono riconosciuti da un modulo opportuno il quale, dopo un ciclo di clock di attesa in cui permette ai successivi segnali di stabilizzarsi, pone sul bus i dati richiesti oltre al segnale di avvenuta operazione.

Esempio: lettura asincrona.

In questo caso non è presente un segnale orologio, ma c’è un evento che scatena il processo. In questo caso l’evento è l’azione con cui il processore pone sul bus la richiesta relativa all’utilizzo del bus per poter eseguire una lettura nonché l’indirizzo da cui prelevare l’informazione, a questo punto viene sincronizzato il master con il segnale M_SYN (il master è colui che vuole leggere) e questo provoca la sincronizzazione dello slave con il segnale S_SYN (lo slave è colui che deve fornire i dati) per cui i loro segnali diventano alti. Ogni dispositivo, all’invio del segnale di sincronizzazione, lo legge per capire che deve fare la parte del master e chi dello slave, stabilito chi è lo slave questo porrà i segnali sul bus. Nel momento in cui viene a mancare il segnale del master, perché l’operazione di lettura si è conclusa, il segnale dello slave diventa basso, ciò provoca anche la conclusione del flusso dei dati. A questo punto il segnale indirizzo diviene a sua volta basso e questo provoca la terminazione dell’ultimo segnale attivo, ossia quello di lettura.

Parametri di valutazione per la progettazione

Riepilogando quanto detto finora i parametri rispetto al quale valutare contemporaneamente il bus sono:

  • tipo dedicato o tipo generico, nel caso sia di tipo dedicato allora occorre indicare se lo è rispetto alla funzione oppure rispetto ai dispositivi;

  • tipo di trasferimenti, ossia se sono possibili solo le operazioni base, come le operazioni di semplice lettura e scrittura, oppure anche operazioni più complesse, come una lettura che può bloccare una scrittura oppure la realizzazione di un trasferimento di un blocco di informazioni piuttosto che di una sola;

  • temporizzazione sincrona oppure temporizzazione asincrona;

  • metodi di arbritaggio centralizzato o distribuito;

  • larghezza del bus.

Tutti questi fattori devono essere valutati simultaneamente per cui la larghezza del bus può essere o meno considerata soddisfacente solo dopo che si è specificato se il bus è generico oppure dedicato rispetto alle funzioni da svolgere. Si può valutare più o meno favorevolmente la distinzione fra i vari tipi di bus nel bus dedicato rispetto ai moduli considerando il fatto che le informazioni scambiate tra moduli periferici possono avere un formato diverso.

-- AnnalisaMassini - 09 May 2002

Topic attachments
I Attachment History Action Size Date Who CommentSorted ascending
Microsoft Word filedoc Ilbus.doc r1 manage 72.0 K 2002-05-09 - 10:12 SabrinaDellUomo appunti sul bus
Topic revision: r1 - 2002-05-09 - AnnalisaMassini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback