[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


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

36.1   ISA

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.

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

figure/a2-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 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.

Figura 36.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.

figure/a2-bus-isa-8-bit-esempio

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.

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

figure/a2-bus-isa-16-bit-esempio

36.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 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.

36.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 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.

36.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 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.

36.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 36.4. Un alloggiamento PCI a 32 bit su una scheda madre comune.

figure/a2-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, #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.

36.6   Informazioni da un kernel Linux

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.

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).

36.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 36.5. Un alloggiamento AGP.

figure/a2-bus-agp-slot

36.8   Riferimenti

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- 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]