PCI (Peripheral Component Interconnect) |
Intel |
|---|---|
| Architecture | |
Introduction
Le PCI (Peripheral Component Interconnect), généralement appelé PCI ou PCI Local Bus, est une architecture de bus d'extension développée initialement par Intel au début des années 1990. La première spécification apparaît en 1992, à une époque où les ordinateurs personnels utilisent principalement les bus ISA, EISA, MCA et, pour certaines machines 486, VESA Local Bus (VLB). Le PCI est conçu pour proposer une interface plus performante, plus indépendante du microprocesseur et mieux adaptée à l'évolution rapide des ordinateurs personnels.
Contrairement au bus ISA, directement issu de l'architecture des premiers IBM PC, le PCI est conçu comme un bus local synchrone, relativement indépendant de l'architecture du processeur. Cette caractéristique permet son utilisation non seulement sur les ordinateurs x86, mais également sur différentes stations de travail et machines utilisant d'autres familles de processeurs. Le PCI devient néanmoins surtout célèbre grâce aux ordinateurs compatibles IBM PC des années 1990 et 2000.
Dans sa configuration la plus courante, le PCI utilise un bus parallèle de 32 bits fonctionnant à 33 MHz, permettant un débit théorique maximal d'environ 133 Mo/s. Le standard prévoit également des variantes 64 bits ainsi qu'un fonctionnement à 66 MHz. Une liaison PCI 64 bits à 66 MHz peut ainsi atteindre théoriquement environ 533 Mo/s. Contrairement au futur PCI Express, cette bande passante est généralement partagée entre les périphériques présents sur un même bus PCI.
Le PCI introduit également plusieurs fonctions particulièrement importantes, comme la configuration automatique des périphériques, le Bus Mastering, les transferts en rafale (burst transfers) et un espace de configuration standardisé permettant au BIOS et au système d'exploitation d'identifier les cartes installées. Ces caractéristiques participent à la généralisation du concept Plug and Play sur les PC des années 1990.
Pendant plus d'une décennie, le PCI constitue le principal bus d'extension généraliste des ordinateurs personnels. Il permet de connecter des cartes réseau, cartes son, contrôleurs SCSI, contrôleurs IDE/SATA, cartes USB, modems et de nombreux autres périphériques. Les cartes graphiques utilisent également le PCI avant que le AGP (Accelerated Graphics Port) ne devienne la solution privilégiée pour les accélérateurs graphiques.
À partir du milieu des années 2000, le PCI conventionnel est progressivement remplacé par le PCI Express (PCIe), une architecture série point à point offrant une bande passante beaucoup plus importante. Le PCI reste néanmoins un élément fondamental de l'histoire du PC et influence profondément les mécanismes de détection, de configuration et de gestion des périphériques utilisés par les architectures modernes.
Spécifications
| Spécification | Description |
|---|---|
| Nom complet | Peripheral Component Interconnect |
| Abréviation | PCI |
| Nom technique courant | PCI Local Bus / Conventional PCI |
| Développeur initial | Intel |
| Première spécification | 1992 |
| Organisme de normalisation | PCI-SIG |
| Type | Bus d'extension parallèle synchrone |
| Largeur standard | 32 bits |
| Largeur étendue | 64 bits |
| Fréquence courante | 33 MHz |
| Fréquence étendue | 66 MHz |
| Débit 32 bits / 33 MHz | Environ 133 Mo/s |
| Débit 32 bits / 66 MHz | Environ 266 Mo/s |
| Débit 64 bits / 33 MHz | Environ 266 Mo/s |
| Débit 64 bits / 66 MHz | Environ 533 Mo/s |
| Topologie | Bus partagé |
| Configuration | Automatique par espace de configuration PCI |
| Bus Mastering | Oui |
| Tensions de signalisation | 5 V et/ou 3,3 V selon version et carte |
| Succède principalement à | ISA, EISA, MCA et VLB dans de nombreux usages |
| Successeur principal | PCI Express |
Historique
Au début des années 1990, l'industrie informatique utilise plusieurs architectures de bus concurrentes.
Parmi celles-ci se trouvent :
- ISA 8 bits ;
- ISA 16 bits ;
- MCA ;
- EISA ;
- VESA Local Bus (VLB).
Le bus ISA est alors très répandu, mais ses performances deviennent insuffisantes pour les nouveaux périphériques.
Le VLB offre des performances supérieures, mais son architecture est fortement associée aux ordinateurs utilisant les processeurs Intel 80486.
Intel développe donc une architecture plus moderne et plus indépendante du processeur : le PCI Local Bus.
La spécification PCI 1.0 apparaît en 1992.
Le PCI devient progressivement courant avec les systèmes Intel Pentium et les chipsets correspondants.
PCI 1.0
La première spécification PCI est publiée en 1992.
Elle établit les principes fondamentaux de l'architecture :
- bus synchrone ;
- transferts de données parallèles ;
- adressage normalisé ;
- espace de configuration des périphériques ;
- possibilité de Bus Mastering ;
- indépendance relative par rapport au processeur.
Cette première version sert principalement à établir les bases de la technologie.
PCI 2.x
Les versions 2.x permettent au PCI de devenir véritablement une norme industrielle.
La spécification PCI 2.0 apparaît en 1993 et contribue à favoriser l'adoption du PCI par un grand nombre de fabricants.
La révision PCI 2.1 introduit notamment la prise en charge normalisée du fonctionnement à 66 MHz et améliore différents aspects électriques et fonctionnels.
Les révisions suivantes améliorent encore la compatibilité et la normalisation.
La spécification PCI 2.3, publiée en 2002, constitue l'une des dernières grandes révisions du PCI conventionnel.
PCI 3.0
Le PCI Local Bus Specification Revision 3.0 constitue la dernière grande spécification du PCI conventionnel.
Elle améliore principalement la normalisation électrique et la compatibilité avec les équipements plus récents.
À cette époque, le PCI conventionnel commence toutefois à être remplacé par le PCI Express.
Le PCI-SIG conserve aujourd'hui PCI 3.0 comme spécification approuvée du PCI conventionnel.
Architecture parallèle
Le PCI conventionnel utilise une architecture parallèle.
Sur une interface PCI 32 bits, plusieurs lignes transportent simultanément les données.
Les principales lignes sont désignées :
- AD[31:0]
Ces lignes sont multiplexées.
Cela signifie qu'elles peuvent transporter :
- une adresse pendant une phase de la transaction ;
- des données pendant une autre phase.
Cette technique permet de réduire le nombre de broches nécessaires sur les circuits intégrés et les connecteurs.
Bus PCI 32 bits
La version la plus répandue dans les ordinateurs personnels est :
- PCI 32 bits / 33 MHz
Le calcul théorique du débit est :
- 32 bits × 33,33 MHz
soit environ :
- 1 066 Mbit/s
ou :
- 133 Mo/s
Cette valeur représente le débit théorique maximal du bus et non nécessairement les performances réelles obtenues par une carte.
Bus PCI 64 bits
Le standard PCI prévoit également une extension à 64 bits.
Elle ajoute des lignes supplémentaires au connecteur PCI.
Une carte PCI 64 bits est donc physiquement plus longue qu'une carte PCI 32 bits standard.
Cette architecture est surtout rencontrée dans :
- les serveurs ;
- les stations de travail ;
- les contrôleurs SCSI ;
- les contrôleurs RAID ;
- les cartes réseau hautes performances.
À 33 MHz, une liaison 64 bits peut atteindre environ :
- 266 Mo/s
PCI à 66 MHz
Le PCI permet également un fonctionnement à 66 MHz.
Le doublement de la fréquence double approximativement la bande passante théorique.
Ainsi :
| Configuration | Débit théorique |
|---|---|
| 32 bits / 33 MHz | 133 Mo/s |
| 64 bits / 33 MHz | 266 Mo/s |
| 32 bits / 66 MHz | 266 Mo/s |
| 64 bits / 66 MHz | 533 Mo/s |
Dans les ordinateurs personnels grand public, la configuration 32 bits / 33 MHz demeure toutefois de loin la plus courante.
Bus partagé
L'une des caractéristiques fondamentales du PCI conventionnel est son architecture de bus partagé.
Plusieurs périphériques peuvent être connectés au même bus physique.
Par exemple :
|
Chipset ↓ Bus PCI ↓ Carte réseau + carte son + contrôleur SCSI + modem |
Ces périphériques doivent partager la bande passante disponible.
Ainsi, un bus PCI 32 bits à 33 MHz possède une capacité théorique totale d'environ 133 Mo/s, et non 133 Mo/s indépendamment pour chaque carte.
Cette caractéristique constitue une différence fondamentale avec PCI Express, où chaque périphérique dispose normalement de sa propre liaison point à point.
Arbitrage du bus
Puisque plusieurs périphériques partagent le même bus, un mécanisme doit déterminer quel périphérique peut transmettre.
Le PCI utilise donc un système d'arbitrage.
Lorsqu'un périphérique souhaite devenir maître du bus, il demande son utilisation à l'arbitre.
Lorsque l'accès lui est accordé, il peut commencer sa transaction.
Ce mécanisme permet à plusieurs périphériques compatibles Bus Master de partager efficacement le même bus.
Bus Mastering
Le PCI prend en charge le Bus Mastering.
Un périphérique capable de Bus Mastering peut prendre temporairement le contrôle du bus afin d'effectuer directement certaines opérations.
Par exemple, une carte réseau peut transférer des données entre ses tampons et la mémoire vive sans demander au processeur de déplacer individuellement chaque octet.
Cette technique fonctionne généralement avec le DMA (Direct Memory Access) et permet de réduire la charge du processeur.
Transferts en rafale
PCI prend en charge les transferts en rafale, également appelés burst transfers.
Après l'envoi de l'adresse initiale, plusieurs unités de données peuvent être transférées successivement.
Cette méthode réduit le nombre d'opérations nécessaires et améliore considérablement l'efficacité du bus lors du transfert de blocs de données importants.
Elle est particulièrement utile pour :
- cartes réseau ;
- contrôleurs de disques ;
- cartes graphiques ;
- contrôleurs SCSI ;
- systèmes d'acquisition de données.
Espace de configuration PCI
L'une des innovations les plus importantes du PCI est son espace de configuration standardisé.
Chaque fonction PCI possède un espace de configuration permettant au système d'exploitation ou au BIOS d'obtenir des renseignements sur le périphérique.
On y retrouve notamment :
- Vendor ID ;
- Device ID ;
- Command Register ;
- Status Register ;
- Class Code ;
- Revision ID ;
- Base Address Registers (BAR) ;
- informations d'interruption.
Dans le PCI conventionnel, l'espace de configuration standard est de 256 octets par fonction.
Vendor ID et Device ID
Chaque périphérique PCI peut être identifié par différents numéros.
Le Vendor ID identifie le fabricant.
Le Device ID identifie le périphérique ou la famille de périphériques.
Le système d'exploitation peut donc déterminer quel pilote doit être chargé.
Par exemple, lors du démarrage :
BIOS/OS → détection PCI → Vendor ID + Device ID → pilote approprié
Ce mécanisme demeure fondamental dans les architectures PCI modernes.
Class Code
Le Class Code permet d'identifier la fonction générale du périphérique.
Il existe notamment des classes correspondant aux :
- contrôleurs d'entreposage ;
- contrôleurs réseau ;
- contrôleurs d'affichage ;
- contrôleurs multimédias ;
- ponts PCI ;
- contrôleurs de communication ;
- contrôleurs USB.
Ainsi, même sans connaître précisément le modèle du périphérique, le système peut déterminer sa fonction générale.
Base Address Registers (BAR)
Les Base Address Registers, ou BAR, permettent au périphérique d'indiquer les ressources d'adressage dont il a besoin.
Ils servent notamment à définir :
- des plages d'adresses mémoire ;
- des plages d'entrées/sorties.
Lors de l'initialisation du système, le BIOS ou le système d'exploitation peut attribuer ces ressources aux périphériques.
Cette architecture facilite énormément la configuration automatique du matériel.
Plug and Play
Le PCI contribue fortement à la généralisation du Plug and Play.
Avec les anciens périphériques ISA, l'utilisateur doit parfois configurer manuellement :
- IRQ ;
- adresse d'entrée/sortie ;
- canal DMA ;
- cavaliers (*jumpers*) ;
- commutateurs DIP.
PCI permet au BIOS et au système d'exploitation de détecter les périphériques et d'attribuer automatiquement une grande partie de leurs ressources.
L'installation d'une carte devient donc beaucoup plus simple.
Interruptions
Les périphériques PCI conventionnels peuvent utiliser quatre signaux d'interruption traditionnels :
- INTA# ;
- INTB# ;
- INTC# ;
- INTD#.
Dans de nombreuses machines, plusieurs périphériques peuvent partager une même ligne d'interruption.
Les versions plus récentes du standard permettent également l'utilisation de mécanismes tels que MSI (Message Signaled Interrupts).
Tensions électriques
Le PCI conventionnel a existé avec différentes tensions de signalisation.
Les principales sont :
- 5 V ;
- 3,3 V.
Le connecteur utilise des détrompeurs afin d'éviter l'installation de certaines cartes dans un emplacement utilisant une tension incompatible.
On rencontre également des cartes dites universelles, conçues pour fonctionner dans plusieurs types d'emplacements compatibles.
Il est donc important de ne pas considérer tous les connecteurs PCI comme électriquement identiques malgré leur apparence générale similaire.
Cartes PCI courantes
Durant les années 1990 et 2000, le PCI est utilisé par une immense variété de périphériques :
- cartes réseau Ethernet ;
- cartes son ;
- modems ;
- cartes graphiques ;
- contrôleurs SCSI ;
- contrôleurs IDE ;
- contrôleurs SATA ;
- cartes USB ;
- cartes FireWire ;
- cartes TV ;
- cartes d'acquisition vidéo ;
- contrôleurs RAID ;
- cartes Wi-Fi ;
- cartes de ports série et parallèle.
Cette polyvalence constitue l'une des principales raisons du succès du PCI.
PCI et les cartes graphiques
Les premières cartes graphiques PCI apparaissent au début des années 1990.
Le PCI offre alors des performances nettement supérieures aux anciennes cartes ISA.
Cependant, l'évolution rapide des accélérateurs graphiques 3D nécessite bientôt davantage de bande passante.
Intel introduit donc en 1997 :
- AGP (Accelerated Graphics Port)
L'AGP devient l'interface privilégiée des cartes graphiques pendant plusieurs années.
Le PCI continue toutefois d'être utilisé pour les autres cartes d'extension.
Finalement, PCI Express remplace à la fois l'AGP et progressivement le PCI conventionnel.
PCI et ISA
Le PCI ne fait pas disparaître immédiatement l'ISA.
Pendant plusieurs années, les cartes mères possèdent simultanément :
- des emplacements ISA ;
- des emplacements PCI.
Cette période de transition est particulièrement visible sur les ordinateurs équipés de processeurs :
- Intel 80486 tardifs ;
- Pentium ;
- Pentium MMX ;
- Pentium II ;
- Pentium III ;
- AMD K5 ;
- AMD K6.
L'ISA disparaît progressivement des cartes mères grand public au début des années 2000.
PCI et AGP
PCI et AGP peuvent également coexister.
Une carte mère typique de la fin des années 1990 peut par exemple comporter :
- 1 emplacement AGP
- 4 ou 5 emplacements PCI
- 1 ou 2 emplacements ISA
L'AGP est alors réservé principalement à la carte graphique, tandis que PCI prend en charge les autres cartes d'extension.
PCI-X
Le PCI-X (PCI eXtended) est une évolution du PCI destinée principalement aux serveurs et stations de travail.
Il ne faut pas le confondre avec PCI Express.
PCI-X conserve une architecture parallèle compatible avec certains principes du PCI conventionnel, mais augmente considérablement les fréquences et les performances.
On le retrouve notamment sur :
- serveurs ;
- contrôleurs RAID ;
- contrôleurs SCSI ;
- cartes réseau Gigabit Ethernet.
PCI-X sera lui aussi progressivement remplacé par PCI Express.
PCI Express
Le PCI Express (PCIe) constitue le véritable successeur du PCI conventionnel dans les ordinateurs modernes.
Contrairement au PCI parallèle et partagé, PCI Express utilise des liaisons série point à point.
Les périphériques disposent de liaisons constituées d'une ou plusieurs voies :
- x1 ;
- x2 ;
- x4 ;
- x8 ;
- x16 ;
- etc.
Cette architecture permet d'augmenter considérablement la bande passante et d'éviter plusieurs limitations du bus PCI partagé.
Comparaison avec les principales architectures
| Architecture | Introduction | Type | Largeur / organisation | Débit caractéristique |
|---|---|---|---|---|
| ISA 8 bits | 1981 | Parallèle | 8 bits | Quelques Mo/s |
| ISA 16 bits | 1984 | Parallèle | 16 bits | Quelques Mo/s |
| MCA | 1987 | Parallèle | 16/32 bits | Variable |
| EISA | 1988 | Parallèle | 32 bits | Environ 33 Mo/s |
| VLB | 1992 | Parallèle | 32 bits | Jusqu'à environ 132 Mo/s à 33 MHz |
| PCI | 1992 | Parallèle partagé | 32/64 bits | 133 à 533 Mo/s |
| AGP | 1997 | Parallèle, dédié graphique | 32 bits | Jusqu'à environ 2,1 Go/s avec AGP 8x |
| PCI-X | 1998 | Parallèle partagé | 64 bits | Jusqu'à plusieurs Go/s selon version |
| PCI Express | 2003 | Série point à point | Lignes x1, x4, x8, x16... | Variable selon génération |
Avantages
Les principaux avantages du PCI sont :
- performances largement supérieures à l'ISA ;
- architecture relativement indépendante du processeur ;
- configuration automatique des périphériques ;
- prise en charge du Plug and Play ;
- Bus Mastering ;
- transferts en rafale ;
- espace de configuration standardisé ;
- prise en charge des cartes 32 et 64 bits ;
- possibilité de fonctionner à 33 ou 66 MHz ;
- très vaste écosystème de périphériques ;
- large adoption par l'industrie informatique.
Inconvénients
Le PCI conventionnel possède néanmoins plusieurs limitations :
- architecture parallèle ;
- bande passante partagée entre plusieurs périphériques ;
- fréquence limitée ;
- nombre de périphériques par bus limité ;
- problèmes d'intégrité des signaux lorsque les fréquences augmentent ;
- connecteur relativement volumineux ;
- performances devenues insuffisantes pour les périphériques modernes à très haut débit.
Ces limitations expliquent en grande partie le passage à PCI Express.
Héritage
Le PCI (Peripheral Component Interconnect) représente l'une des architectures de bus les plus importantes de l'histoire de l'ordinateur personnel. Introduit au début des années 1990, il contribue à remplacer progressivement ISA, EISA, MCA et VLB par une architecture mieux standardisée, plus rapide et largement indépendante du microprocesseur utilisé.
Son importance dépasse largement ses performances matérielles. L'espace de configuration PCI, les identifiants de fabricant et de périphérique, les classes de périphériques, les BAR et les mécanismes de détection automatique établissent des principes qui continueront d'être employés dans les générations suivantes.
Le PCI conventionnel devient ainsi le bus d'extension dominant des PC pendant une grande partie des années 1990 et du début des années 2000. Il accueille pratiquement toutes les catégories de périphériques, depuis les cartes son et réseau jusqu'aux contrôleurs de stockage et aux premières cartes accélératrices 3D.
À partir des années 2000, les limites inhérentes à son architecture parallèle et partagée deviennent toutefois de plus en plus importantes. PCI Express adopte alors une architecture série point à point beaucoup plus évolutive et remplace progressivement PCI, PCI-X et AGP.
Même s'il est aujourd'hui considéré comme une technologie historique, le PCI demeure essentiel pour comprendre l'évolution des architectures matérielles du PC. De nombreux concepts introduits ou popularisés par PCI sont toujours présents dans PCI Express, faisant du PCI l'un des principaux liens technologiques entre les ordinateurs classiques des années 1990 et les architectures d'extension modernes.