Estratto del documento

appuntiDiIngegneria

Bus di Comunicazione

Sommario

1.1. Bus di Comunicazione .......................................................................................................................2

1.1.1. Arbitraggio di un Bus .....................................................................................................................4

1.1.2. Bus Sincroni e Asincroni.................................................................................................................5

1.1.3. Standard Bus PCI ...........................................................................................................................7

1.1.4. Comunicazione Seriale ................................................................................................................ 11

1.1.5. Dispositivo USART ....................................................................................................................... 15

1.1.6. Protocollo USB ............................................................................................................................ 20

1

1.1. Bus di Comunicazione

Il Bus di Comunicazione è un insieme di linee conduttrici a cui sono contemporaneamente

connesse tutte le unità del calcolatore sulla Scheda Madre e che consente il trasferimento di dati

tra tali unità. I principali moduli da connettere sono 3:

Il Processore (CPU) ad esempio può essere visto come un blocco che in ingresso prende istruzioni,

dati, ed interruzioni dalla Periferiche, in output esso ha i dati elaborati, bits dedicati

all’indirizzamento di Memoria e Periferiche, e segnali di controllo per abilitare ad esempio

scritture/letture dal/verso la memoria o le Periferiche oppure per effettuare l’handshake per

richiedere il Bus al Bus Controller. La Memoria invece può essere vista come un blocco che in

ingresso ha i segnali di controllo per abilitare la lettura/scrittura, indirizzi per individuare specifiche

locazioni in essa ed i dati da scrivere/leggere in quelle locazioni. Infine le Periferiche prendono dati

in input, abilitazioni di lettura o scrittura da parte del Processore, ed indirizzi per accedere in

Memoria e svolgere compiti per conto del Processore; in output esse dovranno fornire dei dati e

dei segnali di interruzione per notificare il completamento del loro lavoro al Processore. Per molti

computer esso rappresenta il collo di bottiglia. Dal punto di vista Hardware chi vuole produrre una

Scheda Madre deve utilizzare un certo standard per definire le connessioni fra i vari moduli, il

quale definisce:

 Caratteristiche Meccaniche: quante linee deve avere il bus e come deve essere fatta la

socket (lo zoccolo che accoglie il Processore).

 Caratteristiche Elettriche: tensioni e correnti di funzionamento, tempi di discesa e salita

dei clock.

 Caratteristiche Logico-Funzionali: quante linee dedicare ai dati, agli indirizzi oppure al

controllo, quali di queste sono sincrone oppure asincrone.

Il Bus può dedicare le sue linee a diverse funzionalità, per cui anche se fisicamente il Bus è sempre

uno solo, logicamente si distinguono tre tipi di Bus:

 Bus dei Dati: usato per trasferire dati fra Memoria/CPU/Periferiche.

 Bus degli Indirizzi: usato per trasferire i bit di indirizzamento per accedere a specifiche

locazioni di Memoria. 2

 Bus di Controllo: usato per trasferire i segnali di controllo che l’ALU impartisce ai vari

componenti oppure tutti i segnali impiegati per l’handshake per richiedere il possesso del

Bus, le interruzioni, oppure i segnali di clock.

La situazione “logica” che si ha quindi è la seguente:

Solitamente ci sono diversi Bus ed il traffico fra essi viene separato da degli Switchs (o Bridges) in

maniera tale da definire diverse “velocità di trasferimento“. Se non ci fosse questa separazione

tutti i Bus trasferirebbero bit alla velocità delle Periferiche. Vengono mostrate 2 possibili

organizzazioni dei Bus sulla Scheda Madre:

Da un Local Bus estremamente veloce il Processore legge/scrive i dati sempre direttamente nelle

caches, ma in caso di cache miss mediante un System Bus esso può effettuare anche una ricerca in

Memoria. Tutte le Periferiche per comunicare fra loro utilizzano dei Bus di Espansione, gli

standard più comuni sono ISA e AGP. Con un Bridge è possibile anche collegare il System Bus con

un High Speed Bus sul quale vengono collegate le Periferiche più veloci come ad esempio le Reti

LAN, le schede grafiche o le schede video, e mediante le Expansion Bus interfaces è possibile

collegare questo Bus ad alta velocità con i Bus di Espansione. Gli standard più comuni per questi

Bus ad alta velocità sono PCI e PCI Express. Il Sistema di Bus presente sulla Scheda Madre può

essere ben schematizzato anche con la seguente figura: 3

Le linee del Bus possono essere di 2 tipi:

 Dedicate: le linee degli indirizzi e dei dati sono separate per ogni

componente. Questa soluzione consente di effettuare

contemporaneamente più operazioni di trasferimento dati, ma è

molto costosa perché per collegare N moduli servono N(N-1) linee.

 Condivise: consente di ridurre i costi e di ottenere una struttura modulare scalabile, a

scapito delle prestazioni. Questa soluzione è comunque la più

utilizzata nei moderni sistemi di elaborazione. Per fare ciò le

linee condivise sono multiplexate nel tempo, cioè per alcuni

istanti di tempo esse possono essere usate per i dati e per altri istanti per gli indirizzi.

La larghezza è uno dei parametri più importanti per la progettazione di un BUS. Sembrerebbe

ovvio progettare BUS molto ampi per aumentare lo spazio d’indirizzamento e le prestazioni.

D’altro canto questi richiedono molti collegamenti, richiedono più spazio sulla scheda madre e

connettori più grandi.

1.1.1. Arbitraggio di un Bus

Il Bus può essere utilizzato sia dai dispositivi che si comportano da Master, cioè quelli attivi che

indirizzano altri dispositivi ed avviano trasferimenti (Processore e DMA) sia dai dispositivi che si

comportano da Slave, cioè quelli passivi che attendono un trasferimento e devono essere

indirizzate (Periferiche, Memoria, DMA in alcuni casi). Il ruolo del Master non spetta solo al

Processore ma anche al DMA, per cui essendoci più Master collegati al Bus è necessario utilizzare

un Arbitro (Bus Controller) che decide chi può utilizzare il Bus. Ci sono 3 approcci principali per

realizzare un arbitraggio: 4

Approccio Distribuito (Decentralizzato) Daisy Chain:

non c’è un vero e proprio arbitro, così ogni Master

utilizza una linea BCLK per chiedere agli altri Master

se il Bus è libero facendo una Bus Request, se si allora

esso attiva il segnale BUSY per notificare a tutti che

esso è diventato il nuovo Bus Master. Se uno o più

Master richiedono contemporaneamente il Bus, solo

il Master a priorità più alta diventa il Bus Master,

ottiene il Grant e può attivare il segnale BUSY. Si

utilizza un sistema a priorità Fisse.

Approccio Centralizzato Parallelo: stavolta l’arbitro è

un dispositivo Hardware che riceve una Bus Request

da ogni Master e risponde con il segnale di Bus Grant

attivo soltanto al Master a cui decide di assegnare il

possesso del Bus. Ogni Master deve avere delle linee

Request e Grant dedicate.

Approccio Centralizzato Daisy Chain: c’è una sola

linea per le request condivisa da tutti, ed i dispositivi

sono disposti secondo un ordine a priorità fissa più o

meno vicini all’arbitro. Se uno o più Master

effettuano una Request all’Arbitro, quest’ultimo invia

il Grant al Master più vicino, il quale verifica se ha

fatto lui la richiesta, se no propaga il Grant al Master

immediatamente successivo, altrimenti blocca la

propagazione del Grant e prende possesso del Bus.

Sarà lo standard a definire il tipo di approccio utilizzato e la logica di funzionamento di un arbitro

mediante un certo Protocollo di Arbitraggio.

1.1.2. Bus Sincroni e Asincroni

Adesso viene posta l’attenzione sui Protocolli di Comunicazione del Bus per coordinare i

trasferimenti. Questi possono essere sia sincroni che asincroni. Un Bus Sincrono ha una delle linee

pilotata da un segnale di Clock che stabilisce la cadenza di tutte le operazioni, ad esempio tutte le

operazioni potrebbero prendere come riferimento il fronte di salita del clock, viene mostrato un

esempio di Protocollo Sincrono: 5

 Fase A: il Master (Processore) pone sull’address line il valore dell’indirizzo della Periferica

(Slave).

 Fase B: Se l’indirizzo è valido viene alzata la linea address enable.

 Fase C: Al prossimo fronte di salita del clock la Periferica saprà che il Processore vuole

comunicare con lei e si prepara a campionare ciò che il Processore le manderà. Il

Processore saprà che la Periferica ha letto (perché è sincrona) perciò potrà riabbassare

l’address enable in quanto è sicuro che la periferica è pronta a leggere.

 Fase D: Se il Processore vuole leggere dalla Periferica alza la linea read ed è sicuro che la

Periferica al prossimo fronte di salita (Fase E) avrà messo i dati sul Bus Dati, così che il

Processore potrà iniziare a prelevarli.

 Fase F: Siccome il Processore è certo che dopo la Fase E la periferica abbia capito che il

Processore vuole leggere, prima del prossimo fronte di salita del clock il segnale read può

essere abbassato.

 Fase G: Se il Processore vuole scrivere dovrà pria preparare i dati (Fase H), solo dopo che li

ha preparati esso alzerà la linea write per dire alla Periferica che essa dovrà scrivere quei

dati. Solo nella Fase I il Processore sarà sicuro che la periferica abbia capito che deve

scrivere questi dati, perciò il processore può abbassare la linea write.

 Fase J: Terminata l’operazione di scrittura o lettura il Processore può rimuovere l’indirizzo

del valore da leggere/scrivere e del dato. 6

Invece Un Bus Asincrono non è dotato di un clock principale ma sono le parti che comunicano su

di esso per doversi esplicitamente sincronizzare. Quindi occorrono dei segnali di handshake fra le

parti per gestire la sincronizzazione. Viene mostrato un esempio di Protocollo Asincrono:

̅̅̅̅̅̅̅

Per leggere il Processore abbassa il segnale per dire che vuole leggere, poi deve aspettare

che la Periferica metta i dati sul Bus e mandi un segnale specifico per dire che i dati sono pronti, e

ciò lo fa abbassando la linea Ack. Il Processore legge i dati dalla Periferica, e quando ha finito deve

rialzare l’Ack per far capire alla Periferica che esso ha finito di leggere i dati e che quindi la

Periferica può togliere il dato dal Bus. Invece per scrivere è il contrario: il Processore mette il dato

̅̅̅̅̅̅̅

sul Bus e abbassa il segnale per dire alla Periferica di scrivere quel dato, dopodiché abbassa

l’Ack. La Periferica svolge il suo compito e quando finisce rialza la linea di Ack per dire al

Processore che ha finito e che quindi esso può rimuovere il dato dal Bus.

1.1.3. Standard Bus PCI

Nel 1990 il bus ISA aveva una larghezza di banda non sufficiente per molte periferiche e

applicazioni: ad esempio le applicazioni multimediali che richiedono la riproduzione di video e

audio in tempo reale, o per la grafica 3D dei videogiochi. Infatti il bus ISA funziona a una velocità

massima di 8.33 MHz ed è in grado di trasferire 2 byte per clock (mediante 16 linee dati); pertanto

la larghezza di banda massima è di 16,7 MB/sec. Il bus PCI (Peripheral Component Interconnect

bus) venne introdotto da Intel nel 1990 per far fronte alla sempre crescente necessità di ampiezza

di banda. Il bus PCI originale è un Bus sincrono con 32 linee dati e opera a 33 MHz (tempo di ciclo

30 ns) e ciò consente una larghezza di banda di 133 MB/sec (perché con 32 linee ad ogni colpo di

clock trasferisce 4 byte). Le versioni successive di bus PCI (2.0, 2.1, 2.2, etc) introdotte nel seguito

hanno ulteriormente ampliato la banda massima fino a 528 MB/sec e portando a 64 le linee dati e

a 66 MHz la frequenza di funzionamento. Quindi di PCI esiste una versione “lunga” a 64 bit ed una

versione “corta” a 32 bit, ed esse sono al giorno d’oggi utilizzate per collegare le Periferiche veloci

7

(DMA, Scheda Video, Scheda Audio, etc) sulla Scheda Madre. Si raggruppano le linee del PCI

secondo la logica di funzionamento, distinguendo: linee di sistema (clock e reset), linee dati e

indirizzi comuni multiplexate nel tempo (pertanto indirizzi e dati devono occupare fisicamente le

linee in istanti diversi), linee per le interruzioni, per l’arbitraggio e per segnalare eventuali errori. Il

PCI è un Bus sincrono a 32 o 64 bit che utilizza una trasmissione parallela, ma la versione PCI

Express è passata ad una trasmissione seriale; PCI utilizza un arbitraggio centralizzato. Scendendo

un po’ più nei dettagli, la comunicazione PCI avviene sempre fra un Master chiamato Initiator

(perché è sempre colui che inizia la trasmissione) ed uno Slave detto Target; il Master deve

richiedere all’arbitro il possesso del Bus e, appena lo ottiene, può indirizzare lo Slave avviando il

trasferimento in lettura o in scrittura. Quindi c’è sempre:

 un’unica fase di indirizzamento;

 una o più fasi di trasferimento.

Si mostra a titolo di esempio il Protocollo di Lettura del PCI:

 Fase a: c’è un’unica linea Frame condivisa da tutti i componenti collegati al Bus, se un

Master la abbassa vuol dire che esso ha occupato il B

Anteprima
Vedrai una selezione di 7 pagine su 27
Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 1 Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 2
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 6
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 11
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 16
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 21
Anteprima di 7 pagg. su 27.
Scarica il documento per vederlo tutto.
Bus di Comunicazione nei Calcolatori (Parte 5 della Raccolta) Pag. 26
1 su 27
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher appuntiDiIngegneria94 di informazioni apprese con la frequenza delle lezioni di Architettura dei calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Venticinque Salvatore.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community