PCI Express

Le PCI Express, abrégé PCI-E ou PCIe est un standard développé par Intel et introduit en 2004. Il spécifie un bus local série et un connecteur qui permet de connecter des cartes d'extension sur la carte mère d'un ordinateur.



Catégories :

Bus informatique - Connectique - Composant électronique - Carte mère

Définitions :

  • Standard de bus d'extension qui a fait son apparition sur les ordinateurs personnels en 2004. Sa vocation est de remplacer en premier lieu le ... (source : lecollagiste)
Port PCI Express (de haut en bas : ×4, ×16, ×1 et ×16), comparé au respectant les traditions 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 permet de connecter des cartes d'extension sur la carte mère d'un ordinateur. Il est conçu pour remplacer l'ensemble des connecteurs d'extension d'un PC, dont le PCI et l'AGP.

Une évolution du PCI

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 également l'AGP, un port rapide pour cartes graphiques. Il serait même envisagé dans l'avenir d'y connecter des périphériques externes.

Contrairement au PCI qui est relié au southbridge de la carte mère, le PCI Express est relié au northbridge.

Tandis que le PCI utilise un unique bus de largeur 32 bits bidirectionnel alterné (half duplex) pour la totalité des périphériques, le PCI Express utilise une interface série (de largeur 1 bit) à base de lignes bidirectionnelles. 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 comparable à de la commutation de paquets selon un modèle à quatre couches :

On parle de ports PCIe ×1, ×2, ×4, ×8, ×16 et ×32 pour différencier les ports selon le 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 principe un débit de 8 Go/s, soit 4 fois le débit des ports AGP[1].

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 indispensable aux cartes ×16. Une carte d'extension ×16 fonctionnera sur ce port (mais certainement 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 : ×1, ×2, …, ×32).

En 2007 est apparu la seconde génération de PCIe : gen 2.0 Cette version permet, entre autres, de passer le débit de 250 Mo/sec à 500 Mo/sec par sens par lien. (le débit de la première génération gen 1.0 est doublé).

Les bases de PCIe

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 forment alors les chemins d'échanges (lane)  : PCIe 1x 2x 4x 8x.
Un signal émission ou réception est par conséquent composé de deux fils en mode différentiel.
La combinaison des signaux émission et réception, soit 4 fils, forme 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/sec
PCIe 1x aura par conséquent un débit utile de (2, 5 * 2 * 8/10) /8 = 500 Mo/sec

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

PCIe suit le modèle OSI :

Un calcul de CRC est effectuée au niveau data link, il sert à 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 faut, il est envisageable 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 généralement.

DLLP sont par conséquent 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 nommé Double Word (DW) sachant qu'un word est un double octet et qu'un octet se compose de 8 bits.

Le niveau physique se compose des éléments suivant :

Le niveau data link dispose d'un "Replay Buffer" coté émission servant à renvoyer le paquet quand le récepteur détecte des erreurs.

Différents types de transactions existent :

Deux types de transactions sont envisageables : posté 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é tandis 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 existe (cas d'un design FPGA).
PLDA permet une sur couche entre les paquets TLP et le niveau utilisateur.
Cette sur couche gérera par exemple des accès mémoire direct DMA en mode "scatter gather" peut-être.

Voir aussi

Sources

Notes et références

  1. commentcamarche. net

Recherche sur Amazon (livres) :



Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/PCI_Express.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu