[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 84.   Da ISA a PCI

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 x86, anche se in molti casi può trattarsi di componenti obsoleti.

84.1   ISA

La sigla ISA sta per Industry standard architecture e rappresenta il primo tipo di bus negli elaboratori personali i086. Inizialmente si è trattato di un bus a 8 bit, che successivamente è stato esteso a 16 bit.

Figura 84.1. Due alloggiamenti ISA a 16 bit. La prima parte dell'alloggiamento, a sinistra, equivale alla vecchia versione a 8 bit.

bus-isa-slot

Il connettore di un alloggiamento a 16 bit è praticamente un prolungamento di quello a 8 bit, come si può vedere nella figura 84.1, in cui si possono ancora inserire le schede più vecchie. Tuttavia, nei primi 8 bit di un bus ISA si può 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, è l'impossibilità di condividere uno stesso livello di IRQ tra diverse schede.

Figura 84.2. L'esempio tipico di una scheda ISA a 8 bit, che non richiede alte prestazioni e nemmeno di accedere a livelli IRQ superiori al numero otto.

bus-isa-8-bit-esempio

Le figure 84.2 e 84.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.

Figura 84.3. Una scheda di rete che utilizza un alloggiamento ISA a 16 bit.

bus-isa-16-bit-esempio

84.2   MCA

La sigla MCA sta per Micro channel architecture e rappresenta un bus a 32 bit introdotto da IBM nel 1987 nei primi elaboratori con microprocessori x86 a 32 bit.

Il bus MCA è 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 è la capacità di configurare automaticamente l'utilizzo delle risorse, senza bisogno di interventi, come invece richiede il bus ISA.

Il bus MCA non è stato accettato bene dal mercato, perché incompatibile con ISA.

84.3   EISA

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 è la compatibilità con le schede ISA, che possono 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.

84.4   VESA local bus

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 ha dato vita nel 1992 al bus VLB, ovvero VESA local bus, a 32 bit, su un alloggiamento compatibile con le schede ISA comuni, dove si aggiunge un'estensione per i collegamenti mancanti.

A differenza di altri bus a 32 bit, in questo caso non si possono avere molti alloggiamenti (di solito un massimo di due); inoltre, il bus mastering non è efficace e non è disponibile un sistema di configurazione automatica delle risorse utilizzate. Infine, il bus dipende strettamente dalle caratteristiche dei microprocessori i486.

84.5   PCI

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.

Figura 84.4. Un alloggiamento PCI a 32 bit su una scheda madre comune.

bus-pci-slot

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, #C e #D, 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.

84.6   Informazioni da un kernel Linux

Il kernel Linux consente di ottenere informazioni sul bus PCI attraverso la directory virtuale /proc/, con l'aiuto del programma lspci. (1) 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:

lspci -v[Invio]

00:00.0 Host bridge: VIA Technologies, Inc. VT82C693A/694x \
  \[Apollo PRO133x] (rev c4) Flags: bus master, medium devsel, latency 8 Memory at ec000000 (32-bit, prefetchable) [size=64M] Capabilities: <available only to root> 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x \
  \[Apollo MVP3/Pro133x AGP] (prog-if 00 [Normal decode]) Flags: bus master, 66Mhz, medium devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 Memory behind bridge: feb00000-febfffff Prefetchable memory behind bridge: f0000000-fe9fffff Capabilities: <available only to root> 00:02.0 ISA bridge: VIA Technologies, Inc. VT82C596 ISA \
  \[Mobile South] (rev 12) Flags: bus master, stepping, medium devsel, latency 0 00:02.1 IDE interface: VIA Technologies, Inc. \
  \VT82C586A/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE \
  \(rev 06) (prog-if 8a [Master SecP PriP]) Flags: bus master, stepping, medium devsel, latency 32 I/O ports at fff0 [size=16] 00:02.2 USB Controller: VIA Technologies, Inc. USB (rev 08) (prog-if 00 [UHCI]) Subsystem: VIA Technologies, Inc. (Wrong ID) USB Controller Flags: bus master, medium devsel, latency 22, IRQ 10 I/O ports at fce0 [size=32] 00:02.3 Host bridge: VIA Technologies, Inc. VT82C596 Power Management (rev 20) Flags: medium devsel 00:0f.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 74) Subsystem: 3Com Corporation 3C905C-TX Fast Etherlink for \
  \PC Management NIC Flags: bus master, medium devsel, latency 80, IRQ 9 I/O ports at 7480 [size=128] Memory at feafff80 (32-bit, non-prefetchable) [size=128] Expansion ROM at <unassigned> [disabled] [size=128K] Capabilities: <available only to root> 00:12.0 Multimedia audio controller: ESS Technology ES1988 Allegro-1 (rev 10) Subsystem: IBM: Unknown device 017b Flags: bus master, medium devsel, latency 16, IRQ 5 I/O ports at 7800 [size=256] Capabilities: <available only to root> 01:00.0 VGA compatible controller: S3 Inc. Savage 4 (rev 04) (prog-if 00 [VGA]) Subsystem: Diamond Multimedia Systems: Unknown device 4906 Flags: bus master, 66Mhz, medium devsel, latency 248, IRQ 11 Memory at feb80000 (32-bit, non-prefetchable) [size=512K] Memory at f0000000 (32-bit, prefetchable) [size=128M] Expansion ROM at <unassigned> [disabled] [size=64K] Capabilities: <available only to root>

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 vedano eventualmente le pagine di manuale lspci(8) e setpci(8).

84.7   AGP

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.

Figura 84.6. Un alloggiamento AGP X1.

alloggiamento AGP normale

Lo sviluppo di AGP ha portato a distinguere dei livelli con prestazioni differenti; AGP 1X, 2X, 4X, 8X e PRO, dove la sigla nX serve a rappresentare le prestazioni in termini di velocità. Dal momento che le caratteristiche delle schede video cambiano da una versione all'altra, l'alloggiamento AGP subisce delle piccole modifiche in modo da ridurre la possibilità di inserire una scheda non compatibile. Rispetto alla figura 84.6 ci può essere uno spostamento della «chiave» di inserzione, come la sua mancanza nel caso di un alloggiamento «universale»; infine, nel caso di AGP PRO, si ha un alloggiamento con un'estensione maggiore.

Figura 84.7. Un alloggiamento AGP «universale», che dovrebbe poter accogliere tutte le schede, escluse quelle «PRO». Come si può vedere manca di proposito la chiave di inserimento.

alloggiamento AGP universale

Figura 84.8. Un alloggiamento AGP PRO.

alloggiamento AGP PRO

Figura 84.9. Un tipo di scheda AGP comune.

scheda AGP comune

Figura 84.10. Un tipo di scheda AGP PRO; lo si distingue per la presenza del piedino finale, dopo la fila dei contatti standard.

scheda AGP PRO

84.8   AMR

AMR, ovvero Audio modem riser, non è un bus, ma soltanto un alloggiamento, normalmente singolo, da usare per funzionalità audio o come modem.

Lo standard AMR si associa a AC97 (Audio codec 97) e generalmente questo tipo di alloggiamento è già scomparso dalle schede madri, che normalmente tendono a integrare tutte le funzionalità nella scheda madre, senza bisogno di schede da alloggiare in un connettore AMR.

Figura 84.11. Un modem per alloggiamento AMR.

modem

La figura mostra un modem AMR e come si può vedere non ci sono componenti importanti, salvo degli integrati microscopici, pertanto si intende che l'elaborazione elettronica più importante avviene già nella scheda madre (o meglio nella CPU).

Figura 84.12. Un alloggiamento AMR.

AMR

84.9   PCI Express

Il successore del bus PCI potrebbe essere PCI Express, che introduce una comunicazione seriale e un insieme di alloggiamenti differenti, in base al numero di «corsie» (lane) previste.

In pratica, l'alloggiamento di un bus PCI Express può essere relativamente corto, quasi come quello di un alloggiamento AMR, per il livello «x1», allungandosi per i livelli successivi, fino al massimo di «x16». Naturalmente, i vari livelli corrispondono a prestazioni maggiori, proporzionalmente, come suggerisce la sigla stessa.

Teoricamente, pur cambiando completamente la sua forma e il modo di comunicare, i componenti PCI Express dovrebbero mantenere almeno una compatibilità a livello di software.

Inizialmente, il bus PCI Express si introduce nelle schede madri per consentire l'uso di schede video grafiche con prestazioni eccezionali, pertanto, proprio per questa ragione, si tratta solitamente di un solo alloggiamento x16.

84.10   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) Linux PCI utilities   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome da_isa_a_pci.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!