PCI Express

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Pci express)
Aller à : navigation, rechercher
 À ne pas confondre avec le port PCI-X
Ce modèle est-il pertinent ? Cliquez pour en voir d'autres.
Cet article ne cite pas suffisamment ses sources (novembre 2012).

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références » (modifier l'article, comment ajouter mes sources ?).

Port PCI Express (de haut en bas : ×4, ×16, ×1 et ×16), comparé au traditionnel Port PCI 32-bit (en bas)

Le PCI Express, abrégé PCI-E ou PCIe (anciennement 3GIO, 3rd Generation Input/Output) est un standard développé par Intel et introduit en 2004. Il spécifie un bus local série (« bus PCI express ») et un connecteur qui sert à connecter des cartes d’extension sur la carte mère d’un ordinateur. Il est destiné à remplacer tous les connecteurs d’extension d’un PC, dont le PCI et l’AGP.

La spécification 4.0 est prévue pour 2017[1].

Un intérêt notable du bus PCIe est que deux cartes PCIe peuvent dialoguer entre elles sans passer par le processeur.

Une évolution du PCI[modifier | modifier le code]

Carte PCI express pleine hauteur
Slots PCI-Express et PCI-Express 16 comparés au slot PCI (à gauche)

Un avantage du PCI Express est d’être dérivé de la norme PCI (Peripheral Component Interconnect), ce qui permet aux constructeurs d’adapter simplement leurs cartes d’extension existantes, puisque seule la couche matérielle est à modifier. D’autre part, il est suffisamment rapide pour pouvoir remplacer non seulement le PCI classique mais aussi l’AGP, un port rapide pour cartes graphiques.

Contrairement au PCI qui est relié au southbridge de la carte mère, le PCI Express est souvent disponible à la fois au niveau du northbridge et du southbridge, il a même été intégré en décembre 2015 à certains microprocesseurs.

Alors que le PCI utilise un unique bus de largeur 32 bits bidirectionnel alterné (half duplex) pour l’ensemble des périphériques, le PCI Express utilise une interface série (de largeur 1 bit) à base de lignes bidirectionnelles réparties sur 8 broches. On pourra ainsi parler d’une carte mère possédant 20 lignes PCIe. Une ligne permet théoriquement des échanges full duplex à 250 Mo/s pour la version 1.1 du protocole. Les différents périphériques communiquent alors par échange de paquets et l’arbitrage du bus PCI est remplacé par un commutateur. Le principe de fonctionnement est semblable à de la commutation de paquets selon un modèle à quatre couches :

  • couche logicielle : codage/décodage des paquets de données.
  • couche transaction : rajout/suppression d’un en-tête de début et d’un en-tête de séquencement ou de numérotation du paquet.
  • couche liaison : rajout/suppression d’un code de correction d’erreur (contrôle de redondance cyclique).
  • couche physique : transmission du paquet (transmission série « point à point »).

On parle de ports PCIe ×1, ×2, ×4, ×8, ×16 et ×32 pour différencier les ports en fonction du nombre de connecteurs de ligne dont ils disposent (respectivement 1, 2, 4, 8, 16 ou 32 lignes maximum). Un port ×32 permet d'atteindre en théorie un débit de 8 Go/s, soit 4 fois le débit des ports AGP[2].

Un port ×16 par exemple peut n’être relié qu’à 8 lignes PCIe ; il devra tout de même avoir un apport de puissance électrique nécessaire aux cartes ×16[réf. nécessaire]. Une carte d’extension ×16 fonctionnera sur ce port (mais probablement avec des performances non optimales), car le protocole PCIe prévoit la négociation mutuelle du nombre de lignes maximum supportées par les deux entités en relation. De même, une carte (exemple : ×1) peut être connectée et fonctionnera correctement sur un port plus grand (exemple : ×2, …, ×32)....

Évolutions[modifier | modifier le code]

En 2007 est apparu la deuxième génération de PCIe (gen 2.0) qui permet, entre autres, de passer le débit de 250 Mo/s à 500 Mo/s par sens par lien (le débit de la première génération gen 1.0 est doublé). En février de cette même année est publiée la norme « External PCI Express 1.0 » (ePCIe 1.0, Cabled PCIe 1.0)[3], [4], qui permet de connecter des périphériques externes sur le bus PCIe, en utilisant une carte permettant de rediriger celui-ci vers un connecteur externe. Le débit de chaque ligne est limitée à 250 Mo/s. Il existe des connecteurs et des câbles pour les versions 1x, 4x, 8x et 16x du bus. Une évolution vers des lignes à 500 Mo/s (comme le PCIe 2.0) est prévue mais sans date annoncée.

En 2010, PCI-SIG publie le cahier des charges du PCIe (gen 3.0) dont le débit est doublé 1 000 Mo/s grâce à une augmentation de 60 % de la fréquence qui passe à 8 GHz contre 5 GHz pour la gen 2.0, mais aussi par un encodage 128 bits/130 bits. Au lieu de consommer 20 % du débit pour gen 2.0, cet encodage ne fait plus perdre que 1,6 % de la bande passante totale. Les premiers périphériques en PCIe 3.0 sont arrivés mi-2011, mais les cartes graphiques exploitant cette interface ne sont arrivées que début 2012.

Spécifications techniques[modifier | modifier le code]

Ce modèle est-il pertinent ? Cliquez pour en voir d'autres.
L'article doit être débarrassé d'une partie de son jargon (indiquez la date de pose grâce au paramètre date).

Sa qualité peut être largement améliorée en utilisant un vocabulaire plus directement compréhensible. Discutez des points à améliorer en page de discussion.


Compatibilité emplacements/cartes[modifier | modifier le code]

Les connecteurs PCI Express permettent la connexion d'une carte x8 sur un slot x16, l’inverse n'étant pas vrai; idem pour les autres variantes. La taille du connecteur limite le nombre maximum de lignes PCIe utilisées par la carte, mais ne le garantit pas. La taille d'un connecteur sur une carte mère spécifie la vitesse maximum mais pas forcément la vitesse à laquelle fonctionnera la carte que l'on y insère. Le nombre de lignes utilisées se négocie automatiquement entre les périphériques.

  • Un périphérique x16 sera toujours capable de fonctionner en mode x1 (mais sera bridé par ce mode de fonctionnement) ;
  • Un périphérique x1 dans un slot x16 fonctionnera logiquement en mode x1.

Un périphérique x16 dans un slot "physiquement" x16, son mode fonctionnement dépendra du câblage électrique de la carte mère, du nombre de carte X16 ainsi que du processeur, de sa fréquence et du chipset utilisé. Les autres cartes PCIe sur le bus pourront suivant les cas limiter le nombre de lignes utilisables sur ce bus en mode x16[5].

Bande passante[modifier | modifier le code]

La bande passante varie en fonction de la génération du PCI Express et du nombre de lignes utilisées :

  • 16 Go/s (PCIe 3.0 x16)
  • 8 Go/s (PCIe 3.0 x8, 2.0 x16)
  • 4 Go/s (PCIe 3.0 x4, 2.0 x8, 1.1 x16)
  • 2 Go/s (PCIe 2.0 x4, 1.1 x8)
  • 1 Go/s (PCIe 1.1 x4)

Brochage[modifier | modifier le code]

Le tableau suivant indique les conducteurs de chaque côté du connecteur d'une carte PCI Express. Le côté soudure du circuit imprimé (PCB) de la carte est le côté A, et le côté "composants" est le côté B. Les broches PRSNT1 # et PRSNT2 # doivent être légèrement plus courtes que les autres, pour s'assurer qu'une carte branchée à chaud est complètement insérée. La broche WAKE # est utilisée pour indiquer que la carte est capable de se réveiller de façon autonome.

Brochage du connecteur PCI Express (variantes × 1, × 4, × 8 et × 16)
Broche Côté B Côté A Description Broche Côté B Côté A Description
1 +12 V PRSNT1# Doit se connecter à la broche PRSNT2# la plus éloignée 50 HSOp(8) Reserved Voie 8 envoi des données, + et −
2 +12 V +12 V Broches d'alimentation principale 51 HSOn(8) Ground
3 +12 V +12 V 52 Ground HSIp(8) Voie 8 réception des données, + et −
4 Ground Ground 53 Ground HSIn(8)
5 SMCLK TCK broches pour les ports SMBus et JTAG 54 HSOp(9) Ground Voie 9 envoi des données, + et −
6 SMDAT TDI 55 HSOn(9) Ground
7 Ground TDO 56 Ground HSIp(9) Voie 9 réception des données, + et −
8 +3.3 V TMS 57 Ground HSIn(9)
9 TRST# +3.3 V 58 HSOp(10) Ground Voie 10 envoi des données, + et −
10 +3.3 V aux +3.3 V Alimentation de veille 59 HSOn(10) Ground
11 WAKE# PERST# Lien de réactivation; fondamental pour le reset 60 Ground HSIp(10) Voie 10 réception des données, + et −
Encoche 61 Ground HSIn(10)
12 CLKREQ# Ground Demande d'horloge de fonctionnement 62 HSOp(11) Ground Voie 11 envoi des données, + et −
13 Ground REFCLK+ Paire différentielle d'horloge de référence 63 HSOn(11) Ground
14 HSOp(0) REFCLK− Voie 0 envoi des données, + et − 64 Ground HSIp(11) Voie 11 réception des données, + et −
15 HSOn(0) Ground 65 Ground HSIn(11)
16 Ground HSIp(0) Voie 0 réception des données, + et − 66 HSOp(12) Ground Voie 12 envoi des données, + et −
17 PRSNT2# HSIn(0) 67 HSOn(12) Ground
18 Ground Ground 68 Ground HSIp(12) Voie 12 réception des données, + et −
Les cartes PCI Express ×1 se terminent à la broche 18 69 Ground HSIn(12)
19 HSOp(1) Reserved Voie 1 envoi des données, + et − 70 HSOp(13) Ground Voie 13 envoi des données, + et −
20 HSOn(1) Ground 71 HSOn(13) Ground
21 Ground HSIp(1) Voie 1 réception des données, + et − 72 Ground HSIp(13) Voie 13 réception des données, + et −
22 Ground HSIn(1) 73 Ground HSIn(13)
23 HSOp(2) Ground Voie 2 envoi des données, + et − 74 HSOp(14) Ground Voie 14 envoi des données, + et −
24 HSOn(2) Ground 75 HSOn(14) Ground
25 Ground HSIp(2) Voie 2 réception des données, + et − 76 Ground HSIp(14) Voie 14 réception des données, + et −
26 Ground HSIn(2) 77 Ground HSIn(14)
27 HSOp(3) Ground Voie 3 envoi des données, + et − 78 HSOp(15) Ground Voie 15 envoi des données, + et −
28 HSOn(3) Ground 79 HSOn(15) Ground
29 Ground HSIp(3) Voie 3 réception des données, + et − 80 Ground HSIp(15) Voie 15 réception des données, + et −
30 Reserved HSIn(3) 81 PRSNT2# HSIn(15)
31 PRSNT2# Ground 82 Reserved Ground
32 Ground Reserved
Les cartes PCI Express ×4 se terminent à la broche 32
33 HSOp(4) Reserved Voie 4 envoi des données, + et −
34 HSOn(4) Ground
35 Ground HSIp(4) Voie 4 réception des données, + et −
36 Ground HSIn(4)
37 HSOp(5) Ground Voie 5 envoi des données, + et −
38 HSOn(5) Ground
39 Ground HSIp(5) Voie 5 réception des données, + et −
40 Ground HSIn(5)
41 HSOp(6) Ground Voie 6 envoi des données, + et −
42 HSOn(6) Ground
43 Ground HSIp(6) Voie 6 reception des données, + et − Legendes
44 Ground HSIn(6) Ground pin Référence de zéro Volt
45 HSOp(7) Ground Voie 7 envoi des données, + et − Power pin Alimentation de la carte PCIe
46 HSOn(7) Ground Output pin Signal de la carte à la carte mère
47 Ground HSIp(7) Voie 7 reception des données, + et − Input pin Signal de la carte mère à la carte
48 PRSNT2# HSIn(7) Open drain Peut être mis à un niveau bas ou détecté par de multiples cartes
49 Ground Ground Sense pin Reliées ensemble sur la carte pour permettre la détection du type de carte
Les cartes PCI Express ×8 se terminent à la broche 49 Reserved Pas utilisé actuellement, ne pas connecter

Caractéristiques[modifier | modifier le code]

Deux liens différentiels permettent l'échange de données en émission (direct) et réception (revers) entre deux points A & B.
'n' de ces liens constituent alors les chemins d'échanges (lane) : PCIe 1x 2x 4x 8x.
Un signal émission ou réception est donc composé de deux fils en mode différentiel.
La combinaison des signaux émission et réception, soit 4 fils, constitue un chemin (lane).
Le regroupement de 'n' chemin représentent le lien PCIe nX.

Root composant permet l'accès au CPU, à la mémoire ou tout autre périphérique.
Switch composant qui est optionnel permet le transfert PCIe entre end point sans passer par le root.
End point sont les périphériques d'échanges.

Les données sont élaborées sous forme de paquets.
PCIe permet le contrôle de flux, la QoS, la virtualisation de canaux, une latence prévisible...

Débit et bande passante :
Une paire différentielle permet un débit de 2,5 Gbit/s
PCIe 1x aura donc un débit utile de (2,5 * 1000 * 2 * 8/10)/8 = 500 Mo/s

Le facteur 2 vient du mode full duplex émission + réception.
Le facteur 8/10 est introduit par l'encodage 8B10B utilisé.

PCIe suit le modèle OSI :

  • La couche PHYsique permet le passage des paquets en un flux série. (PCS/PMA layer)
  • La couche Data link permet la gestion de l'intégrité du lien (LCRC) et le contrôle de flux.
  • La couche Transaction permet les accès plus haut niveau : mémoire, I/O...

Un calcul de CRC est effectuée au niveau data link, il permet de vérifier l'intégrité des échanges à ce niveau.
Un deuxième calcul est réalisé au niveau transactionnel, c'est un calcul de CRC de bout en bout (ECRC).

Si ECRC est faux, il est possible de demander de renvoyer à nouveau le paquet.
Ceci est géré au niveau data link par un paquet DLLP (data link layer paquet) spécifique.
Les paquets de type DLLP sont transparents à l'utilisateur qui ne voit que les paquets TLP en général.

DLLP sont donc des paquets de management (completion, configuration).

 
  Software layer                      *data*
+-------------------+
| Transaction layer |        **Header,*data*,ecrc**
+-------------------+
| Data Link Layer   | 
|                   |  ***Sequence,**Header,*data*,ecrc**,lcrc***
+-------------------+
| PHYsical LAyer    | 
|                   | Start,***Sequence,**Header,*data*,ecrc**,lcrc***,End
+-------------------+

L'en tête du packet PCIe est de 3 à 4 mots de 32 bits.
La zone de charge utile, data, est de 0 à 1024 mots de 32 bits.
Un mot de 32 bits est appelé Double Word (DW) sachant qu'un word est un double octet et qu'un octet est composé de 8 bits.

Le niveau physique est composé des éléments suivant :

  • circuit de récupération d'horloge (coté réception), (PMA)
  • SERDES, (PMA)
  • embrouilleur, (PMA)
  • encodage 8B/10B. (PCS)

Le niveau data link dispose d'un "Replay Buffer" coté émission permettant de renvoyer le paquet lorsque le récepteur détecte des erreurs.

Différents types de transactions existent :

  • lecture ou écriture du plan mémoire,
  • configuration en phase d'initialisation,
  • messages permettant l'échange d'événements entre périphériques,
  • achèvement (completion) de la transaction.

Deux types de transactions sont possibles : postée ou non postée.
La transaction de type postée envoie un paquet et n'attend rien en retour : c'est comme une lettre à la poste.
La transaction de type non postée qui attend un paquet d'achèvement en retour : c'est comme une lettre en recommandée.
Une écriture mémoire sera de type posté alors qu'une lecture mémoire sera de type non posté.


Si l'usage fait de PCIe est simple, l'utilisateur peut se brancher au niveau transactionnel.
Il faudra alors gérer les paquets TLP (transaction layer paquet) en émission réception.

Pour des usages plus poussés, des IP existent (cas d'un design FPGA).
Cette surcouche gérera par exemple des accès mémoire direct DMA en mode "scatter gather" éventuellement.

Tableau récapitulatif[modifier | modifier le code]

PCI 2.2 (32bits) PCI-Express 1.x PCI-Express 2.x PCI-Express 3.x PCI-Express 4.x
Année d'introduction[6] 1992 2003 2007 2012 N/A
Fréquence 33 MHz 100 MHz 100 MHz 100 MHz 100 MHz
Puissance max délivrée (12V+3V3) 25 watts 75 watts 75 watts 75 watts[7] encore indéterminé, entre 300 watts et 500 watts[7]
Bande passante 133 Mo/s 2,5 GT/s 5 GT/s[8] 8 GT/s 16 GT/s
débit par ligne[9] non applicable 250 Mo/s 500 Mo/s 984,6 Mo/s 1969,2 Mo/s
débit pour 16 lignes non applicable 4 Go/s 8 Go/s 15,754 Go/s 31,508 Go/s
compatibilité Incompatible PCIe PCIe x.x PCIe x.x PCIe x.x A définir

Notes et références[modifier | modifier le code]

  1. PCIe 4.0, pas avant 2017 ..., sur le site comptoir-hardware.com, consulté le 16 février 2016.
  2. Bus PCI Express (PCI-E), sur le site commentcamarche.net, consulté le 16 février 2016.
  3. (en) « Spécification PCI Express External Cabling 1.0 » (consulté le 1er février 2013)
  4. (en) « Spécification mise à jour du PCI Express External Cabling 1.0 », Pci-Sig,‎ (consulté le 1er février 2013)
  5. PCIe : le PCI express expliqué en quelques lignes, sur tomshardware.fr du 3 décembre 2014, consulté le 3 février 2017
  6. Renseigne la date de diffusion de la spécification lorsque la date de première industrialisation est inconnue.
  7. a et b (en) Chris Ramseyer, « PCI Express 4.0 Brings 16 GT/s And At Least 300 Watts At The Slot », sur tomshardware.com,‎ (consulté le 23 août 2016) : « Solomon vice-président de PCI-SIG (en), le consortium responsable de la norme du PCI Express stated that the minimum would be 300W, but the ceiling “may be 400 or 500W." PCI Express 3.0 provides a maximum of 75 watts thus far. ».
  8. Le PCI-SIG exprime la vitesse de transfert en GT/S, le Giga Transfert par seconde, plutôt qu'en Gbit/s. Ceci pour signifier que les bus PCI Express jusqu'à la version 2.x utilisent un système d'encodage à 10 bits dont 8 bits pour les données (les deux bits restants étant utilisés pour l’encodage : synchronisation, délimitation des octets, contrôle de l'intégrité du transfert).
  9. Par paire différentielle et dans chaque direction (canaux simplex bi-directionnels).

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Sources[modifier | modifier le code]

  • Andrew Tanenbaum, L'Architecture des ordinateurs,  éd. Pearson