1.7.5 I bus
I bus sono i canali attraverso i quali avvengono le comunicazioni tra la CPU e gli altri
dispositivi. Essi sono costituiti dall’insieme dei collegamenti tra i vari circuiti elettronici e
possono essere interni o esterni, dipendentemente dal fatto se essi sono utilizzati all’interno o
all’esterno del case del computer.
Si possono distinguere due tipologie di bus, dipendentemente dal numero di linee che lo
compongono: si parla di
-
bus seriale
un bus costituito da una sola linea, sul quale le informazioni vengono trasmesse
in serie, una dopo l’altra;
-
bus parallelo
un bus costituito da più linee, sul quale le informazioni vengono trasmesse in
modo parallelo (più informazioni contemporaneamente, in parallelo una all’altra,
una su ogni linea);
Il bus di sistema, ovvero l’insieme delle linee elettriche che collega la CPU al resto del
sistema, può essere suddiviso logicamente in 3 bus disitinti, dipendentemente dalle funzioni
delle varie connessioni: l’address bus, il data bus ed il control bus. L’address bus è costituito
dalle linee che trasportano gli indirizzi di memoria e tipicamente tali linee sono unidirezionali,
ovvero le informazioni viaggiano su tale bus soltanto in una direzione, dalla CPU verso la
memoria. Il data bus è costituito dalle linee che trasportano le informazioni vere e proprie;
ogni linea di questo bus è bidirezionale, ovvero può trasportare le informazioni in
entrambi i sensi: da e verso la CPU. Il control bus è costituito da tutte le linee
che trasportano segnali di controllo in tutto il sistema. Ogni linea di questo bus è
unidirezionale.
In genere il numero di linee che compongono l’address bus è utilizzato come
riferimento dei tipi di architettura con i quali sono costruiti i computer. Ad esempio, si
parla di architettura a 32 bit se le linee dell’adress bus sono 32, cioè la CPU può
esprimere gli indirizzi di memoria centrale con un massimo di 32 bit (ovvero da 0 a
232 - 1 = 4294967295).
I bus possono essere suddivisi anche in base allo standard tecnologico con il
quale sono realizzati. Di seguito è riportata una breve descrizione per ogni tipo di
bus.
-
ISA (Industry Standard Architecture) si tratta di un bus interno che inizialmente
utilizzava 8 linee per la trasmissione dei dati (8 bit) e successivamente è stato
esteso a 16. È un bus piuttosto lento;
-
MCA (Micro Channel Architecture) si tratta di un bus interno a 32 bit introdotto da
IBM nel 1987;
-
EISA (Extended ISA) si tratta di un bus interno a 32 bit introdotto da Compaq nel
1987, compatibile con il bus ISA, cioè gli alloggiamenti per le schede inseribili
su tale bus sono composti da due parti: una ISA e l’altra per i segnali aggiunti
dall’EISA;
-
VLB (VESA Local Bus) si tratta di un bus interno a 32 bit con specifiche VESA
(Video Electronic Standards Association) introdotto nel 1992. È compatibile con
il bus ISA e permette al massimo due alloggiamenti per altrettante eventuali
schede;
-
PCI (Peripheral Component Interconnect) si tratta di un bus interno a 32 e 64 bit
(dipendentemente dalla piattaforma) introdotto nel 1993 e presente ormai in
tutti i PC. GNU/Linux permette di gestire tale bus con i comandi lspci (man
page
lspci(8)) e setpci (man page setpci(8)).
______________________________________________________________
Comando: lspci
Path: /sbin/lspci
SINTASSI
# lspci [option]
DESCRIZIONE
-
option indica la modalità di funzionamento di lspci. Può assumere i
seguenti valori:
-
-v visualizza informazioni dettagliate per ogni dispositivo;
-
-vv visualizza il massimo livello di dettagli delle informazioni
relative ad ogni dispositivo;
-
-n visualizza i codici numerici dei dispositivi PCI e dei relativi
produttori al posto della corrispondente denominazione;
-
-x visualizza
i primi 64 byte (standard header) della configurazione di ogni
dispositivo PCI;
-
-xxx visualizza tutti i byte della configurazione di ogni dispositivo
PCI;
-
-b visualizza tutti gli IRQ e gli indirizzi “visti” da ogni dispositivo,
invece che dal kernel;
-
-t visualizza un diagramma ad albero che riporta le dipendenze
dei vari dispositivi PCI;
-
-s [[bus]:][slot][.[function]]
seleziona soltanto
i dispositivi relativi al bus bus, all’alloggiamento slot ed alla
funzione function. Ognuno dei parametri può essere omesso o
specificato con il simbolo ‘*’: in tal caso qualsiasi valore viene
considerato valido;
-
-d [vendor]:[device]
seleziona soltanto i dispositivi relativi al produttore vendor e
identificativo device. Ognuno dei parametri può essere omesso
o specificato con il simbolo ‘*’: in tal caso qualsiasi valore viene
considerato valido;
-
-i file utilizza il file specificato
da file come database per gli identificatori dei dispositivi PCI
al posto di /usr/share/hwdata/pci.ids;
-
-p dir | -P dir
utilizza la directory specificata da dir, come contenitore delle
informazioni relative al bus PCI al posto di /proc/bus/pci;
-
-m visualizza le informazioni in “machine readable form” per
facilitarne il parsing;
-
-M esamina il bus PCI in modo da riportare informazioni dei
dispositivi mal configurati (può bloccare il sistema);
-
-H1 utilizza l’accesso diretto all’hardware per mezzo del
meccanismo di configurazione Intel 1;
-
-H2 utilizza l’accesso diretto all’hardware per mezzo
del meccanismo di configurazione Intel 2 (funziona solo con le
prime 16 periferiche e non sembra essere molto affidabile);
-
-F file visualizza le informazioni contenute nel file file secondo il
formato di output del comando lspci -x;
-
-G visualizza ulteriori informazioni durante il funzionamento di
lspci;
-
--version
visualizza la versione di lspci;
_________________________________________________________________
__________________________________________________________________________________________________
Comando: setpci
Path: /sbin/setpci
SINTASSI
# setpci [option] [device] [operation] [...]
DESCRIZIONE
-
option indica la modalità di funzionamento di setpci. Può assumere i
seguenti valori:
-
-v visualizza informazioni dettagliate per ogni dispositivo;
-
-f indica di non visualizzare nessun messaggio di errore se nessun
dispositivo è stato indicato;
-
-D “Demo mode” - simula l’operzione sul bus PCI ma non la
effettua realmente;
-
-s [[bus]:][slot][.[function]]
seleziona soltanto
i dispositivi relativi al bus bus, all’alloggiamento slot ed alla
funzione function. Ognuno dei parametri può essere omesso o
specificato con il simbolo ‘*’: in tal caso qualsiasi valore viene
considerato valido;
-
-d [vendor]:[device]
seleziona soltanto i dispositivi relativi al produttore vendor e
identificativo device. Ognuno dei parametri può essere omesso
o specificato con il simbolo ‘*’: in tal caso qualsiasi valore viene
considerato valido;
-
-P dir utilizza la directory specificata da dir, come contenitore delle
informazioni relative al bus PCI al posto di /proc/bus/pci;
-
-H1 utilizza l’accesso diretto all’hardware per mezzo del
meccanismo di configurazione Intel 1;
-
-H2 utilizza l’accesso diretto all’hardware per mezzo
del meccanismo di configurazione Intel 2 (funziona solo con le
prime 16 periferiche e non sembra essere molto affidabile);
-
-F file visualizza le informazioni contenute nel file file secondo il
formato di output del comando lspci -x;
-
-G visualizza ulteriori informazioni durante il funzionamento di
setpci;
-
--version
visualizza la versione di setpci;
-
device specifica l’identificativo numerico del dispositivo PCI da considerare;
-
operation specifica l’operazione da effettuare secondo la sintassi
reg[=value]
dove
-
reg è il nome del registro o il suo indirizzo seguito dal suffisso .b,
.w o .l che indica la dimensione del registro (rispettivamente
byte, word o longword). Il nome dei registri possono essere
ottenuti dalla man page di setpci;
-
value è il valore da assegnare al registro specificato;
_____________________________________________________________________
È inoltre possibile visualizzare l’elenco dei dispositivi presenti sul bus PCI riconosciuti
dal sistema, visualizzando il contenuto del file /proc/pci.
-
AGP (Accelerated Graphic Port) si tratta di un bus interno, basato sullo standard PCI 2.1,
appositamente progettato per un’elevata velocità di trasferimento dei dati dal sistema
verso la scheda video (fino a 2,1 GB/s). Di questo bus sono state sviluppate varie
versioni denominate AGPnx dove n indica quante volte è stata incrementata la
velocità del trasferimento delle informazioni rispetto all’AGP di base. Il più recente è
l’AGP8x.
-
PCI Express
è la standardizzazione, avvenuta nell’Aprile 2002 da parte del
PCI-SIG,
del bus seriale interno bidirezionale sviluppato da Intel con la partecipazione di
numerose altre aziende tra le quali IBM, Dell, hp e Microsoft e conosciuto anche come
3GIO (3rd Generation I/O). La sua elevata velocità di trasferimento delle
informazioni, che attualmente arriva fino a circa 4,5 GB/s, lo rende il probabile erede
del bus AGP.
-
ATA (AT
Attachment) spesso chiamato impropriamente IDE (Integrated Drive Electronics) o
EIDE (Enhanced IDE), è un bus di tipo parallelo, sviluppato inizialmente da Compaq,
Western Digital ed Impris nel 1986, utilizzato per collegare gli hard disk e le
unità a disco o CD/DVD (ATAPI - ATA Peripheral Interface) interne,
che permette l’impiego di hardware a più basso costo (il controller viene in
genere integrato sul dispositivo). Si basa sul bus ISA e permette velocità di
trasferimento delle informazioni da 8,3 MiB/s a 133 MiB/s su 16 linee di dati (16
bit).
Sulla motherboard sono integrati generalmente i connettori relativi a due canali ATA
e per ognuno di essi possono essere collegate fino ad un massimo di due
periferiche. Tali canali sono detti l’uno primary (primario) e l’altro secondary
(secondario).
Ogni periferica connessa a tale bus ha a bordo il relativo controller ed è
caratterizzata da una sorta di priorità: su ogni canale è possibile definire una
periferica master (prioritaria) ed una slave (meno prioritaria). La periferica
identificata come master gode del privilegio che durante la fase di boot del
sistema
viene interrogata per prima rispetto all’altra (eventualmente presente sullo stesso
canale) per l’avvio del sistema stesso. Per il resto, le due periferiche sono trattate nello
stesso identico modo. I dispositivi presenti sullo stesso canale devono sempre avere
priorità diverse: devono essere impostati l’uno come master e l’altro come slave. Esiste
anche la possibilità di impostare una configurazione automatica di ogni dispositivo,
dipendentemente dal connettore a cui il dispositivo stesso è connesso (cable select).
Infatti, le periferiche vengono collegate al canale ATA tramite un cavo piatto
(flat cable, v. fig. 1.24) e questo cavo ha tre connettori, uno dei quali viene
connesso alla motherboard ed ognuno degli altri due viene connesso ad un
dispositivo (unità a disco): con particolari tipi di cavo, il dispositivo è in
grado di riconoscere a quale dei due connettori (apparentemente identici) è
connesso ed in questo modo viene impostato automaticamente il suo livello di
priorità.
Di recente è stata introdotta sul mercato anche una nuova versione di tale
bus denominata SATA (Serial ATA), che si basa su di una connessione
seriale ad alta velocità (fino a 150 MiB/s nella prima versione e 300
e 600 MiB/s per le versioni successive), che soppianterà l’ormai vetusto
(Parallel) ATA. Tale tecnologia è stata sviluppata dal Serial ATA Working
Group,
un consorzio di cui fanno parte Intel, IBM, Dell, Maxtor, Quantum e Seagate. Con
questo tipo di tecnologia non c’è più bisogno dell’identificazione dei dispositivi master
e slave ed è, per il momento, pienamente compatibile con ATA. L’utilizzo di Serial
ATA è pertanto trasparente per i sistemi operativi.
-
SCSI (Small Computer System Interface) è un bus parallelo utilizzato per collegare sia le
unità a disco (interne ed esterne) che altre periferiche come stampanti o
scanner con le migliori performance (tempi di accesso più bassi e transfer
rate più
elevati).
Queste richiedono la presenza di un controller apposito che in genere va acquistato
separatamente. Questo innalza ulteriormente i costi di installazione delle periferiche
SCSI.
Ad uno stesso bus SCSI possono essere collegate fino ad un massimo di 16 periferiche.
Ogni periferica è individuata da un numero identificativo univoco (ID),
oltre che da un valore numerico detto LUN (Logical Unit Number). La
periferica che ha il valore ID più elevato è quella che ha la priorità più alta
rispetto alle altre presenti sul bus SCSI. Ogni periferica è generalmente
dotata di due interfacce SCSI, un connettore di ingresso ed uno di uscita, in
modo tale che il bus possa “attreversare” la periferica stessa, per poter
raggiungere tutte le periferiche connesse al bus SCSI in cascata, una dopo
l’altra. L’ultima periferica collegata fisicamente sul bus SCSI deve essere
“terminata”, cioè il connettore di uscita dell’ultima periferica SCSI deve
essere chiuso su se stesso in modo da informare l’ultima periferica SCSI
del fatto che dopo di essa non c’è nessun’altra periferica presente su tale
bus.
Come per il bus ATA, anche per quello SCSI è allo studio, da parte del Serial Attached SCSI Working
Group,
uno standard seriale basato su tecnologie di trasmissione simili a Serial ATA, il bus
SAS (Serial Attached SCSI) che rimpiazzerà lo SCSI attuale.
-
PS/2 è un canale di comunicazione esterno generalmente utilizzato da tastiera e mouse. Tale
standard è stato sviluppato da IBM e si presenta all’esterno del case con un connettore
6-pin
mini-DIN
o 5-pin DIN. Generalmente i dispositivi che si connettono tramite un connettore a
5-pin DIN (più vecchio) sono detti di tipo AT, mentre quelli che utilizzano il
connettore 6-pin mini-DIN (più recente) sono detti di tipo PS/2;
-
Parallela
spesso chiamata anche Centronics (dal nome dell’azienda che ne definì il primo
standard) è il canale di comunicazione esterno in grado di effettuare lo scambio di più
segnali contemporaneamente con il sistema (da cui il nome parallela). Si presenta
all’esterno del case con un connettore a 25 pin (DB-25) ed è utilizzato per connettere
dispositivi che hanno bisogno di velocità di trasferimnto delle informazioni abbastanza
elevate. Questo bus viene utilizzato prevalentemente da dispositivi come stampanti e
scanner;
-
Seriale
spesso chiamata anche RS-232 (dal nome del primo standard utilizzato
“Recommended Standard-232C” della EIA - Electronic Industries Alliance
- sebbene recentemente la EIA abbia definito un nuovo standard RS-422
totalmente compatibile con esso), si presenta all’esterno del case con un
connettore DB-25 o DB-9 (i pin effetivamente utilizzati sono soltanto 9). È
il canale di comunicazione esterno in grado di scambiare un’informazione
alla volta tra il sistema e le periferiche ad esso collegate (da cui il nome
seriale). Questo bus viene generalmente utilizzato da dispositivi come mouse e
modem;
-
USB (Universal Serial Bus) è lo standard più recente che soppianterà tutti gli
standard relativi alla porta seriale e quella parallela. Sempre più periferiche
vengono realizzate per essere collegate con questo tipo di bus esterno. Si tratta
essenzialmente di un bus seriale con una velocità massima di trasmissione dei dati di
60 MiB/s. La connessione di dispositivi al sistema per mezzo di tale bus è
semplicissima, dal fatto che esso permette il riconoscimento automatico dei
dispositivi;
-
PCMCIA
(Personal Computer Memory Card International Association) è il canale di
comunicazione utilizzato per connettere periferiche esterne ai computer portatili
(laptop);
-
NIC (Network Interface Card) L’interfaccia di rete (scheda di rete) è quella che permette il
collegamento tra più PC e/o periferiche con elevata velocità di scambio dei dati (da 10
Mbit/s a 1 Gbit/s). Il collegamento può essere effettuato mediante appositi cavi di
rete o tramite onde radio (wireless);
-
IEEE 1394
noto anche con il nome di Firewire o i.link, è un canale di comunicazione
esterno che permette l’interfacciamento con periferiche che necessitano di
elevate velocità di trasmissione dati, come le telecamere digitali. Tale bus
può collegare fino a 63 periferiche e supportare comunicazioni fino a 800
MiB/s;
-
IrDA (Infrared Data Association) è un canale di comunicazione esterno che non necessita di
cavo di collegamento. La trasmissione dei dati avviene per mezzo di onde
elettromagnetiche nella banda di frequenze degli infrarossi. È utilizzata per dispositivi
mobili che non necessitano di velocità di scambio dati particolarmente elevate
(cellulare, mouse, tastiera, ...);
Attualmente esistono molte periferiche che supportano il meccanismo PNP
(Plug & Play o Plug’n’Play) che permette la configurazione automatica delle stesse
da parte del sistema.
|
Esistono anche altri tipi di bus, ormai obsoleti, come XT (eXtended Technology) ed ESDI
(Enhanced Small Device Interface).
Le linee che permettono il collegamento ai bus di tipo parallelo, all’interno del case del
computer, sono costituiti generalmente da cavi piatti (flat cable) che raggruppano più linee,
una parallela all’altra, ognuna delle quali è protetta da un rivestimento plastico
(v. fig. 1.24).
L’impostazione della “priorità” di una periferica ATA o la terminazione di un dispositivo
SCSI, viene effettuata generalmente per mezzo di jumper (ponticelli), ovvero dei piccoli pezzi
metallici che chiudono il circuito elettrico tra due connettori terminali, o di piccoli interruttori
(microswitch).