Appuyez sur ÉCHAP pour fermer

Hardware
6 min de lecture 14 Vues

#Nextquick Comment fonctionne le PCI Express, qui double ses débits à chaque génération [Revue de Presse]

Partager :

#Nextquick Comment fonctionne le PCI Express, qui double ses débits à chaque génération [Revue de Presse] Vous êtes-vous déjà demandé d’où venait le PCI Express (PCIe) utilisé par les cartes graphiques et comment il faisait pour doubler ses débits à chaque génération.

NEXTe >> PCIe

Vous êtes-vous déjà demandé d’où venait le PCI Express (PCIe) utilisé par les cartes graphiques et comment il faisait pour doubler ses débits à chaque génération ? Oui, alors Next vous apporte les réponses. Non ? Parfait, c’est l’occasion d’apprendre de nouvelles choses !

Le PCIe comme nous avons l’habitude de l’appeler, a bien des noms. La version longue : Peripheral Component Interconnect Express. Version plus courte : PCI Express. On parle aussi de PCI-E ou PCIe en abrégé. Le PCIe est une norme de bus d’extension, permettant de connecter des cartes d’extension sur des cartes mères.

Petite histoire du PCI Express : Arapahoe (Intel) >> 3GIO >> PCIe

Le PCIe est une évolution du PCI classique et remplace aussi l’AGP qui était utilisé par des cartes graphiques (et encore avant les bus VLB et (E)ISA). Le PCIe est né au début des années 2000, d’abord lancé par Intel sous le nom de code projet Arapahoe puis sous l’appellation 3GIO pour Third Generation I/O. Il est ensuite repris par le PCI-SIG, avec SIG pour Special Interest Group, encore aujourd’hui en charge du PCIe. Au conseil d’administration, on retrouve du beau monde : AMD, ARM, Dell, IBM, Intel, Keysight, NVIDIA, Qualcomm et Synopsys.

En 2002, le PCI Express était né. Aujourd’hui, c’est la 8ᵉ génération de PCIe qui est en travaux. Ce bus d’extension est présent sur toutes les cartes mères, en version 5.0 pour les plus récentes. De 8 Go/s en bi-directionnel (4 Go dans chaque sens, descendant et montant), il est maintenant question de… 1 024 Go/s, soit 128x plus en plus de deux décennies. Pour en arriver là, plusieurs évolutions ont été nécessaires.

Voici un rapide état des lieux des dates et des débits (approximatifs) de chaque génération :

  • PCIe 1.0 (2003) : jusqu’à 8 Go/s en x16
  • PCIe 2.0 (2007) : jusqu’à 16 Go/s en x16
  • PCIe 3.0 (2010) : jusqu’à 32 Go/s en x16
  • PCIe 4.0 (2017) : jusqu’à 64 Go/s en x16
  • PCIe 5.0 (2019) : jusqu’à 128 Go/s en x16
  • PCIe 6.0 (2022) : jusqu’à 256 Go/s en x16
  • PCIe 7.0 (2025) : jusqu’à 512 Go/s en x16
  • PCIe 8.0 (2028) : jusqu’à 1024 Go/s en x16

Comment fonctionnent les « lignes » PCIe

Le PCIe fonctionne avec des lignes, de 1 à 16 généralement, on parle alors de x1, x4, x8 et x16. Rambus rappelle que des interfaces en x32 et x12 ont été supprimées avec le PCIe 6.0. « Bien que ces largeurs soient disponibles dans les spécifications PCIe 5.0 et antérieures, ces largeurs n’ont jamais été implémentées sur le marché », ajoute l’entreprise.

Chaque ligne comprend deux paires de fils : une pour le débit montant, l’autre pour le débit descendant ; on parle de full-duplex. Suivant le nombre de lignes disponibles – il y a « négociation » entre la carte mère et la carte d’extension – les données sont envoyées en une seule fois, ou découpées en 4, 8 ou 16.

Par exemple, avec quatre lignes, le premier symbole (on va y revenir) va à la ligne 1, le 2e à la ligne 2, etc. Au 5e, retour à la ligne 1, le 6e à la ligne 2, etc. De cette manière, une carte graphique PCIe x16 peut fonctionner sur un connecteur x16, mais aussi en x8, x4 et même x1. Le transfert des données est plus ou moins rapide.

C’est quoi ces GT/s et comment on passe au Go/s ?

Passons maintenant au débit. Le PCIe 1.0 est annoncé à 250 Mo/s par ligne, soit 4 Go/s avec 16 lignes (250 x 16). Pour rappel, c’est du full-duplex, donc on peut aussi parler de 8 Go/s (dans les deux sens). Mais on lit aussi parfois des GT/s pour gigatransferts/s. C’est la manière de parler des débits d’un bus informatique, indépendant du codage des données.

Codage ? Oui, en PCIe chaque octet de 8 bits est transformé en un symbole de 10 bits : 8b/10b. Les symboles sont ensuite transmis. On voit rapidement arriver le problème : pour 8 bits, il faut en envoyer 10. Il y a des pertes.

PCIe x1 x4 x16
De haut en bas : PCIe x16 (bleu), x1, x4, x16 et enfin PCI (noir en bas)

Entre le PCIe 1.0 et 2.0, les GT/s doublent

Nous n’allons pas entrer dans tous les détails, mais le PCIe 1.0 était à 2,5 GT/s par ligne. Pour obtenir le débit utile, il faut multiplier les GT/s par l’efficacité du codage. Nous avons des Gb/s, que l’on divise par huit pour passer en Go/s.

Le PCIe 2.0 garde le même fonctionnement que le PCIe1, mais avec un débit brut doublé, soit 5 GT/s. Voici les calculs pour passer en Go/s (par ligne) :

  • Débit du PCIe 1.0 : (2,5×8/10)/8 = 0,250 Go/s ou encore 250 Mo/s
  • Débit du PCIe 2.0 : (5×8/10)/8 = 0,5 Go/s ou encore 500 Mo/s

PCIe 3.0 à 5.0 : nouveau codage 128/130b avec moins de « pertes »

Le PCIe 3.0 change le codage des symboles de 8b/10b à 128b/130b. Un symbole de 130 bits pour 128 bits, soit une perte de 1,5 % seulement (au lieu de 20 %). Le débit brut n’augmente qu’à 8 GT/s mais le débit pratique est quand même doublé. Avec le PCI 4.0 et 5.0, le débit brut est doublé, sans autre changement.

  • Débit du PCIe 3.0 : (8×128/130)/8 = 0,985 Go/s ou encore 985 Mo/s (arrondi à 1 Go/s).
  • Débit du PCIe 4.0 : (16×128/130)/8 = 1,969 Go/s ou encore 1 969 Mo/s (arrondi à 2 Go/s).
  • Débit du PCIe 5.0 : (32×128/130)/8 = 3,938 Go/s ou encore 3 938 Mo/s (arrondi à 4 Go/s).

PCIe 6.0 à 8.0 : le débit double avec PAM-4

Le PCIe 6.0 inaugure le passage au PAM-4, pour modulation d’amplitude d’impulsion, à la place du NRZ (non-return to zero). Avec le NRZ, il n’y a que deux états (niveaux de tension) pour le signal : 0 ou 1. Facile à distinguer. En PAM il y en a davantage : trois avec PAM-3, quatre avec PAM-4, etc. PAM-4 utilise donc quatre états, par exemple 00, 01, 10 et 11. Au lieu d’un bit, le signal en transporte deux bits.

Comparaison entre NRZ et PAM4, crédits : Rambus

Le débit brut du PCIe 6.0 reste le même qu’en 5.0, mais PAM-4 permet de doubler le nombre de bits sans rien faire de plus. On passe donc de 32 à 64 GT/s avec le choix du PCIe d’associer les transferts aux bits (et non pas aux symboles). L’encodage passe sur 242 octets / 256 octets.

Avec le PCI 7.0 et 8.0, le débit brut est doublé à chaque fois :

  • Débit du PCIe 6.0 : (64/8)x(242/256)= 7,563 Go/s ou encore 7 563 Mo/s (arrondi à 8 Go/s).
  • Débit du PCIe 7.0 : (128/8)x(242/256)= 15,125 Go/s ou encore 15 125 Mo/s (arrondi à 16 Go/s).
  • Débit du PCIe 8.0 : (256/8)x(242/256)= 30,25 Go/s ou encore 30 250 Mo/s (arrondi à 32 Go/s).