Un bus di computer è un dispositivo di trasmissione dati condiviso tra diversi componenti di un sistema digitale. Il termine deriva dal latino omnibus (a tutti); questo è il significato, di un uso più antico, del termine bus in elettronica . Il bus del computer è l'unione delle parti tangibili e immateriali che consente la trasmissione dei dati tra i componenti partecipanti.
Si distingue generalmente un bus da un lato da un collegamento punto-punto , che riguarda solo due componenti che ne hanno l'esclusivo utilizzo, e dall'altro, da una rete , che coinvolge tra loro partecipanti indipendenti, cioè per dire, in grado di operare in modo autonomo, e che comprende più canali che consentono comunicazioni simultanee.
Un bus è un sistema per il trasferimento di dati tra più unità di elaborazione dati funzionali tramite un percorso di trasmissione comune, in cui i componenti non prendono parte alla trasmissione di dati tra gli altri partecipanti.
Questa definizione implica che i dati debbano essere accompagnati da un'identificazione del componente a cui sono destinati, che viene chiamato per metafora l' indirizzo di destinazione, e da un comando indicante il tipo di trasferimento, in particolare per indicare se questo componente deve ricevere il dati o trasmetterli. Possiamo quindi suddividere il bus in tre sottoinsiemi logici:
Questi tre gruppi sono comunemente chiamati bus (bus indirizzi, bus dati, bus di controllo). Fisicamente possono essere bus nel senso elettronico del termine, cioè essere trasportati da conduttori indipendenti, oppure essere prodotti in altro modo, ad esempio mediante multiplazione a divisione di tempo su un singolo conduttore; un bus del computer li combina in un unico dispositivo per trasferire i dati tra più componenti.
Oltre all'aspetto fisico che consente la trasmissione delle informazioni, un bus del computer è costituito da circuiti di interfaccia e dal protocollo che definisce il modo in cui i segnali devono comportarsi per effettuare questo trasferimento. Le caratteristiche dell'apparecchiatura condizionano in parte il tipo di comunicazione e talvolta il protocollo può dettare il tipo di apparecchiatura.
Il bit rate massimo , espresso in bit al secondo, descrive la capacità del bus del computer di trasferire le informazioni più o meno rapidamente.
Quando sono coinvolti solo due componenti, il problema dell'indirizzo non si pone. Stiamo parlando più di collegamenti punto a punto. Un sistema di trasferimento dati fornito per diversi componenti può eseguire il trasferimento, ma l'elaborazione non necessaria delle informazioni sull'indirizzo pesa sulle sue prestazioni.
Quando il dispositivo di comunicazione comprende più di un canale di trasmissione, consentendo più comunicazioni simultanee, la nozione di rete di computer è più appropriata.
I tre approcci, collegamento punto-punto, bus di computer, rete di computer, condividono la stessa funzione di comunicazione, con crescente complessità. Corrispondono a ottimizzazioni specifiche in ciascuna delle loro aree.
I bus dei computer possono essere costruiti con diverse varianti.
Capacità di controllare l'autobus La designazione dei componenti coinvolti e la direzione dei trasferimenti è spesso privilegio di uno dei componenti, denominato master ( Gustavson 1984 ). Nel caso in cui più componenti possano controllare il bus (bus multi-master), questo deve includere un arbitrato tra le richieste. Un componente chiamato “bus arbitro” quindi designa quale altro componente è autorizzato a prenderne il controllo, mediante diversi algoritmi: round-robin , in cui la scelta del componente è periodica, o anche secondo una priorità definita dal componente che effettua la richiesta. Interrogazioni Il protocollo più semplice include solo richieste di lettura e scrittura. Il componente indicato dall'indirizzo deve o copiare i dati presentati dal bus o comunicarne i dati. Alcuni bus includono funzioni di controllo che consentono trasferimenti più veloci.Un bus software è un software di interfaccia che consente a una stazione di accedere ai dati di altri componenti con la stessa facilità con cui sono collegati ad esso da un bus. Questo software scarica i programmi per la selezione dei canali e dei protocolli di comunicazione. Dal punto di vista del programma chiamante, c'è un solo autobus. Dal punto di vista dell'analisi dei sistemi, tutti i canali di comunicazione più i bus software che forniscono l'interfaccia formano il bus del computer.
L'implementazione di un bus può seguire diverse topologie a seconda dell'uso che se ne fa e della strategia di ottimizzazione: prestazioni, quantità di risorse impiegate, consumi, ecc. La topologia influenza questi fattori senza influire sui componenti collegati. Questi generalmente utilizzano un protocollo generico e gli adattatori tra il componente e le risorse di comunicazione consentono la traduzione delle richieste in trasferimenti effettivi. Quindi alcune definizioni di bus, come l'AXI, non danno alcun vincolo alla topologia. Indicano solo il protocollo che i componenti devono utilizzare per accedere al bus, lasciando l'implementazione delle linee di comunicazione alla discrezione dell'architetto.
Nel architettura di un sistema di computer , autobus trasmettono dati tra i componenti. Le caratteristiche di questi componenti determinano quelle del bus. È molto diverso trasmettere byte milioni di volte al secondo tra milioni o miliardi di componenti molto vicini tra loro, come è il caso tra il microprocessore e la memoria di un personal computer, pacchetti di migliaia di byte in pochi millesimi di a secondo tra poche decine di componenti a pochi metri di distanza, come nel caso di un bus USB , e codici di poche decine di bit poche decine di volte al secondo, tra componenti dispersi in un sito industriale, come in un bus di campo .
Un bus può utilizzare diversi mezzi di comunicazione: fili o cavi per collegare le periferiche alla scheda madre di un computer (ad esempio i bus SCSI o USB), circuiti stampati sulla stessa scheda o su un backplane (ad esempio nel caso di un PCI Express bus ), instradamento logico in un FPGA (ad esempio un bus AXI ), fibra ottica , ecc.
Circuiti di interfaccia, compresa la conversione da parallelo a seriale e viceversa, memoria buffer e gestori di comunicazione, nonché distributori e nodi di comunicazione come hub USB fanno parte del bus del computer.
La struttura fisica del bus può tradurre la rappresentazione logica in tre sottosistemi fisici, con fasci di conduttori separati per la trasmissione di indirizzi, dati e segnali di controllo, associati a un albero di clock per la sincronizzazione. Un bus può anche trasmettere questi diversi segnali uno dopo l'altro attraverso un singolo canale di una o più coppie di conduttori come nel caso dell'USB.
Quando il dispositivo è un bus nel senso elettronico del termine, vale a dire che tutti i componenti partecipanti sono collegati agli stessi conduttori elettrici, per consentire a un componente, che l'indirizzo e le linee di controllo o comandi designano tra i vari, di riparare lo stato delle linee dati con transizioni rapide, sia verso l'alto che verso il basso, i componenti partecipanti utilizzano uscite a 3 stati o a collettore aperto . La frequenza di comunicazione massima limita la lunghezza di questo tipo di bus. Quando la lunghezza del conduttore supera un quarto d'onda della frequenza massima nel conduttore, i fenomeni di riflessioni sulle rotture di impedenza portano a preferire linee di trasmissione con ripetitore ad ogni nodo (come nell'USB).
I canali di comunicazione elettronica possono essere asimmetrici, con ritorno di corrente attraverso la massa, o simmetrici, con due conduttori di uguale impedenza a terra. La differenza di potenziale, positiva o negativa, tra i due conduttori costituisce il segnale. I canali simmetrici, in particolare sui doppini intrecciati, sono meno sensibili ai disturbi, che agiscono più o meno equamente sui due conduttori, e non ne influenzano la differenza.
In generale, i sistemi distinguono due segnali corrispondenti uno a 1 e l'altro a 0. Questi segnali possono essere, in un breve intervallo di tempo determinato dal segnale di clock, livelli elettrici, transizioni tra livelli oppure una transizione o una manutenzione. L' elemento segnale della trasmissione è un bit . Tuttavia, i sistemi possono trasmettere distinguendo più livelli. In questo caso, ogni n- livello digitale elemento contiene bit. Quando hai bisogno di ottenere il massimo da linee di scarsa qualità, usi il modulatore-demodulatore ( modem ) . Il bit rate può quindi essere espresso anche in baud , cioè nel numero di segnali scambiati al secondo.
Il protocollo governa il modo in cui gli scambi sul bus vengono effettuati a livello logico. Ad esempio, una prima fase può consistere nella richiesta di accesso al bus, seguita da una seconda fase consistente nell'indicare l'indirizzo al quale si desidera eseguire un'operazione di lettura o scrittura, quindi infine nel trasferimento di questi dati. Il protocollo specifica l'ordine in cui i valori devono essere posizionati sui diversi segnali del bus. Generalmente può essere espresso da un cronogramma che rappresenta i valori da dare ai diversi segnali per eseguire un'operazione.
In alcune tipologie di bus viene definito solo il protocollo e non la natura del mezzo trasmissivo, lasciata all'apprezzamento del progettista del bus. Ad esempio, il protocollo AXI definisce le interfacce del bus senza decidere sulla topologia di quest'ultimo, che può assumere diverse forme a seconda delle esigenze del sistema. Pertanto, se la necessità in termini di numero di comunicazioni simultanee è bassa, sceglieremo una topologia di tipo bus per salvare i fili, mentre se alcune coppie di componenti comunicano frequentemente tra loro contemporaneamente, sceglieremo una topologia a barra trasversale per evitare le linee di attesa . Questo tipo di bus è particolarmente indicato per FPGA , per i quali la topologia può essere modificata con un click, l'implementazione è lasciata al software che esegue la sintesi del circuito.
Si possono distinguere due principali categorie di bus a seconda del modo in cui i dati vengono trasmessi: tutti i bit contemporaneamente, oppure uno per uno.
Un bus parallelo trasmette simultaneamente gli elementi digitali di un segnale digitale su un numero appropriato di percorsi paralleli tra i componenti partecipanti.
AttrezzatureDal punto di vista hardware , questo tipo di bus può essere scomposto in tre sottogruppi:
Il bus viene utilizzato per trasmettere un codice binario con un numero di bit pari alla dimensione del bus. Ad esempio, per un bus a quattro bit, possono essere trasmessi 16 codici diversi (2 4 = 16).
Il trasmettitore imposta contemporaneamente tutti i bit del bus. Al momento giusto il componente lettore copierà tutti i bit contemporaneamente. Questo momento adeguato può essere determinato da uno dei segnali di controllo che cambierà valore per segnalare al dispositivo lettore che è ora di leggere i dati sul bus.
Caso d'usoUn bus seriale trasmette in successione gli elementi digitali di un segnale digitale attraverso un unico percorso tra due punti.
AttrezzatureUn bus seriale può includere due linee distinte che consentono a questi bus di essere bidirezionali e di consentire la trasmissione di informazioni in entrambe le direzioni contemporaneamente, più linee ausiliarie per eventuali segnali di controllo.
OperazioneIl bus seriale che trasmette i dati elemento per elemento, il trasmettitore deve serializzare le informazioni per la sua trasmissione. Il ricevitore dovrà eseguire l'operazione inversa.
Trasmissione di una parola tramite collegamento seriale:Il componente mittente deve trasmettere una parola a 32 bit. Il protocollo bus specifica in quale ordine inserirli, iniziando dal bit più significativo (MSB) o dall'altra estremità (LSB). Trasforma così la parola in una sequenza su 32 cicli di sincronizzazione del bus. Il componente ricevente ricostruisce la parola a 32 bit dai bit ricevuti.
Il cavo del bus seriale ha molti meno conduttori di un bus parallelo, il che semplifica il cablaggio e ostacola meno il flusso d'aria attraverso i dispositivi IT grazie alla riduzione delle dimensioni del cavo e alla flessibilità. Un bus seriale impiega necessariamente componenti elettronici per la serializzazione .
Alcuni bus seriali, come FireWire , utilizzano il multiplexing a divisione di tempo per trasmettere le varie informazioni (indirizzo, controllo e dati). Possono anche essere caratterizzati come giunzione multiplex .
Caso d'usoLa natura degli autobus utilizzati è diversa a seconda del tipo di impianto, ognuno con le proprie esigenze e vincoli.
I bus situati all'interno dello stesso computer collegano le sue diverse parti funzionali.
Il bit rate di un bus è il prodotto della frequenza massima alla quale può avvenire un trasferimento e del numero di bit di informazione che può trasmettere simultaneamente.
Esempio:Un bus parallelo a 32 bit il cui segnale ha una frequenza di 33 1 ⁄ 3 megahertz potrebbe trasmettere fino a:
Questo calcolo è valido per i bus paralleli. I bus seriali devono trasmettere, oltre ai dati, segnali che indicano l'inizio di una sequenza e molto spesso informazioni di indirizzo e controllo. Se sono asincroni, è necessario aggiungere ulteriori informazioni sulla sincronizzazione. Possono inoltre includere informazioni ridondanti, checksum o controllo di ridondanza ciclico , per abilitare il rilevamento degli errori. Sono caratterizzati solo dal bit rate.
Autobus interniI bus interni, noti anche come bus dati, bus di memoria, bus di sistema o bus lato anteriore , collegano i principali componenti interni di un computer, come processore e memoria, sulla scheda madre . Anche il bus dati interno è considerato un bus locale, poiché è destinato alla connessione a dispositivi locali. Questo bus è generalmente abbastanza veloce ed è indipendente dal resto delle operazioni IT.
Di solito ci sono due bus interni collegati all'esterno di un microprocessore di personal computer:
Il Northbridge che lo collega a periferiche veloci come memoria e schede grafiche PCI; Il southbridge che lo collega a tutte le periferiche interne più lente e al bus PCI ; Il bus PCI utilizzato per effettuare la connessione tra il southbridge e tutti i dispositivi esterni ( dischi rigidi , stampante, ecc .). Dal 2004, il bus PCI Express è stato utilizzato per periferiche veloci ( schede grafiche e talvolta SSD ) e collegato al “north bridge” mentre il bus PCI è ora collegato al “south bridge”; il bus InfiniBand bus ad alta velocità utilizzabile sia internamente che esternamente; dal 2003 La connessione SATA semplifica la connessione di dischi rigidi / SSD e unità CD / DVD interne; Bus esternoDispositivi elettronici che collegano il computer ( scheda madre ) a vari dispositivi esterni, come stampante , disco rigido , scanner , ecc. costituiscono i “bus esterni” o “bus di espansione”. Quelli sono :
storicamente HPIB , SCSI ; dal 1979 USB , Firewire . dal 2007 eSATA che consente la connessione esterna di dispositivi SATA.I sistemi embedded richiedono bus con pochi conduttori per minimizzare gli ingressi / uscite necessari per la loro definizione. È in questo contesto che sono emersi diversi standard, basati sulla comunicazione seriale con un minimo di segnali necessari.
La Serial Peripheral Interface (SPI) fornisce un bus a quattro fili: un cavo di clock per la temporizzazione, due cavi di dati per entrambe le direzioni di lettura e scrittura e un cavo di selezione del dispositivo che funge da indirizzo. Ogni periferica ha il proprio cavo di selezione, il master deve avere tanti cavi di selezione quante sono le periferiche.
l' I2C è un bus che consente la trasmissione dei dati utilizzando solo due fili: uno per l'orologio e uno per i dati. L'indirizzo viene trasmesso dallo stesso filo dei dati.
Questo tipo di bus è molto facile da implementare su ingressi / uscite generali ( General Purpose Input / Output , GPIO), il che ha permesso la loro generalizzazione su sistemi di tipo Arduino , accessibili a tutti per il loro basso costo e utilizzati per molti controlli e comandi applicazioni, ad esempio nella domotica. Molti sensori sono interfacciati in particolare utilizzando uno di questi standard.
Lo sviluppo di sistemi su chip ( sistema su chip o SoC in inglese) ha portato alla comparsa di nuovi tipi di bus. Questi sistemi riuniscono vari computer e periferiche, che devono essere interconnessi e comunicare, all'interno di un singolo chip. La natura integrata e fisicamente molto vicina di questi sistemi elimina alcune limitazioni (legate in particolare alla lunghezza dei conduttori) e, in alcuni casi, ne sviluppa di nuove (come la superficie disponibile per i componenti dell'interfaccia).
Questi bus non hanno bisogno di essere interfacciati all'esterno della scheda, diventa possibile creare un bus personalizzato per le esigenze del sistema. Tuttavia, con la nozione di riutilizzo dei componenti, la standardizzazione di questi autobus rimane rilevante. Essendo infatti lo sviluppo di componenti un compito complesso e costoso, si tratta di poter riutilizzare in modi differenti la struttura di un componente realizzata in modo da contenere i costi relativi al loro sviluppo. Si parla di proprietà intellettuale (en) , o IP, per questi componenti riutilizzabili, a volte distribuiti su licenza (commerciale o gratuita). Questi componenti hanno quindi generalmente un'interfaccia standardizzata in grado di interfacciarsi con una particolare tipologia di bus, in modo da non dover riqualificare un'interfaccia per ogni utilizzo del componente.
In questo contesto, la definizione di bus standard per SoC è diventata centrale per consentirne il riutilizzo. Standard diversi sono emersi come Advanced Microcontroller Bus Architecture sviluppata da ARM e che specifica più bus destinati a diverse applicazioni, Avalon , sviluppato da Altera , o la libera Wishbone bus . Questi tipi di bus standardizzano le interfacce, consentendo di facilitare il riutilizzo di IP in un SoC, lasciando all'architetto del sistema un certo margine di manovra per quanto riguarda l'implementazione della parte trasmissiva. Pertanto, l'architetto può in alcuni casi scegliere la topologia del bus, scegliere il tipo di arbitrato per bus multi-master, ecc.