Bus (informatica)

Da Wikipedia, l'enciclopedia libera.
Ingrandimento di una mainboard con l'indicazione di tre tipi di bus

In elettronica e informatica, il bus è un canale di comunicazione che permette a periferiche e componenti di un sistema elettronico di "dialogare" tra loro scambiandosi informazioni o dati di sistema attraverso la trasmissione di segnali. Diversamente dalle connessioni punto-punto un solo bus può collegare tra loro più dispositivi.

Le connessioni elettriche del bus possono essere realizzate direttamente su circuito stampato oppure tramite un apposito cavo. Nel primo caso, se il bus è di tipo parallelo cioè adotta una trasmissione parallela, spesso è riconoscibile a vista perché si nota sul circuito un nutrito gruppo di piste compatte e disposte in parallelo che vanno a toccare i vari componenti della scheda elettronica. Sono di questo tipo i bus ISA, PCI e AGP.

Un bus può adottare anche una trasmissione seriale. Il progredire della tecnologia sembra preferire questa forma a quella parallela, che tra l'altro soffre di maggiori ingombri e spesso anche di maggiori costi. Esempi di bus seriali sono: SPI, I²C, SATA, PCI Express, LonWorks, Konnex, PROFIBUS, CAN e LIN.

Tipologia di bus[modifica | modifica sorgente]

  • A stella, in cui ogni nodo della rete è collegato agli altri passando per uno o più concentratori, detti hub, ed esiste un solo percorso che colleghi un nodo ad un altro. Ogni nodo ha un solo ramo, collegato ad un hub, mentre gli hub hanno almeno due rami di connessione verso altri nodi ed altri hub.
  • Daisy-chain, in cui i nodi sono collegati uno di seguito all'altro, e quindi ogni nodo ha due rami (connessioni) ad eccezione dei 2 nodi posti alle estremità.
  • Ring, simile alla rete daisy-chain in cui i punti estremi sono anch'essi connessi fra loro, creando quindi un anello.

Bus di sistema[modifica | modifica sorgente]

Il bus di sistema, presente in tutti i microcalcolatori, è composto da 50 a 100 fili in rame incisi sulla scheda madre ed è dotato di connettori separati ad intervalli regolari per l’innesto dei moduli di memoria e di I/O. Si tratta di una serie di connessioni elettriche ognuna delle quali può trasmettere cifre binarie (0 o 1) in successione, l'insieme delle quali (che può essere o meno interpretato come un valore numerico) è interpretato dai vari componenti del sistema secondo protocolli prestabiliti. Un bus che collega due componenti appartenenti alla stessa scheda integrata è detto bus interno (internal bus) (di solito proprietario), se collega due componenti generici è detto bus esterno (external bus). Se c’è un solo bus esterno è detto bus di sistema (system bus).

Il bus di sistema si divide in quattro bus minori:

  • bus alimentazione
  • bus dati
  • bus indirizzi
  • bus controlli

Il motivo per cui gli elaboratori dispongono in genere di un solo bus è semplice: l'architettura a più bus, proposta teoricamente agli albori dell'informatica da John von Neumann nel 1945, non è praticamente realizzabile, visto l'altissimo numero di connessioni che sarebbero necessarie.

Bus dati per tutti i tipi[modifica | modifica sorgente]

È il bus sul quale transitano le informazioni. È usufruibile da tutti i componenti del sistema, sia in scrittura sia in lettura. È bidirezionale (permette il passaggio dati in più direzioni contemporaneamente).

Bus indirizzi[modifica | modifica sorgente]

È il bus (unidirezionale) attraverso il quale la CPU decide in quale indirizzo andare a scrivere o a leggere informazioni; sia le celle di memoria (RAM) sia le periferiche di I/O (Input/Output) sono infatti divise in zone, ognuna delle quali ha un dato indirizzo. Dopo aver comunicato l'indirizzo tramite questo bus, la scrittura o lettura avviene normalmente tramite il bus dati. Naturalmente questo bus è fruibile in scrittura solo dalla CPU ed in lettura dagli altri componenti, in quanto tramite questo bus viene dato solo l'indirizzo della cella, che è deciso dalla CPU.

Bus controlli[modifica | modifica sorgente]

Il bus controlli è un insieme di collegamenti il cui scopo è coordinare le attività del sistema; tramite esso, la CPU può decidere quale componente deve scrivere sul bus dati in un determinato momento, quale indirizzo leggere sul bus indirizzi, quali celle di memoria devono scrivere e quali invece leggere, etc. Infatti la memoria e tutti gli altri componenti comunicano con la CPU attraverso un unico bus condiviso; questo significa che senza un controllo da parte della CPU si verrebbero a creare dei conflitti e delle collisioni.

Tipi di bus dati[modifica | modifica sorgente]

il bus dati viene utilizzato per lo scambio di informazioni tra i vari dispositivi. È bidirezionale in quanto l'invio dei dati non è di sola appartenenza alla CPU e si divide:

ISA (Industry Standard Architecture Bus)[modifica | modifica sorgente]

Evoluzione dei bus PC bus e PC/AT bus utilizzati nei primi PC (8086, 80286). Sviluppato da un consorzio in contrapposizione all’IBM Microchannel. Contiene 64 + 36 linee:

  • 20 + 4 linee indirizzi
  • 8 + 8 linee dati

Sincrono con clock a 8,33 MHz. Estensione a 32 bit: EISA

Zorro[modifica | modifica sorgente]

Bus di espansione sviluppato per i computer Amiga prodotti dalla Commodore. Esistono tre versioni di questo bus, le prime due erano a 16 bit, la terza era a 32 bit. Questo bus è stato fornito nativamente della capacità Plug and Play fin dalla prima versione risalente al 1985. È un bus parallelo che lavora in modo sincrono ma nella terza revisione poteva lavorare anche in modo asincrono rendendo le comunicazioni più efficienti ma nel contempo rendendo le schede di espansione più costose e difficili da progettare.

PCI (Peripheral Component Interconnect Bus)[modifica | modifica sorgente]

Bus di sistema PC, (ma anche Apple, Sun). Sviluppato dalla Intel nel 1992 (in sostituzione del bus ISA). Diverse versioni: PCI, PCI 2.0, PCI 2.1, PCI 2.2, PCI-X, PCI-X DDR. 32 – 64, PCI-E linee dati-indirizzi (sovrapposte) (multiplexed) Clock a 33 – 66 – 133 – 266 MHz. Alimentazione 5 – 3,3 Volt. Il trasferimento che avviene attraverso un bus PCI è un "burst", composto da una fase di indirizzamento e da una o più fasi di dato. Bassa latenza ed elevato throughput.

USB (Universal Serial Bus)[modifica | modifica sorgente]

Bus per il collegamento di periferiche (lente). Sviluppato nel 1995 da un consorzio: (Compaq, HP, Intel, Lucent, Microsoft, Nec, Philips). Caratteristiche: flessibilità, semplicità; un unico bus per molte periferiche; non sono necessari dispositivi di controllo e porte dedicate; facilmente espandibile; economico; connessioni a caldo; supporto dispositivi tempo reale (audio - telefono)..

Il cavo è composto da 4 fili: massa, alimentazione (5V), Dati+, Dati-.

Larghezza di banda:

  • USB 1.0: 1,5 Mbit/s;
  • USB 1.1: 12 Mbit/s;
  • USB 2.0: 480 Mbit/s;
  • USB 3.0: 4,8 Gbit/s.

SCSI (Small Computer System Interface)[modifica | modifica sorgente]

Collegamento per dispositivi interni o esterni al computer: dischi rigidi (dischi SCSI), ma anche CD - DVD – unità nastro - stampanti - scanner.

  • versioni: SASI (’79), SCSI-1, SCSI-2, Fast SCSI-2, Fast & wide SCSI-2, SCSI-3 Ultra.
  • frequenze: 5 – 10 – 20 – 40 – 80 – 160 MHz
  • linee di dati: 8 - 16 line
  • banda passante 5 - 320 MB/sec

Collega sino a 7- 15 controllori (unità) e massimo 2048 periferiche per controllore. Collegamento a cascata, con terminatore. Semplice ed economico. Parte della logica delegata ai controllori. 50 fili - 25 di massa per eliminare disturbi (8 dati — 1 parità — 9 controllo — 7 alimentazione e usi futuri). Asincrono: con protocollo di hand-shake. Arbitraggio decentralizzato: utilizzo linee dati, priorità prestabilita.
Il bus SCSI è un bus parallelo, mentre una sua estensione, il Serial Attached SCSI (SAS), è di tipo seriale.

FireWire (IEEE 1394)[modifica | modifica sorgente]

Molte similitudini con l’USB: bus seriale con alimentazione (60W), sviluppato da un consorzio di aziende (1984 - Apple, 1995 Standard, ma con Royalties), connessioni a caldo, meccanismi di identificazione, struttura ad albero.

Differenze fra FireWire ed USB:

  • Maggiori prestazioni e costi: destinato a periferiche veloci.
  • Differenze nei protocolli: le comunicazioni non iniziano necessariamente dal Root.
  • Non necessita di un calcolatore (Root Hub) di riferimento.
  • Alcuni protocolli simili al bus SCSI.

La porta FireWire ha due tipologie di standard che differiscono tra loro essenzialmente nella velocità e nel numero di conduttori pin di trasporto dati. Questi standard stabiliti dall’Institute of Electrical and Electronic Engineer (IEEE) sono la IEEE 1394a e la IEEE 1394b.

L'IEEE 1394a può avere da 4 a 6 pin conduttori ed una velocità di comunicazione non superiore a 400 Mbps.

L'IEEE 1394b può avere 9 pin conduttori ed una velocità di comunicazione non superiore a 800 Mbps.

È importante sapere che entrambi i cavi non possono avere lunghezza superiore a 4,5 mt.

Low Pin Count[modifica | modifica sorgente]

È un bus interno ideato da Intel per evitare di usare l'obsoleto ISA per collegare il chip southbridge al Super I/O nelle schede madri e ridurre così sia il numero di piedini impiegati (da cui il nome) che il numero di piste di rame nel circuito stampato.

PCI-X[modifica | modifica sorgente]

Il PCI-X è un'evoluzione del PCI. È stata sviluppata dallo stesso consorzio che sviluppò il PCI e fornisce una larghezza di banda fino a 4 GByte. Pur avendo prestazioni molto più elevate del PCI è retrocompatibile con le periferiche PCI e quindi permette il riutilizzo delle schede PCI.

PCI Express[modifica | modifica sorgente]

Il PCI Express è il successore (seriale) del bus di espansione PCI (parallelo) e ha sostituito il bus AGP precedentemente in uso per le schede grafiche.

Chiamato PCI-Express è in genere abbreviato in PCIe o PCIx (da non confondere con PCI-X che si trova in molte schede madri attualmente in commercio). L'architettura è completamente differente dal bus PCI classico.

La sua caratteristica seriale aiuta a semplificare il layout del PCB delle schede madri ed è costituito da una serie di canali. Tali canali possono essere aggregati secondo le esigenze rendendo di fatto il sistema molto flessibile. La banda a disposizione di ciascun canale (FULL DUPLEX) è dedicata e quindi non condivisa con gli altri.

Un canale PCIe (detto x1) ha una banda disponibile di 266 MByte/sec. Pertanto, nelle moderne schede video che utilizzano 16 canali PCIe la banda a disposizione è di circa 4 GByte/sec (il doppio del bus AGP 8x).

Principi di funzionamento[modifica | modifica sorgente]

Protocolli di comunicazione[modifica | modifica sorgente]

In ogni transazione sul bus:

  • un dispositivo prende il controllo del bus
  • invia una richiesta (I/O) ad un secondo dispositivo
  • svolta la richiesta, il bus viene liberato per un’altra comunicazione.

Master: dispositivo che prende il controllo del bus, inizia l’interazione

Slave: dispositivo che risponde al master

Il ruolo di un dispositivo può cambiare nel tempo; un dispositivo può comportarsi da master o da slave in contesti differenti. Lo standard che definisce il bus deve fornire le regole per gestire tali condizioni o vietarle.

Esistono due diversi meccanismi di temporizzazione dei segnali:

  • Protocollo sincrono: è previsto un segnale di sincronizzazione (clock) che permette di gestire la temporizzazione delle comunicazioni.
  • Protocollo asincrono: tutta la temporizzazione della comunicazione è gestita dal protocollo stesso attraverso lo scambio dei messaggi.

La scelta dipende da:

  • Interfaccia del dispositivo
  • Adattare interfacce con differenti velocità
  • Tempo totale richiesto per il trasferimento
  • Possibilità di rilevare errori
  • Uno schema completamente asincrono è affidabile e flessibile ma le interfacce e la logica di controllo sono molto più complicate da realizzare.

Si sente spesso parlare in ambito hardware della velocità (larghezza di banda) del FSB, acronimo che sta per Front Side Bus ed identifica quella parte di bus di sistema che mette in collegamento la CPU con qualunque altra periferica installata nel computer (ad esempio modem interni, scheda video, scheda audio, ecc....).

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica