Tous les bits de données, mettez-vous en file indienne ! Depuis une grosse dizaine d'années maintenant, tous les « vieux » bus parallèles sont remplacés par des systèmes série avec de jolis noms : USB, SATA, HDMI, PCIe. S'agit-il d'un effet de mode ou d'un véritable progrès ?
1. Contraintes mécaniques
Les bus d'interfaces cités en introduction mettent en œuvre des connecteurs permettant le raccordement de périphériques. Cela peut sembler une évidence, et pourtant ces pièces faites de métal et de plastique représentent un premier défi dans la communication. Dans l'idéal, ils doivent être petits, robustes, ne pas altérer le signal et, bien entendu, ne pas coûter trop cher. Nous sommes en droit d'imaginer que le premier critère a sonné le glas du port centronics, qui serait aujourd'hui fort disgracieux sur un laptop de 2cm d'épaisseur.
Pour les ports devant être accessibles hors d'un ordinateur, la robustesse doit être de mise ! Un connecteur compact avec de très nombreux fils est : soit fragile, soit difficile à brancher/débrancher, soit (hélas) les deux. D'ailleurs, en regardant les notices techniques de connecteurs, il y a matière à se faire peur avec des garanties données par les fabricants de quelques dizaines de cycles de connexion-déconnexion, voire parfois à peine une dizaine ! Le passage à une liaison série, avec peu de fils, réduit un peu les contraintes sur les connectiques, ce qui donne par exemple l'USB ou plus récemment le HDMI.
Mais alors, pourquoi sur les bus internes aux machines, tels que le PCI ou (feu) le PATA, la sérialisation s'est également imposée ? Probablement parce que le problème n'est pas seulement mécanico-marketing.
2. Contraintes électriques
Dans le monde idéal qui sert toujours d'introduction à l'apprentissage des principes de l'électricité et de l'électronique, les composants sont parfaits, les signaux toujours carrés ou sinusoïdaux, et l'environnement jamais hostile... Dans ce monde, les bus seraient peut-être encore parallèles. Hélas, le monde réel n'est jamais totalement numérique et de nombreux effets viennent perturber des plans pourtant si parfaits.
2.1. La diaphonie
Une définition possible pour le condensateur est de dire qu'il s'agit de deux armatures conductrices séparées par un isolant. Lorsque deux fils (conducteurs) parcourent une certaine distance côte à côte, par exemple dans un câble multi-brins, nous sommes en présence de condensateurs parasites, leurs gaines plastiques faisant alors office de diélectrique, voir Figure 1. Pour être précis, il s'agit de la capacité linéïque de la ligne. Tant que les niveaux électriques sont stables, aucun problème, le condensateur ne s'opposant qu'aux variations de potentiel. Par contre, lors de transitions, ces capacités parasites vont se charger ou se décharger, adieu les fronts droits des signaux carrés. La figure 2 montre un cas réel dans un câble nappe.
Figure 1 : Capacités parasites dans un bus
Tout conducteur traversé par un signal va rayonner autour de lui, il a un effet inductif. Si un autre conducteur est dans son environnement immédiat, il va «capter » ce rayonnement, ce qui va créer une différence de potentiel. Cette différence de potentiel (ddp) peut devenir importante, au point de créer des états considérés comme une transition sur le conducteur, avec toutes les désagréables conséquences que cela engendre.
Le fait que des conducteurs, en théorie indépendants, se perturbent, est appelé diaphonie.
Figure 2 : Atténuation des fronts : en jaune (en haut) le signal émis, en bleu (au dessous) le signal vu au bout du câble nappe
Par chance (ou génie de nos pairs), il existe des solutions pour en réduire les effets. Par exemple créer une paire torsadée avec chaque signal pour le blinder de sorte que même si les capacités parasites existent toujours, leurs effets sont globalement prédictibles et donc possibles à prendre en compte. Pour les bus planaires (sur PCB ou en câble nappe), cela revient à ajouter des fils à la masse entre les signaux, ce fut utilisé avec l'ultra-DMA pour les disques durs. Une variante est de transmettre deux signaux complémentaires au lieu d'un seul afin de mieux détecter les erreurs, méthode utilisée pour le SCSI (voir [SNLA033]). Si ces solutions fonctionnent bien, elles augmentent significativement le nombre de conducteurs, que ce soit dans les câbles ou sur les cartes.
2.2. Les ondes réfléchies
Que se passe-t-il lorsqu'un signal électrique arrive au bout d'un fil qui n'est connecté à rien ? Pour prendre un cas plus général, disons un signal parcourant un conducteur d'impédance X et qui arrive face à une impédance Y beaucoup plus grande (bout de fil «en l'air » ou entrée de certains transistors). Et bien dans ce cas, tout ou partie du signal est réfléchit et une part de son énergie revient en sens inverse dans le conducteur ! Le rapport entre l'énergie transmise et l'énergie qui revient est le coefficient de réflexion.
Figure 3 : Utilisation des ondes réfléchies PCI
Bien entendu, ce signal en retour peut provoquer des effets apparentés à de la diaphonie (sinon, ce serait trop simple).
Pour éviter cela, il faut que le récepteur ou un système tiers absorbe l'énergie résiduelle. Souvenez vous, les «bouchons » sur les câbles réseau coaxiaux, c'était ça (!) idem pour les «terminaisons » sur les câbles SCSI...
3. Le cas du PCI
Pour celles et ceux ayant lu l'article « KNJN » dans Open Silicium 5, le PCI n'a presque plus de secret, à part peut-être au niveau électrique. Parmi les bus cités en introduction, il s'agit d'un cas un peu particulier, intéressant à double titre : d'une part, dans la version bus parallèle (PCI), il utilise au lieu de subir les ondes réfléchies présentées ci-dessus, d'autre part c'est un des (trop) rares cas d'évolution où une grande partie du standard antérieur a été conservée (lors de l'arrivée du PCI-Express).
Lorsqu'un périphérique PCI place un signal sur le bus, il ne fournit que la moitié de l'énergie nécessaire à la transition, par exemple pour passer d'un « 0 » logique (la masse) vers un « 1 » logique (5V ou 3,3V). Lorsque ce signal arrive à l'autre extrémité du bus, il est réfléchi et, au retour, augmente la tension visible sur le bus. La figure 3 montre une simulation d'un tel signal. À ce titre, le PCI a été l'un des premiers bus « green » car il consomme moins d'énergie pour les transitions.
Mais, comme tous les bus parallèles, ses contraintes de fonctionnement ont eu raison de lui, après tout de même le passage de 133MB/s (PCI 32bits et 33MHz) à 533MB/s (PCI 64bits et 66MHz), ainsi qu'un extrême sursaut avec PCI-X à 133MHz. Ainsi, le bus PCI est mort, vive le PCI-Express. Il serait extrêmement réducteur de dire que le PCI-Express n'est qu'une version sérialisée de PCI, de nombreux concepts ont été ajoutés (traitement d'erreur, gestion des files de messages). Toutefois, pour cet article, seule la comparaison physique est mise en avant.
La transmission de données avec PCI-Express se fait par des liens série point-à-point au moyen de paires différentielles (comme la plupart des autres me direz-vous, USB & Co). Chaque paire offre un lien à peu près à 500MB/s (250MB/s dans chaque sens, le lien étant full duplex). Le fait d'avoir utilisé le pluriel pour parler des paires n'est pas anodin, en effet le PCI-E permet d'agréger plusieurs canaux physiques d'où les termes de x2, x4... x32 et atteindre ainsi jusqu'à environ 16GB/s.
En guise de conclusion
S'il semble évident que le passage du parallèle au série va au-delà d'un simple effet de mode, c'est principalement vrai pour les systèmes à la recherche de bande passante toujours plus importante. L'avenir qui se dessine sera peut-être fait de la parallélisation de bus série, ce qui ne serait pas dénué d'un certain côté paradoxal. À moins que d'ici-là, de nouveaux moyens de codage du signal ne voient le jour, car après tout, l'augmentation des performances ne passe pas toujours par une course à la vitesse, comme l'a montré la course au Ghz, puis au nombre de threads dans les microprocesseurs.
Référence
[SNLA033] http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=snla033&fileType=pdf