[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
Da quando esistono gli elaboratori personali, il bus «locale», ovvero quello incorporato nella scheda madre, ha subito una continua evoluzione. In questo capitolo si riassumono le caratteristiche dei bus locali più importanti nell'architettura i386, anche se in molti casi può trattarsi di componenti obsoleti.
La sigla ISA sta per Industry standard architecture e rappresenta il primo tipo di bus negli elaboratori personali i86. Inizialmente si è trattato di un bus a 8 bit, che successivamente è stato esteso a 16 bit.
Il connettore di un alloggiamento a 16 bit è praticamente un prolungamento di quello a 8 bit, come si può vedere nella figura 36.1, in cui si possono ancora inserire le schede più vecchie. Tuttavia, nei primi 8 bit di un bus ISA si poteva accedere solo ai livelli di IRQ inferiori a nove.
Una limitazione importante del bus ISA, a parte la velocità di trasferimento dei dati molto ridotta, era l'impossibilità di condividere uno stesso livello di IRQ tra diverse schede.
Le figure 36.2 e 36.3 mostrano l'esempio di due schede da inserire in alloggiamenti ISA, rispettivamente a 8 bit e 16 bit. Nel primo caso, che rappresenta l'insieme di due interfacce seriali e una parallela, sono visibili i ponticelli che consentono di configurare i livelli di IRQ utilizzati e gli indirizzi di I/O relativi. Nel secondo caso, che riguarda una scheda di rete tradizionale, questi ponticelli mancano, perché sostituiti da una configurazione effettuata attraverso del software speciale, realizzato appositamente per quella scheda.
La sigla MCA sta per Micro channel architecture e rappresenta un bus a 32 bit introdotto da IBM nel 1987 nei primi elaboratori i386.
Il bus MCA era in grado di gestire anche il bus mastering, con cui un componente del bus può prendere il controllo. Un'altra caratteristica innovativa per l'epoca era la capacità di configurare automaticamente l'utilizzo delle risorse, senza bisogno di interventi, come invece richiedeva il bus ISA.
Il bus MCA non è stato accettato bene dal mercato, perché incompatibile con ISA.
La sigla EISA sta per Extended industry standard architecture e rappresenta un bus a 32 bit introdotto da Compaq a seguito della comparsa del bus MCA.
La caratteristica più importante di questo bus era la compatibilità con le schede ISA, che potevano essere inserite nei suoi alloggiamenti, funzionando regolarmente, consentendo alle schede EISA di comunicare a 32 bit e di gestire il bus mastering.
Lo standard EISA, nonostante la compatibilità ISA è diventato obsoleto con l'introduzione del bus VESA.
VESA sta per Video electronics standards association e rappresenta un'associazione con lo scopo di definire degli standard sulla gestione del video negli elaboratori con architettura i486. Lo standard VESA diede vita nel 1992 al bus VLB, ovvero VESA local bus, a 32 bit, su un alloggiamento compatibile con le schede ISA comuni, dove si aggiungeva un'estensione per i collegamenti mancanti.
A differenza di altri bus a 32 bit, in questo caso non si potevano avere molti alloggiamenti (di solito un massimo di due); inoltre, il bus mastering non era efficace e non era disponibile un sistema di configurazione automatica delle risorse utilizzate. Infine, il bus dipendeva strettamente dalle caratteristiche dei microprocessori i486.
PCI sta per Peripheral component interconnect e rappresenta un bus, inizialmente a 32 bit, in grado di gestire bus mastering e la configurazione automatica delle risorse, con la caratteristica di non dipendere strettamente dal microprocessore. In particolare, è ammissibile la condivisione dei livelli di IRQ per più componenti simultaneamente.
Il bus PCI è stato introdotto nel 1993 a sostegno delle nuove generazioni di microprocessori i586, ma è stato usato anche in altre architetture, con un'estensione a 64 bit.
Con il bus PCI, inizia la fine dell'uso del vecchio ISA.
Generalmente, le schede madri che mettono a disposizione un bus PCI e incorporano anche altre funzionalità, lo fanno attraverso lo stesso bus PCI. In pratica, si trovano bus ATA, bus USB e altro, già inseriti nel bus PCI.
Il bus PCI ha un proprio sistema di interruzione, dove i livelli relativi vengono identificati da sigle del tipo #A, #B, #B e #C, oppure #1, #2, #3 e #4. Di solito non è necessario essere consapevoli di questo, salvo il caso in cui tali indicazioni possano apparire nella configurazione del firmware.
Nell'ambito di un bus PCI, i componenti che vi si collegano possono essere individuati in base all'alloggiamento in cui si trovano, che può essere costituito da un supporto in cui inserire una scheda, oppure può essere qualcosa di integrato nella stessa scheda madre. Inoltre, ogni componente può distinguere al suo interno delle funzioni. In pratica, alloggiamenti e funzioni hanno un numero di identificazione, con cui fare riferimento esattamente a un componente e a una funzione precisa.
Il kernel Linux consente di ottenere informazioni sul bus PCI attraverso il file virtuale /proc/pci
, all'interno del quale si possono leggere quasi tutte le informazioni disponibili sui componenti PCI installati. In particolare, si può osservare che le coordinate di questi partono dall'indicazione del bus, che solitamente è uno solo, per cui corrisponde all'indirizzo zero. Nell'estratto di esempio vengono mostrati solo alcuni componenti relativi a quanto già integrato in una scheda madre comune:
PCI devices found: Bus 0, device 0, function 0: Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev 68). Prefetchable 32 bit memory at 0xd0000000 [0xd3ffffff]. Bus 0, device 1, function 0: PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP] (rev 0). Master Capable. No bursts. Min Gnt=4. Bus 0, device 7, function 0: ISA bridge: VIA Technologies, Inc. VT82C596 ISA [Mobile South] (rev 35). Bus 0, device 7, function 1: IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 16). Master Capable. Latency=32. I/O at 0xd000 [0xd00f]. Bus 0, device 7, function 2: USB Controller: VIA Technologies, Inc. UHCI USB (rev 17). IRQ 11. Master Capable. Latency=32. I/O at 0xd400 [0xd41f]. Bus 0, device 7, function 3: Host bridge: VIA Technologies, Inc. VT82C596 Power Management (rev 48).
Come si può osservare, il numero dell'alloggiamento viene evidenziato dalla parola chiave device.
Per una lettura più semplice di queste informazioni, si può fare uso del programma lspci. (1) Solitamente questo programma è collocato al di fuori dei percorsi degli eseguibili utilizzabili dagli utenti comuni, perché in certe situazioni richiede i privilegi dell'utente root. Se l'utente comune non riesce ad avviarlo, è sufficiente indicare il suo percorso, che dovrebbe corrispondere a /sbin/lspci
. La documentazione di questo programma è contenuta nella pagina di manuale lspci(8); qui vengono mostrati solo alcuni esempi di utilizzo. Si osservi che le coordinate dei componenti PCI vengono indicate secondo la forma bus:dispositivo.funzione.
#
lspci
Questo rappresenta l'utilizzo più semplice di lspci, con cui si ottiene l'elenco sintetico dei dispositivi PCI esistenti:
00:00.0 Host bridge: VIA Technologies, Inc. VT82C691 [Apollo PRO] (rev 44) 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598 [Apollo MVP3 AGP] 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C596 ISA [Apollo PRO] (rev 23) 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 10) 00:07.2 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 11) 00:07.3 Host bridge: VIA Technologies, Inc.: Unknown device 3050 (rev 30) 00:11.0 Ethernet controller: VIA Technologies, Inc.: Unknown device 3065 (rev 42) 00:12.0 Multimedia audio controller: Creative Labs SB Live! EMU10000 (rev 08) 00:12.1 Input device controller: Creative Labs SB Live! (rev 08) 00:13.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01) 00:14.0 SCSI storage controller: Adaptec AIC-7861 (rev 01)
#
lspci -v
Con l'opzione -v si ottengono informazioni più dettagliate in base al contesto di visualizzazione. In questo caso si ottiene un elenco simile, nel contenuto, a ciò che si può leggere direttamente nel file /proc/pci
:
00:00.0 Host bridge: VIA Technologies, Inc. VT82C691 [Apollo PRO] (rev 44) Flags: bus master, medium devsel, latency 0 Memory at d0000000 (32-bit, prefetchable) [size=64M] Capabilities: [a0] AGP version 1.0 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598 [Apollo MVP3 AGP] (prog-if 00 [Normal decode]) Flags: bus master, 66Mhz, medium devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 Capabilities: [80] Power Management version 2 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C596 ISA [Apollo PRO] (rev 23) Subsystem: VIA Technologies, Inc.: Unknown device 0000 Flags: bus master, stepping, medium devsel, latency 0 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 10) (prog-if 8a [Master SecP PriP]) Flags: bus master, medium devsel, latency 32 I/O ports at d000 [size=16] Capabilities: [c0] Power Management version 2 00:07.2 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 11) (prog-if 00 [UHCI]) Subsystem: Unknown device 0925:1234 Flags: bus master, medium devsel, latency 32, IRQ 11 I/O ports at d400 [size=32] Capabilities: [80] Power Management version 2 00:07.3 Host bridge: VIA Technologies, Inc.: Unknown device 3050 (rev 30) Flags: medium devsel 00:11.0 Ethernet controller: VIA Technologies, Inc.: Unknown device 3065 (rev 42) Subsystem: D-Link System Inc: Unknown device 1400 Flags: bus master, medium devsel, latency 32, IRQ 11 I/O ports at d800 [size=256] Memory at d9000000 (32-bit, non-prefetchable) [size=256] Expansion ROM at <unassigned> [disabled] [size=64K] Capabilities: [40] Power Management version 2 ...
A fianco di lspci, si colloca setpci, dello stesso pacchetto di programmi di servizio. Con questo si può accedere alla configurazione dettagliata delle caratteristiche dei componenti PCI, cosa che di solito non serve fare. Si veda eventualmente la pagina di manuale setpci(8).
AGP, ovvero Accellerated graphics port, non è un bus vero e proprio, ma soltanto una «porta», rappresentata da un solo alloggiamento speciale nelle schede madri, per l'utilizzo di adattatori video particolarmente potenti, che richiedono un accesso privilegiato alle risorse del sistema.
Charles M. Kozierok, The PC guide, Older bus types
daniele @ swlibero.org
1) Linux PCI utilities GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome da_isa_a_pci.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]