Fonction et paramètres d'un bus informatique

Auteur et date de la dernière mise à jour de la page. EC @ VI.2008
Lecture(s) conseillée(s) avant d'attaquer le présent chapitre. L'information binaire...uniquement si l'évocation du bit vous fait rougir....
Liste des mots et notions définis tout au long de cette page.

Alors voilà...

Vous imaginez sûrement l'intérieur de votre ordinateur comme un condensé de tout ce que l'intelligence humaine a pu produire comme trucs déments et ultraminiaturisés, un maëlstrom de bitoniaux électroniques et autres nanobidules à particules gamma.
C'est vrai qu'un ordinateur est une machine plutôt complexe composée de deux ou trois de ces machins là... Mais n'en déplaise à votre imagination exaltée, un ordinateur, c'est aussi un dédale de petites rues étroites et mal éclairées reliant entre eux tous ces composants insensés.

Mais comment ? Comment ces informations voyagent-elles ainsi au coeur de la machine ? Quelles voies empruntent-elles pour se rendre si rapidement d'un point à un autre ?
Très simple: elles prennent des busNe sourit pas comme ça bêtement, lecteur incrédule..

Mais attention ! Ce terme générique, presque trop simple, masque l'immense diversité des voies zébrant l'intérieur de votre machine. En outre, malgré ce que laisse entendre cette trop légère introduction, nous intéresser aux bus de nos machines nous contraint à aller titiller des domaines aussi hostiles que les théories du signal ou l'étude des transmissions numériques.
Autant dire que la production d'une page commun-des-mortellement bitable sur le sujet tient de la gageure, voire du suicide assisté par HTML.

Allez, courage ! Prenez un ticket...de la Nautamine aussi.
Une pleine caisse.
et attachez vos ceintures. Nous allons découvrir ensemble le charme irréel des transports en commun sans odeur de sueur, ni main baladeuse, ni journée-de-mobilisation-pour-la-défense-de-l'immobilisation.

Le voyage va être long, certes, mais vous pouvez parler au chauffeur...l'hygiaphone se trouve en haut à gauche de cette page....

Un bus se présente...

Tant qu'à faire, commençons par très simplement définir ce qu'est un bus. Il sera toujours temps, ensuite, de s'attaquer à ses très nombreuses spécifications techniques.

Un bus électrique

Une fâcheuse métonymie

Voilà. Passé ce titre, nous devrions normalement être débarrassés des touristes, badauds et autres peigne-zizis. Bref, le moyen idéal pour se retrouver entre gens sérieux et courageux, prêts à suer abondamment dans tous ces bus parfaitement non-climatisés.
Le voyage risque d'être long, autant que la compagnie soit bonne...

Répétons-le encore une fois: l'ordinateur raisonne en binaire...un petit lien, juste si vous n'étiez pas au courant.... L'information, quelle que soit sa nature, consiste pour lui en de longues séries de bits généralement organisés en octets.
D'un point de vue très pratique, à l'intérieur de la machine, ces bits se matérialisent par des signaux électriques: à une certaine tension (en volt) correspond un bit de valeur "0", à une autre tension correspond un bit de valeur "1".
 

Le bit, version électrique.

(Décidément, cette animation là aura été rentabilisée...)

Bien évidemment...oui, ça serait tellement trop pratique..., vous vous doutez que dans la galaxie informatique, les conventions de tensions correspondant aux bits "1" et "0" ne sont pas partout les mêmesDe fait, ces variations sont principalement dues aux différentes technologies utilisées pour la conception des transistors chargés de manipuler ces bits.. Mais que ceci ne nous trouble pas: la "traduction électrique" des bits ne constitue qu'un simple choix technologique et ne change absolument rien au fait qu'un bit, petite chose bivalente, se trouvera toujours matérialisé par deux niveaux distincts de tension.

Pour celles et ceux qui voudraient se tenir davantage au courant sur le sujet, un délicieux petit tutorielOui, c'est en anglais. Mais lu par un informaticien d'origine indienne, ce qui aide quand même bien à comprendre l'anglais quand on ne l'est pas..., tout en sons et lumières.


Ceci rappelé, la définition d'un bus informatique est à peu de chose près celle du Petit Bob:

BUS (nom masculin): véhicule chemin automobile électrique destiné au transport en commun des voyageurs bits, dans les villes ordinateurs.

Oui, bon, à peu de choses près quoi...

Et bien ne cherchez pas plus loin ! Un bus informatique, ce n'est que ça: un simple chemin électrique reliant entre eux des composants électroniques appelés à communiquer.
Ainsi, dès lors qu'un composant émetteur désire transférer une information vers un composant récepteur, il "place" les bits composant celle-ci sur le bus et laisse tranquillement faire la nature conductrice du métalEt oui. Pas de bus sans un excellent conducteur...
Normal.
jusqu'à son destinataire.

Two bits or not two bits ?

Alors c'est tout ? Chaque bit est donc bêtement transmis sur un bus par une simple impulsion électrique d'une amplitude correspondant à la tension qui lui est associée ?
Heu... Disons que s'en tenir à cette vision limpide arrangerait bien l'auteur de cette page... mais les pinailleurs veillent et le contraignent à ajouter dans un demi soupir: "Hélas... Pas toujours..."

Ah bon ? C'est donc l'inverse alors: un bit "1" sera transmis avec une tension correspondant à un bit "0" et vice versa. C'est ça ?
Heu... pas exactement non plus...
Et bin alors ? Existerait-il d'autres bits que nos deux bits "0" et "1" ?
Heureusement, non. En fait, un bit "1" sera bel et bien transmis sur le bus sous forme de bit "1"... ou alors de bit "0".
? ? ?

Et pourtant si. Sur certains bus, avant d'être transmise, toute séquence binaire doit auparavant être codée en une autre séquence, également parfaitement binaire. Ce n'est que cette seconde séquence qui sera effectivement envoyée sur le bus, le récepteur se chargeant de la décoder afin de reconstituer la séquence originelle.
Pour ne rien simplifier, il existe différents types de ce codage dit "en bande de base" (NRZ, Manchester, bipolaire...), chacun doté d'avantages et inconvénients bien spécifiques !

Evidemment, une question s'impose: pourquoi une telle débauche d'énergie pour transformer une séquence binaire en une autre séquence binaire, juste le temps d'un transfert sur le bus ?
La raison est excellente, quoiqu'une explication satisfaisante nécessiterait une plongée en apnée dans les profondeurs de la théorie du signal. Disons, pour faire très simple, que ce codage intermédiaire a deux principaux buts: d'une part faciliter la synchronisation des échanges...dont nous dirons quelques mots bientôt... sur le bus, et d'autre part exploiter de manière optimale les lois de l'électricité qui régissent tout support physique amené à être parcouru par des courants à haute fréquence.

Bon... d'accord, c'est un peu léger comme explication, mais nous vous demanderons de nous croire sur parole sur ce coup là... Pour les autres, ce site génialissime ...lien vers le fabuleux site de M. Perez-Mas, un modèle de clarté et de pédagogie. Si formidable, d'ailleurs, que l'auteur de cette page-ci s'est longtemps demandé s'il valait le coup de s'attaquer à un sujet déjà si bien traité... étanchera plus que parfaitement leur soif de savoir.
De toute façon, la séquence binaire originelle se trouvant automatiquement recodée au niveau du récepteur, nous pouvons à la limite continuer la lecture de cette page en zappant allègrement l'existence de ces bits de transit, un peu mystérieux sur toute la ligne...

La métonymie pour les nuls

En rhétoriqueArt ancien, aujourd'hui remplacé par le langage SMS..., une métonymie est un procédé du langage par lequel on exprime une idée en se servant d'une autre idée qui lui est par nature liée. Ainsi, lorsque vous dites "Deux secondes, je finis mon assiette !", vous faites une métonymie d'excellente facture en désignant espièglement le contenu (la nourriture) par son contenant (l'assiette)...et de même pour "Le stade s'est mis à chanter", "Pilou, deux mousses steplait !" ou encore "Tiens, les bus sont pas en grêve aujourd'hui ?"...Délicieux exemples de métonymies saisis pêle-mêle lors du dernier atelier philo au comptoir du Beauséjour....

Alors comme ça "bus = chemin" ?
Et oui. Et vous comprenez maintenant tout le sens du titre énigmatique de ce chapitre. En désignant par "bus" le chemin physique qu'empruntent les informations binaires pour se rendre d'un point à un autre, l'informaticien voulait sûrement prouver au monde que lui aussi était capable de facétie.
Il cherchait une amusante métaphore, il n'a trouvé qu'une fâcheuse métonymie.

Précisons d'emblée que, de par notre définition volontairement minimaliste du bus, il serait tout à fait légitime de qualifier de bus tout support physique de mise en communication d'ordinateurs entre eux. Néanmoins, afin qu'un page exhaustive sur ce sujet ne bouffe à elle seule tout l'espace d'hébergement dévolu au site, nous nous limiterons ici à une interprétation "intimiste" du bus et ne nous intéresserons donc qu'aux bus circonscrits à l'intérieur de l'ordinateur ou reliant celui-ci à ses périphériques...c'est-à-dire tous ces dispositifs qui viennent s'y brancher: clavier, souris, imprimante, etc..

Ligne de bus et caténaire(s)

Bien évidemment, vous vous doutez qu'un bus est un peu plus complexe qu'un bête fil électrique. D'ailleurs, le fil en question est plus élégamment appelé ligne de bus (bus wire).

Tout bus est composé d'un nombre très variable de lignesNous comprendrons pourquoi une telle hétérogéneité demain ou après-demain... - de quelques-unes à plusieurs dizaines - chacune capable de transporter un bit à la fois, la valeur de ce bit se traduisant par l'amplitude de la tension électrique sur cette ligne.

L'activité électrique sur une ligne de bus peut être facilement schématisée à l'aide d'un chronogramme (timing diagram), simple représentation graphique de la variation de la tension en fonction du temps. Ainsi, au gré de la valeur des bits véhiculés sur la ligne, la tension sur celle-ci oscillera entre une valeur haute (bit "1") et une valeur basse (bit "0").

Comment appeler un signal non-numérique ?

Heu... Un signal littéral ?
Amusant. Un signal non-numérique, c'est-à-dire un signal dont les variations sont continues au cours du temps est plutôt qualifié de signal analogique, à l'image de tous les stimuli physiques de notre "monde sensible" (sons et images).

Ce signal transmis sur le bus est qualifié par les experts de signal numérique, car sa caractéristique remarquable est de varier de manière discontinueIci, entre une tension convenue pour un bit "1" et une tension convenue pour un bit "0", sans aucune valeur intermédiaire. au cours du temps.
 

Chronogramme d'une ligne de bus.

Comme vous pouvez le constater, la tension électrique sur une ligne de bus oscille entre deux valeurs selon la nature du bit qu'elle véhicule.

On appelle front montant (rising edge) une transition 0→1 et front descendant (falling edge) la transition inverse 1→0.

Les lignes de front sont inclinées afin d'illustrer le fait que les transitions ne sont pas instantanées, de par l'existence d'un certain délai nécessaire au bit pour passer d'une tension à l'autre...oui, il ne faut jamais brusquer ces moments là..., mais cette inclinaison est ici volontairement exagérée par rapport aux délais réels.
 

Ligne "simple caténaire"

Il faut bien le reconnaître: notre chronogramme ci-dessus est quand même un peu naïf..."Idéal" diront les diplomates.. Les tensions y sont bien trop lisses, les commutations bien trop nettes pour être honnêtes.

En effet, l'activité électrique réelle sur nos lignes de bus est loin d'être aussi propre que ne le laisse entendre notre chronogramme. Dans la pratique, divers phénomènes perturbateurs viennent déformer notre signal électrique: diaphonie (crosstalk), interférences, bruit, parasites, friture...par ordre décroissant de pouvoir épatogène......

Dès lors, une lourde menace pèse sur nos lignes: si ce bruit est trop important, et si l'écart entre les deux niveaux de tension choisis pour matérialiser les bits "0" et "1" est trop faible, des erreurs d'interprétation du signal sont fortement prévisibles.

Evidemment, les bus conçus sur ce principe de "caténaire unique", ou - plus scientifiquement - de transmission asymétrique (single-ended) sont les plus simples et les moins coûteux à fabriquer, mais ce problème de perturbations parasites reste quand même fort chagrinant...

Fort heureusement, il existe une astuce très simple à comprendre afin de minimiser l'impact du bruit sur nos lignes de bus: il suffit pour cela de doubler le trafic...procédé qui ne marche hélas pas avec les mobylettes... !

Ligne "double caténaires"

En effet, au lieu d'utiliser un seul fil entre notre émetteur et notre récepteur, doublons la ligne. Sur la première, continuons d'envoyer notre signal originel, et sur l'autre, par un habile tour de passe-passe d'électronicien, envoyons un signal complémenté.

En clair, si un bit "1" est transmis sur la première ligne, un bit "0" est simultanément transmis sur la seconde - et vice versa.

De par la proximité des deux lignes, si une perturbation survient, elle touchera celles-ci d'une manière similaire. A l'autre bout du dispositif, il suffira dès lors au récepteur de prendre en compte non plus la tension sur l'une des lignes, mais la différence de tension entre les deux lignes et le bruit sera, comme par magie...oui, bon, une simple soustraction en fait..., quasi gommé.

Sans surprise, ce type de transmission est qualifié de transmission symétrique, ou encore transmission différentielle (differential).
L'ingénieux procédé a, certes, un coût non négligeable...puisqu'il faudra ici doubler le nombre de lignes électriques du bus., mais son immense avantage est qu'il permet de concevoir des bus pour lesquels l'amplitude des deux tensions "utiles" peut être sensiblement moins élevée, écourtant le délai de commutation entre les deux niveaux et, ce qui ne gâche rien, réduisant de manière significative les interférences causées et subies par les lignes.
 

Activité électrique sur une ligne de bus à transmission symétrique et différentielle.

Cliquez sur les boutons afin de visualiser le(s) chronogramme(s) d'une ligne à transmission symétrique et asymétrique.

Comme vous le voyez, le bruit, qu'il soit provoqué par des phénomènes physiques bien connus (diaphonie, inductions électro-magnétiques...) ou de simples contingences matérielles (infimes variations de tension, caractéristiques physiques du support de transmission...) se superpose au signal originel pour former un signal réel beaucoup moins "fluide".

En ce sens, un chronogramme est donc une vision idéalisée de l'activité électrique réelle sur la ligne.

Constatons, heureux(ses) et soulagé(e)s, que la tension différentielle mesurée au niveau du receveur est quasi débarrassée de ses impuretés.

Bien évidemment, on remarquera que les conventions de tensions matérialisant nos bits ne sont plus les mêmes au niveau du récepteur, mais cela n'a aucune importance, l'essentiel étant que le récepteur reçoive désormais un signal clair, sans aucune ambiguïté.
 

Comme quoi colporter tout et son contraire a parfois du bon...
 

Le bus idéal

Un bus, organe essentiel de communication, se caractérise - comme nous le verrons - par une foultitude de données techniques, mais son efficacité globale peut se jauger à deux simples caractéristiques élémentaires.

Débit de bits, débit de bus

Après la métonymie, l'allitération...

Puisque le seul et unique rôle d'un bus est le transport de bits, il est somme toute logique que son efficacité "brute" puisse être évaluée grâce à son débit binaire (binary throughput) qui mesure la quantité de bits pouvant y transiter par unité de temps.

Tout naturellement, ce débit, rapport d'une quantité d'information par unité de temps, se calculera en bits par seconde, ou en octets par seconde.
...ou en leurs superunités. En effet, la technologie humaine ayant fait quelques progrès ces derniers temps, le débit de nos bus s'exprime désormais plus fréquemment en Mo/s...méga-octet par seconde. Unité, rappelons-le, spécifiquement francophone et donc très mal vue auprès des élites internationales qui lui préfèrent le très consensuel MB/s (megabyte par seconde). - voire même en Go/s...giga-octet par seconde. Oui, verboten aussi....

Notons, en passant, qu'il n'est pas rare de croiser le terme de bande passante (bandwidth...mot anglais lui-même fort mal utilisé puisque correspondant à notre "largeur de bande" française...) utilisé comme synonyme de débit binaire. L'expression, quoique parfaitement mal à propos, est cependant si usuelle que nous nous devions de la mentionner sur cette page...qui, de toute façon, n'est pas un modèle de rigorisme scientifique non plus....

Fourier, Nyquist et toute la bande (passante)

De par votre nature, vous êtes une personne rigoureusement exigeante sur le sens précis des mots et vous ne supportez plus d'entendre parler de "bande passante", grandeur expressément hertzienne, pour évoquer le débit d'un bus.
Vous avez parfaitement raison.
Mais que voulez-vous, l'informaticien est un être un peu foutraque qui ne respecte vraiment rien...ce qui lui a d'ailleurs fermé au nez la porte des grandes écoles....
Une autre preuve ? Lisez cette tentative d'explication quant à la douteuse synonymie entre débit binaire et bande passante...
Joseph Fourier [1768-1830], tueur en séries.

Bon. D'abord un poil d'histoire, ça détendra tout le monde...
Au début du XIXème siècle, le mathématicien français Joseph Fourier [1768-1830] achète un ticket pour la postérité en montrant brillamment, suite à ses expériences...qui ne consistaient aucunement en l'observation de quelconques bits, mais plutôt en l'étude de la propagation de la chaleur dans un solide, le sieur Fourier étant de nature assez frileuse., que toute fonction périodique peut être décomposée en une suite de fonctions trigonométriques...un lien magistral, juste pour les grands déments qui voudraient creuser la chose... dont il va jusqu'à donner l'équation générale. Au fil des années et des génies, la théorie est consciencieusement enrichie, jusqu'à ce que - nirvana mathématique - on finisse par découvrir qu'un poil modifiée...d'où le petit nom de "transformée de Fourier" donné à la chose..., cette vérité première s'étend avec bonheur à toute fonction, même non périodique.

Heu...oui... Et mes bits ?
Mais ne voyez-vous pas, malheureux(se) ? Qu'est-ce donc qu'un transfert de bits sur nos bus si ce n'est la matérialisation d'une fonction associant à chaque instant t une tension électrique V=f(t) ? Conséquence implacable: toute activité sur nos bus peut donc être décrite comme une somme plus ou moins fastidieuse de fonctions sinusoïdales, chacune associée à une fréquence donnée dont l'ensemble constitue le spectre fréquentiel du signal. Ceci compris, on appellera largeur de bande du signal la différence entre la plus haute et la plus basse de ces fréquences...ou du moins, le spectre pouvant être infini, les extrêmes jugés significatifs de celui-ci....

Bien. Rappelons maintenant la définition orthodoxe d'une bande passante: "intervalle de fréquences pour lesquelles la réponse d'un appareil est supérieure à un minimum".
"Intervalle de fréquences". Des hertz, donc. Aucune contestation possible.
Ici, notre appareil a beau être un simple conducteur électrique, celui-ci présente lui aussi une bande passante en bonne et due forme. Par conséquent, tout signal de fréquence extérieure à cet intervalle...c'est-à-dire de fréquences inférieures ou supérieures à cette bande passante. traversant notre support sera mal voire pas du tout transmis. Or, puisque nous venons d'entrevoir que tout signal pouvait être considéré comme une sommation de signaux de fréquences variées, il est légitime de se douter que la bande passante de notre ligne de bus risque de limiter d'une manière ou d'une autre nos vélléités de transmissions binaires...

Harry Nyquist [1889-1976], chef de bande.En 1927, le physicien américano-suédois Harry Nyquist [1889-1976] explicite définitivement la chose en démontrant que la limite maximale théorique de débit binaire sur un support "idéal" est de deux fois la bande passante de ce dernier.
Quelques années plus tard, deux collègues du nom de Ralph Hartley [1888-1970] puis Claude Shannon [1916-2001] reformulent la relation, mais en tenant compte cette fois de l'inévitable "bruit de fond" parcourant tout support de transmission. La conclusion de leur théorème démontre que, en pratique, le débit binaire maximal réel sur un tel support est finalement assez voisin...pour les tâtillon(ne)s que l'adverbe "assez" indisposeraient, la formule exacte:

Débitmax = BP.log2(1 + S/B)
...avec S/B: rapport signal / bruit de la ligne.
de la bande passante de ce dernier.

Et voilà l'informaticien a demi-pardonné...

Temps d'attente

A vrai dire, le débit binaire du bus pourrait sembler suffire à déterminer son efficacité globale. Oui mais voilà, nous verrons qu'un bus est peut-être un peu plus complexe qu'un "simple" chemin électrique et que son utilisation par un composant implique une cascade d'événements électroniques insoupçonnés.

Pour faire très simple...pour le moment., lorsqu'un composant A utilise le bus auquel il est connecté, c'est pour une transmettre une requête à un composant B également relié sur ce même bus. Or, de par le fonctionnement interne du bus...et en particulier une phase amusante que nous verrons ensemble: la phase d'arbitrage du bus., entre l'instant où un composant désire émettre une requête à destination d'un autre composant et l'instant où cette requête est effectivement satisfaite peut s'écouler un certain temps.
Ce délai moyen constitue la latence (latency) du bus.

C'est ainsi, un bus peut très bien luxueusement accueillir 200 personnes mais se faire péniblement attendre aux arrêts...

Vous vous doutez que le bus idéal conjuguerait à la fois débit maximal et latence minimale. Oui mais concilier ces deux impératifs revient à multiplier les prouesses technologiques.
Or, nous verrons que de telles performances n'ont parfois simplement pas lieu d'être...

Voies de circulation

Un bus a beau être un simple chemin électrique, toute voie de circulation, si simple soit-elle, peut néanmoins faire l'objet de quelques questions marquées au coin du bon sens...

Sens unique ou double sens ?

Dans le domaine général des transmissions, quel que soit d'ailleurs leur support...qu'il soit électrique, optique, hertzien ou par signaux de fumée..., il est d'usage de classer en trois catégories distinctes les liaisons entre éléments appelés à communiquer selon le ou les sens possible(s) de leurs échanges.
Ainsi:

  • Lorsque les échanges peuvent avoir avoir lieu dans un seul sens, toujours identique, on parle de liaison de type simplex. Dans ce cas fort simple, l'un des éléments est émetteur, l'autre simple récepteur.
  • Au contraire, lorsque les échanges peuvent avoir lieu simultanément dans les deux sens, on parle de liaison de type full duplex. Ici, chacun des éléments peut donc être à la fois et en même temps émetteur et récepteur.
  • A mi-chemin entre ces deux extrêmes, on parle de liaison half duplex quand les échanges peuvent avoir lieu alternativement dans les deux sens. Dans ce cas, à un instant donné, l'un des éléments est émetteur, l'autre récepteur - les rôles pouvant s'inverser par la suite...à l'image des talkies-walkies de notre enfance....
     
Liaisons simplex, half-duplex et full-duplex.

Sur l'animation ci-contre, même les plus distrait(e)s remarqueront que notre liaison de type full duplex est ici composée de deux supports de transmission - un pour chaque sens de communication. C'est en effet le seul moyen pour que chaque transmission dispose de la totalité du débit maximal permis par le support.

Grâce au principe du multiplexage fréquentiel...pour faire très succinct: la liaison est alors divisée en deux canaux fréquenciels virtuels, chaque sens de transmission utilisant une gamme donnée de fréquences..., Il est possible de n'utiliser qu'un seul support pour une liaison de type full-duplex, mais le débit maximal permis par le support sera alors partagé entre les deux sens de transmissions.
Evidemment.

Il y a, à ce stade, une subtilité qu'il nous faut bien comprendre: le type de transmission (simplex, half-duplex ou full-duplex) caractérise moins le support de transmission en tant que tel que la manière de communiquer des éléments qui y sont reliés. En d'autres termes, tout bus, puisque simple...mmmmouais... chemin électrique, peut parfaitement servir de support à une transmission de type full-duplex dès lors que les composants qui lui sont raccordés sont aptes à émettre et recevoir simultanément. Il y a cependant des situations où cette bidirectionnalité n'a simplement pas lieu d'être, comme par exemple la liaison entre l'unité centrale et le moniteur...qui, à moins d'être un écran tactile, n'envoie jamais aucune donnée à l'unité centrale, mais en reçoit quasi continûment. ou la souris...qui, elle, ne reçoit aucune donnée depuis l'unité centrale mais se contente d'en émettre à intervales réguliers.. Les bus mis en jeu dans de tels contextes peuvent donc parfaitement jouer leur rôle en mode simplex.

Pour reprendre la métaphore un peu niaise du chemin, une rue peut être en sens unique alors que sa largeur pourrait tout à fait permettre le croisement de deux véhicules. C'est le plan de circulation plutôt que les caractéristiques de la rue qui détermine la manière dont celle-ci sera finalement empruntée.

Chemin privé ou voie publique ?

Un bus est donc un chemin électrique reliant des composants appelés à communiquer en binaire. Bouleversant de simplicité.
Bon, c'est fini ?
Une petite question quand même, sur le pouce:

Combien de bus faudrait-il prévoir afin de permettre à dix composants de communiquer deux-à-deux ?
9
Avec neuf bus, vous reliez certes un composant avec les neuf autres, mais quid de ceux-là entre eux ?
45
Exact. Plus généralement, si l'on dédiait un bus à la communication deux à deux de N composants, il faudrait N(N-1)/2 bus pour relier tous ces composants entre eux.
Et N autres nouveaux bus au cas où nous voudrions ajouter par la suite un autre composant à l'ensemble ! Un vrai sac de noeuds...
90
Pas entièrement faux, si on considérait que tous ces bus ne fonctionnent qu'en mode simplex. Il faudrait alors deux bus pour relier chaque couple de composants: un pour chaque sens de transmission. Heureusement, la plupart des bus dont nous parlerons sur cette page seront des supports de transmission bidirectionnelle. Nous pouvons donc diviser par deux notre nombre, soit 45.
Ce qui reste quand même bien beaucoup...

Non, vraiment, ne serait-il pas possible d'envisager une vision un peu plus... communiste des choses ?

Si. De manière très facile à comprendre, on peut différencier deux grands types de bus selon le nombre de composants qui s'y trouvent reliés:

  • Si le bus est entièrement dédié à la mise en communication de deux composants, on parle alors de bus, ou plutôt de liaison point-à-point (point-to-point link)
  • Si un même bus est partagé entre plus de deux composants, on parle dans ce cas de bus multipoint (multipoint bus).
     
Liaison point-à-point et bus multipoint.

A la différence de la liaison point-à-point, le bus multipoint se voit partagé entre plusieurs composants qui peuvent, à tour de rôle, accaparer le bus le temps d'un échange.

Un seul maître

Il existe une alternative à mi-chemin entre ces deux configurations de bus: le bus multidrop. Dans ce cas, le bus est toujours partagé entre plusieurs composants, mais un seul d'entre eux est autorisé à initier les communications. Les autres composants sont dès lors réduits au rôle d'écouteurs attentifs.


Bus multipoint

La philosophie du bus multipoint est simple: tous les composants connectés au bus ont accès aux informations véhiculées sur celui-ci, mais un seul émetteur est autorisé à la fois. En d'autres termes, dès lors qu'une transmission est en cours sur le bus, les autres composants ne peuvent y intervenir jusqu'à ce que celle-ci ne s'achève.
Conséquence inéluctable: le débit total du bus se trouve de fait partagé entre tous les composants qui y sont connectés.

Branchement à chaud

Comble du raffinement, certains bus, qualifiés de bus hot plug sont conçus de telle manière à pouvoir détecter immédiatement la connexion d'un nouveau composant et à en informer dans la foulée l'ordinateur, évitant ainsi la toujours pénible corvée du reboot...terme fâcheusement anglais que l'Académie se proposerait de franciser en "ré-amorçage matériel par bicommutation électrique"., jadis requis afin que le nouvel arrivant puisse être pris en charge.

Le concept de bus partagé a néanmoins cet avantage essentiel qu'est la souplesse d'utilisation (versatility). En effet, au fur et à mesure des besoins, il devient tout à fait possible de "brancher" de nouveaux périphériques sur le bus commun, sans avoir à réarranger les composants déjà en place - atout considérable pour une informatique faisant la part de plus en plus belle aux périphériques "plug and play "...mot-à-mot: "branche et utilise". Un concept résolûment révolutionnaire dans un domaine (l'informatique) où très longtemps, la règle était plutôt "Plug and pray"....

Tout naturellement, un bus multipoint se caractérisera également par le nombre maximal de composants pouvant s'y connecter.

Liaison point-à-point

Le très grand avantage de la liaison point-à-point n'est pas une surprise: dédiée à la seule interconnexion de deux composants, la totalité du débit binaire potentiel de la liaison est entièrement dévolue aux transmissions entre ces derniers.
La contrepartie est non moins évidente: la modularité de l'ensemble est réduite à néant, l'ajout d'un composant au duo déjà formé obligeant à créer deux nouvelles liaisons point-à-point entre le nouveau et les anciens éléments.
...à moins de recourir à un dispositif intermédiaire appelé switch, dont le rôle serait d'interconnecter entre elles différentes liaisons point-à-point, sur le principe vieux comme le monde du schéma dit "en étoile".
 

Principe du switch d'interconnexion entre liaisons point-à-point.

Comme vous le voyez, le switch sert de noeud central entre toutes les liaisons point-à-point, permettant aux composants reliés à celles-ci de pouvoir communiquer entre eux.

Oui, vous avez raison , une liaison point-à-point n'a plus grand chose à voir avec un moyen de transport "en commun", d'où une légitime réticence à considérer ce type d'interconnexion comme un bus stricto sensu.
Difficile néanmoins de passer outre ce bus particulier de par son succès grandissant dans nos ordinateurs à la mode.

Le grand avantage de cette configuration est que chaque liaison entre composants et switch peut elle-même être formée de plusieurs interconnexions juxtaposées, décuplant d'autant le débit potentiel entre ces derniers. Une solution a priori performante et évolutive, donc, et par conséquent promise à un certain succès...


Nature du trafic

Un bus convoie des bits, ça nous le savons. Mais il y a bit... et bit.

Une vision simpliste des choses consisterait à imaginer un bus comme un simple moyen de permettre à plusieurs composants d'échanger entre eux des informations binaires. C'est oublier que le bus est une structure partagée, et que cet état de fait implique que, outre les bits constituant l'information proprement dite, des bits supplémentaires doivent nécessairement être échangés entre interlocuteurs afin de rendre possibles leurs échanges.

Plus précisément, il est possible de distinguer trois différents types de bits usagers sur un bus:

Question d'adresses...

Soit un bus, totalement imaginaire, pour lequel chaque accès mettrait en jeu quatre bits d'adresse. Combien d'adresses différentes serait-il possible de former ?
4
Une adresse par bit donc. Mmmouais... Peut-être serait-il possible d'utiliser un peu mieux ces quatre malheureux bits, non ?
16
Exact. C'est-à-dire 24 adresses comprises entre 0000 (tous les bits d'adresses à "0") et 1111 (tous les bits d'adresse à "1").
De manière beaucoup plus générale, on peut même dire que n bits permettront d'identifier 2n adresses différentes.
10000
Bien sûr, tout cela serait implacablement logique si nos bits pouvaient prendre dix valeurs différentes...

Voie ferrée ou autoroute ?

Ainsi donc, dès lors qu'un composant s'adresse à un autre composant sur le bus, de nombreux bits sont échangés entre les deux interlocuteurs.
Mais là, les avis divergent depuis l'invention de la route sur le meilleur moyen de procéder:

Voici donc expliquée la si grande variabilité du nombre de lignes sur nos différents bus.
 

Principes de fonctionnement des bus série et parallèle.

Notez que pour ne pas inutilement surcharger ce schéma bien simplifié, seuls les bits de donnée ont été représentés ici.

Les plus sourcilleux(ses) argueront qu'il manque un signal d'horloge à nos chronogrammes. Nous en reparlerons un peu plus tard......quand les néophytes seront définitivement rassurés qu'on ne leur veut aucun mal sur cette page...

 
A bien étudier cette animation décidément fort naïve, il serait somme toute légitime de considérer le bus parallèle naturellement plus performant que le bus série. Or, il semble que les derniers bus à la mode exploitent préférentiellement ces derniers. Voici donc matière à creuser quelque peu le sujet.

Bus parallèle

Rien de plus délicieux pour le néophyte qu'un bus parallèle: tout y est si clair, si visiblement explicite...

Comme nous l'avons vu il y a peu, tout accès au bus entraîne un échange de signaux entre composants interlocuteurs: signaux de donnée, signaux d'adresse, signaux de contrôle. Un bus parallèle a pour philosophie d'assigner une ligne dédiée (dedicated line) à chacun de ces signaux.

De fait, un bus parallèle se trouve donc composé d'un grand nombre de lignes, chacune assignée à un rôle bien déterminé. Le nombre de lignes dédiées aux signaux de donnée constitue la largeur (width) du bus parallèle. Bien évidemment, cette largeur ne s'exprimera pas en centimètre, mais en un simple nombre généralement - devinez-quoi - multiple de huit.
Comme vous vous en doutez, plus un bus parallèle sera large, et plus son débit potentiel sera important.

Ceci dit, on comprend moins encore le succès grandissant des bus de type série, puisqu'on pourrait imaginer accroître à l'envi la largeur de nos bus parallèle pour gagner mathématiquement en débit.
C'est que le bus parallèle souffre, hélas, de quelques tares regrettables dues à sa structure même:

    Co-voiturage économique

    Dans le but de pallier aux deux premiers ci-contre inconvénients, la tentation est grande pour les constructeurs de recourir au principe de la ligne multiplexée (multiplexed line). Celui-ci consiste à utiliser une même ligne pour transmettre des signaux de nature différente.
    Dans le cas du bus parallèle, le multiplexage employé est de type temporel, les signaux étant transmis à tour de rôle sur la même ligne.
    Cette technique, qui met en jeu des circuits logiques appelés multiplexeur...attendez-vous à quelques petits schémas électroniques quand même..., est très largement utilisée car très économique d'un point de vue espace et coût de fabrication, mais en contrepartie d'une baisse significative des performances puisque les lignes multiplexées, ainsi assignées à plusieurs fonctions, voient leur débit potentiel partagé en conséquence, sans compter le temps perdu par le bus à gérer les différentes commutations.

  • D'un point de vue purement physique, un bus parallèle se révèle assez encombrant...défaut majeur quand on connaît le prix du m² sur une carte électronique...;
  • D'un point de vue strictement économique, un bus parallèle est plus coûteux que son homologue série;
  • D'un point de vue technologique, un bus parallèle se montre délicat à fabriquer, la longueur et l'intégrité de ses différentes lignes devant être très rigoureusement identiques afin d'éviter la désynchronisation des signaux qui les parcourent;
  • D'un point de vue électronique, la concentration de nombreuses lignes parallèles dans un petit espace favorise la survenue d'interférences électromagnétiques susceptibles de perturber l'intégrité des signaux.

Toutes ces raisons concourrent à ce qu'un bus parallèle se révèlera surtout compétitif sur de petites distances, de l'ordre de quelques centimètres.

Retardataires et bruits de couloirs

Le bus parallèle et ses petits soucis...

Tous ces petits ennuis sont directement liés à la nature même du bus parallèle qui recourt à un faisceau de plusieurs lignes afin de véhiculer ses bits.

  • Arrivée problématique sur un bus parallèle.
    [Astérix aux Jeux Olympiques © Dargaud]
    La parfaite synchronisation de ces différentes lignes est le premier challenge. En effet, à l'émission d'une information, tous les bits composant celle-ci sont placés simultanément sur les lignes du bus, l'idéal étant que ceux-ci se retrouvent tous au même instant à leur destination. Or, des variations infimes dans les caractéristiques physiques des différentes lignes (longueur, résistivité, intégrité...) suffisent à introduire des déphasages (time skew) entre les signaux parallèles, décalages d'autant moins négligeables que le bus s'étend en longueur.
    Pour remédier à ces désynchronisations intempestives, un temps minimum de maintien des signaux...juste histoire de laisser aux éventuels trainards le temps de rallier l'arrivée . sur le bus avant la prise en compte effective de l'information transmise doit être prévu, grignotant d'autant le débit maximal potentiel du bus.
  • Comme nous l'avons déjà évoqué, d ès lors que deux câbles conducteurs cohabitent dans un espace réduit, les signaux traversés par l'un induisent d'inévitables perturbations électro-magnétiques sur l'autre, perturbations parasites regroupées sous le délicieux terme de diaphonie (crosstalk). Ces phénomènes, quoique atténuables par divers procédés techniques, restent néanmoins problématiques et constituent l'autre grande entrave au rayonnement du bus parallèle.
Un exemple de bus parallèle: le bus processeur Intel 8086.

Ignorons gaiment la grande chose grise au milieu de ce schéma...c'est un microprocesseur.
Autant dire beaucoup trop compliqué pour nous.
Pour le moment...
et concentrons-nous sur les petits carrés colorés à sa périphérie qui constituent la partie visible du bus processeur, c'est-à-dire le bus reliant le microprocesseur à la carte mère.

Ce magnifique spécimen de bus parallèle, quoique préhistorique...1978., nous permet de constater l'existence des lignes dédiées aux données, aux adresses et aux signaux de contrôle, les broches en noir étant dévolues à l'alimentation électrique de la bête.

Nous voyons par la même occasion que nombre de ces lignes sont multiplexées, c'est-à-dire partagées entre des signaux de fonction différente.
 

Bus série

Rien de plus délicieux pour le néophyte qu'un bus série: tout y est si clair, si visiblement dépouillé...

Vous l'aurez compris, le bus de type série prend le contrepied parfait de son homologue parallèle en ne mettant en jeu qu'une seule ligne de transmission pour tous les signaux...ou deux, bien sûr, si le bus est à transmission différentielle..., quelle que soit leur nature.

Les avantages du bus série sur le bus parallèle sont nombreux puisqu'il corrige l'ensemble des défaut recensés chez ce dernier: espace minimal, coût de fabrication moindre, quasi-immunité aux déphasages du signal, faible génération de perturbations diaphoniques.

Evidemment, le bus série n'est pas exempt de certains reproches dûs à sa nature. Le principal est que la fabrication (au départ) et l'analyse (à l'arrivée) de ces "paquets" de signaux nécessite des circuits électroniques supplémentaires, tant au niveau des composants émetteurs qu'au niveau des composants récepteurs.

Ces étapes supplémentaires de traitement des signaux s'ajoutent à ce constat a priori évident: comment le débit binaire d'un bus série - assuré par une seule ligne, donc - peut-il rivaliser avec le débit d'un bus constitué de N lignes parallèles  ?
La réponse est non moins évidente: en transmettant les bits au moins N fois plus rapidement !
...ce que permet un bus série en s'affranchissant des contraintes liées aux désynchronisations inter-lignes du bus parallèle.

Evidemment, être synchro tout seul, c'est tout de suite beaucoup plus simple...

Petit retour aux débits

Les différentes mesures de débits que l'on peut croiser en informatique semblent indistinctement exprimées en bits/s ou en octets/s. Existe-t-il des circonstances pour lesquelles telle unité doit être préférée à l'autre ?

Connaissant tous l'égalité fondamentale en informatique 1 octet (byte) = 8 bits, difficile a priori d'expliquer que bits/s et octets/s ne mesurent pas l'un et l'autre la même chose, à savoir un débit binaire.
Et pourtant, en réfléchissant un peu, une différence subtile singularise ces deux unités.

En informatique, un bit, nous le savons, est l'unité d'information dans le sens où rien ne peut-être décrit en moins d'un seul bitReconnaissons que "0" ou "1", c'est quand même un peu court pour exprimer quoi que ce soit.... Conséquence immédiate: toute information humainement intelligible, si petite soit-elle, se trouve généralement codée sous forme d'un ou plusieurs octets.
Par ailleurs, la présente étude de nos bus nous a permis de constater qu'un bit n'était pas nécessairement un bit de donnée. Ainsi, certains signaux échangés sur le bus correspondent à des bits d'adresse, d'autres à des bits de contrôle.

Un bus de type parallèle a ceci de remarquable que sa largeur, caractéristique connue pour un bus donné, ne recense que les lignes de donnée parmi toutes les lignes qui le constituent. Rien de surprenant, en passant, que cette largeur soit généralement un multiple d'octets. Dès lors, lorsqu'on évoque le débit d'un bus parallèle, on évoque le seul débit généré par ses lignes de donnée, et Il ne serait donc pas si farfelu de le mesurer en octets par seconde.

A l'inverse, le bus de type série recourt à une seule ligne d'interconnexion. Par conséquent, le débit binaire d'un tel bus s'apparente davantage à une mesure du trafic brut, trafic où bits de donnée et bits "administratifs" se trouvent indistinctement mêlés. Ceci compris, il serait assez cohérent de quantifier le débit d'un tel bus en bits par seconde.

En d'autres termes , on pourrait donc judicieusement considérer l'octet par seconde comme une unité de débit qualitatif, et le bit par seconde comme une unité de débit quantitatif.
... subtilité néanmoins souvent incompatible avec le déjà-mentionné esprit foutraque de l'informaticien moyen...

Question subtile

Soient un bus parallèle et un bus de type série ayant pour débits respectifs 5 Mo/s et 40 Mbit/s. Lequel de ces deux bus vous semble a priori le plus performant ?
Le bus parallèle.
Et oui ! Le débit mentionné pour un bus de type parallèle faisant référence à ses seules lignes de donnée, un tel bus permettra le transit de cinq méga-octets de données effectifs par seconde.
Le bus série.
Deux hypothèses pour expliquer cette erreur: le hasard, ou alors vous disposez d'informations complémentaires sur ce bus qu'ignore l'auteur de cette page...
Aucun: leurs performances sont strictement identiques.
Comment vous en vouloir, vous qui avez judicieusement supputé que 5 méga-octets = 40 méga-bits.
Et pourtant. Parmi les 40 méga-bits transitant chaque seconde par le bus série, combien sont des bits "utiles", c'est-à-dire des bits constituant des données proprement dites ? Impossible à savoir. Nous savons juste que parmi l'ensemble de ces bits, un certain nombre est constitué de bits de contrôle divers et que le débit de donnée effectif est donc nécessairement inférieur à cette valeur.
Le débit d'un bus parallèle, lui, ne quantifie que le trafic des seules lignes de donnée et ne souffre donc pas de cette incertitude; en une seconde, ce sont bel et bien 5 méga-octets de donnée qui transitent sur le bus, soit davantage que sur le bus de type série.

Règles de conduite d'un bus

Cette page s'éternisant de manière dramatique, il semblerait bien que nos bus, si "simples...j'en vois qui commencent à douter..." chemins électriques soient-ils, s'avèrent finalement plutôt délicats à emprunter...

Un bus a une fonction fort simple: la mise en communication de plusieurs composants. Mais ce rôle médiateur implique que certaines règles soient clairement définies et partagées entre ces derniers. L'ensemble de ces règles constitue le protocole du bus (bus protocol), comme le définit fort bien, ici aussi, notre Petit Bob de référence:

PROTOCOLE (nom masculin): recueil de règles à observer en matière d'étiquette, de préséances, dans les relations officielles.

...contentons-nous simplement d'ajouter: "entre composants interconnectés à un même bus", et la définition sera parfaite.

Bon. Tant que nous y sommes, passons en revue quelques-unes de ces règles du code de la ligne.

Priorités adroites

Structure par nature partagée entre plusieurs composants, le premier souci d'un bus est d'éviter la cacophonie entropique ou, en termes clairs, que tout le monde "parle en même temps". Ce souci fort légitime rend indispensable la conception d'un dispositif de contrôle de l'accès au bus, qui soit chargé d'assurer l'arbitrage (arbitration) des différentes demandes d'accès au bus.

Une fois qu'un composant a obtenu l'accès au bus, il devient maître du bus (bus master) le temps de sa requête; il contacte alors son interlocuteur, dès lors réduit au rôle d'esclave (slave) et procède à l'échange d'information prévu.

En théorie, un arbitrage idéal se devrait d'être tout à la fois:

  • Hiérarchisé. Certains composants se révélant fonctionnellement plus exigeants que d'autres en terme d'accès au bus, il serait judicieux de pouvoir accorder des niveaux de priorités aux différents composants reliés au bus.
  • Juste. Les composants prioritaires ne devraient pas pouvoir accaparer le bus et empêcher toute intervention des composants moins prioritaires sur le bus.
  • Fiable. Le contrôleur de bus devrait pouvoir isoler un composant éventuellement défectueux ou déconnecté du bus et poursuivre correctement sa tâche.
  • Prompt. La phase d'arbitrage de l'accès au bus ne devrait pas trop pénaliser la fluidité des échanges et, par conséquent, augmenter trop sensiblement la latence du bus.

Différentes techniques d'arbitrage existent, plus ou moins conformes à ce cahier des charges idéal. Elles se déclinent en deux catégories: arbitrage centralisé (centralized) ou arbitrage distribué (decentralized) selon que la gestion des requêtes est assurée par un dispositif matériel particulier - dès lors appelé contrôleur de bus (bus controler) - ou déléguée à chacun des composants par le biais de lignes de contrôle dévolues à cette tâche.
 

Type d'arbitrage Principes généraux Avantages et inconvénients
Centralisé par scrutation
(polling)
Le contrôleur de bus attribue à tour de rôle à chaque composant un droit d'accès au bus, que celui-ci ait émis une requête ou pas. Simplicité de conception
Aucune prise en compte des priorités
Centralisé par chaînage
(daisy chain...littéralement "guirlande de pâquerettes" ou plutôt, dans ce contexte totalement dénué de poésie, "connexion en boucle"...)
Chaque composant du bus est relié au contrôleur par une ligne requête (request), une ligne autorisation (grant) et, éventuellement, une ligne d'occupation (busy). Le composant désirant accéder au bus active la ligne request. Le contrôleur central identifie le demandeur via la ligne grant en débutant sa recherche par le composant le plus prioritaire. Si celui-ci est le composant requérant, il prend le contrôle du bus. Sinon, il transmet l'autorisation au composant suivant dans la chaîne de priorité. [voir animation] Prise en compte des priorités
Assignation physique des priorités (la place du composant sur le bus détermine son niveau de priorité)
Equilibre délicat à trouver entre hiérarchie...envers les composants prioritaires. et justice...envers les composants les moins prioritaires..
Centralisé parallèle Ici, chaque composant possède ses propres lignes request et grant le reliant directement au contrôleur. Celui-ci centralise les différentes requêtes, établit les priorités selon un algorithme qui lui est propre, et accorde directement l'accès au bus aux composants demandeurs, qui activent la ligne busy le temps de l'accomplissement de leur requête. Prise en compte des priorités
Priorités indépendantes de l'assignation physique
Multiplication des lignes de contrôle
Distribué par chaînage Ici, la tâche du contrôleur de bus est déléguée à chaque composant, chaîné au suivant par la ligne grant. Le composant désirant accéder au bus interrompt ce chaînage et, si la ligne d'occupation est libre, prend contrôle du bus. [voir animation] Prise en compte des priorités
Simplicité du câblage
Chaque composant doit disposer du circuit d'arbitrage
Les différents types d'arbitrage de bus.

 

Exemple d'arbitrage centralisé de type "daisy chain" .

Cliquez (quel que soit le moment) sur les différents composants pour lesquels vous voulez émettre une requête d'accès au bus afin d'étudier la technique d'arbitrage.

Nous constatons qu'en absence de ligne d'occupation, le composant ayant terminé son accès au bus continue de propager le signal grant le long de la chaîne. Si, entretemps, un composant plus prioritaire a émis une requête, il doit attendre que les composants situés en aval de la chaîne de priorité soient consultés et que le signal revienne à l'arbitre afin que soit lancée une nouvelle chaîne de requête.

Dans sa version avec ligne d'occupation, le composant maître active la ligne busy le temps de son accès au bus. Une fois celui-ci terminé, le composant rend directement la main à l'arbitre en désactivant la ligne d'occupation.
Avantage évident: une éventuelle requête prioritaire peut être immédiatement satisfaite, mais en cas d'usage intensif du bus par les composants les plus prioritaires, les composants les moins prioritaires peuvent se trouver littéralement privés d'accès au bus.

Exemple d'arbitrage décentralisé de type chaînage.

Cliquez (quel que soit le moment) sur les différents composants pour lesquels vous voulez émettre une requête d'accès au bus afin d'étudier cette technique d'arbitrage.

A l'image de l'arbitrage de type daisy chain avec ligne d'occupation, dont il est assez proche, ce mécanisme d'arbitrage fait la part belle aux composants les plus prioritaires, laissant planer la menace de famine (starvation) sur les composants les moins prioritaires.

Bien ! Maintenant que nous avons notre maître et notre esclave, ça va cravacher...
 

Titres de transport

Comme nous l'avons déjà laissé entendre, le transfert de données sur un bus n'est pas une opération "ponctuelle" dans le sens où ce transfert n'est en réalité que la dernière étape d'une succession ultra-codifiée d'échanges de signaux entre le composant maître du bus et son esclave.
L'ensemble de ces échanges impliqués par une requête sur le bus constitue ce qu'on appelle une transaction (transaction).

Le protocole d'un bus définit précisément les différents types de transactions autorisées sur ses lignes. Les transactions de lecture (read) et d'écriture (write) sont bien évidemment les plus fondamentales mais d'autres peuvent également être prévues, comme des transactions combinées...comme par exemple "lecture-modification-écriture" ou encore "lecture-après-écriture"..., ou, très performantes lorsque le volume de données à échanger est important, des transactions de transfert par blocs (block transfer) plus connues sous la belliqueuse expression de mode rafale (burst mode).

Le protocole du bus a charge de définir, pour chacun des types de transactions prévues sur le bus, le séquencement des échanges entre le maître et son esclave.

Et là, pour changer, les avis divergent sur la meilleure façon de procéder...

Bus ou navette ?

Vous n'imaginez pas les trésors d'intelligence que nécessite la tenue d'une simple conversation entre personnes civilisées: politesse dans les présentations, sens de l'écoute et de la répartie, pertinence, psychologie, finesse... bref, tout ce dont est incapable un composant électronique.

Et oui, ce qui semble si naturel à l'être humain constitue de fait le principal souci d'un composant relié à un bus qui s'avère infoutu, malgré les trésors de technologie dont il est truffé, de répondre à cette double mais basiquissime question: "Quand parle-je ? Quand reponds-je ?"

Protocole de type synchrone: Bus tops

Sur un bus synchrone (synchronous bus), tous les échanges sont déclenchés par un "top" délivré par un signal périodique partagé par tous les composants interconnectés.
Dans un ordinateur, ce rôle de métronome ultra-précis est dévolu à l'horloge (clock) du système. Ce signal d'horloge peut être utilisé tel quel mais peut aussi être multiplié ou divisé afin d'obtenir un signal respectivement plus rapide...comme c'est le cas au niveau du bus processeur (nous y viendrons)... ou plus lent...comme c'est le cas au niveau des bus d'extension (nous y viendrons aussi)... qui détermine alors la fréquence de fonctionnement du bus (bus frequency).

Une horloge carrée

Petit rappel à destination de celles et ceux qui confondraient signal d'horloge et coucou suisse...

Une horloge sert habituellement à la mesure du temps Aucune raison qu'il en soit autrement pour un ordinateur.
Quelques différences toutefois: alors que nos horloges égrénent des minutes, au mieux des secondes, l'horloge de l'ordinateur moderne égrène plutôt des nanosecondes (1 ns = 0,000000001 s). Inutile par ailleurs d'espèrer lire l'heure sur l'horloge de votre pécé car celle-ci ne dispose ni d'aiguilles ni d'aucun affichage d'aucune sorte puisque son rôle, à la différence de nos montres, n'est absolument pas d'indiquer l'heure ni chez vous ni à Taiwan, mais de cadencer le temps qui passe, et ce, le plus exactement possible.

D'un point de vue technique, cette horloge se présente sous la forme d'une très fine lame de quartz scientiquement taillée puis enchâssée sur la carte mère. Le fait est que lorsqu'il est soumis à une tension électrique, ce cristal se met à joyeusement osciller par effet piézo-électriqueHoula ! Le temps se couvre on dirait... à une fréquence sinusoïdale très régulière...mais alors très.. Quelques accumulateurs, bascules et autres joujoux d'électroniciens judicieusement placés vont alors transformer ce signal analogique en un parfait signal d'horloge, numérique et carré, qui servira de métronome idéal à tous les bitoniaux électroniques cachés dans votre tour.
 

Chronogramme du signal d'horloge.

Un cycle d'horloge correspond à l'intervalle de temps compris entre deux fronts montants.

Comme vous vous en doutez, la fréquence réelle du signal d'horloge d'un ordinateur est un chouia plus élevée que sur cette animation...basée sur le signal d'horloge d'un distributeur de billet de la SNCF....

 

Sur un bus de type synchrone, ce signal d'horloge a deux rôles essentiels:

  • Tous les composants reliés au bus se servent de ce signal pour connaître le moment précis où ils doivent vérifier l'état des différentes lignes de contrôle du bus. Généralement, ce moment précis correspond au front montant du signal d'horloge;
  • Chaque type de transaction réclame un nombre déterminé de cycles d'horloge, généralement un seul dans le cas de transactions simples (lecture ou écriture).

Bon, d'accord... Essayons d'être un moins académique et beaucoup plus explicite.
Imaginons un composant quelconque désirant effectuer une transaction en lecture sur un bus de type parallèle. Celui-ci place les bits de l'adresse désirée sur les lignes d'adresse et active le signal de lecture sur une des lignes de contrôle du bus. Rien ne se passe jusqu'au prochain front montant du signal d'horloge. Ce n'est qu'à cet instant, en inspectant les lignes de contrôle du bus, que les autres composants liés au bus - et plus particulièrement le composant concerné par la requête - prennent effectivement connaissance de la requête.
Une fois sa requête transmise, le composant maître ne se soucie aucunement des états d'âme du composant chargé de lui répondre. Après un nombre de cycles d'horloge expressément défini par le protocole, le composant maître va docilement lire les lignes de donnée du bus. Normalement, si tout fonctionne comme sur des roulettes, le composant esclave les a mis à jour entretemps avec la donnée réclamée.
 

Cadences infernales

Nous venons de vous dire que les échanges de donnée sur un bus avaient lieu aux seuls fronts montants du signal d'horloge. Mais c'est sans compter sur les différentes techniques regroupées sous le très distingué vocable de "pumping".
Ainsi, certains bus permettent ces transferts à la fois aux fronts montants et descendants de ce signal. De tels bus, évidemment deux fois plus performants, sont qualifiés de bus DDR (Double Data Rate).
Plus forts encore, certains bus permettent même jusqu'à quatre transferts par cycle d'horloge. Ceux-ci, baptisés bus QDR (Quadruple Data Rate), recourent dans ce cas à deux signaux d'horloge en déphasage de 90°.
Bien évidemment, de tels bus sont réservés aux composants les plus performants...puisqu'il leur faut pouvoir répondre à de telles cadences de travail... et les plus sollicités de l'ordinateur.

Un bus de type synchrone est fort simple à concevoir, mais il souffre d'un très lourd handicap: sa rigidité. En effet, tous les composants reliés à un tel bus doivent être à même de pouvoir satisfaire toute transaction dans le nombre de cycles d'horloge fixé par le protocole; c'est une exigence minimale. Mais si l'un de ces composants se révèle plus performant que ce minimum requis, il ne peut être exploité à sa pleine puissance, puisque contraint d'obéir aux contraintes temporelles fixées par le protocole.

Il existe un moyen simple de contourner ce problème: il suffit pour cela d'ajouter une ligne de contrôle au bus. Lorsque le composant esclave reçoit une requête, il active cette ligne d'attente et ne l'inactive que lorsqu'il a effectivement achevé la requête demandée. Au prochain front montant du signal d'horloge, le composant maître sait alors que sa requête est satisfaite et qu'il peut lire les données valides sur le bus.

Un tel bus, plus tout à fait synchrone, est alors qualifié de bus semi-synchrone (semi-synchronous) puisque un ou plusieurs cycles d'attente (wait states) peuvent s'écouler entre la formulation d'une requête et sa réalisation effective, mais en contrepartie, des composants de performances sensiblement différentes peuvent désormais partager le même bus, sans que les composants les plus lents n'entravent les composants les plus rapides.

Questions de robinet

Quel sera le débit maximal théorique d'un bus parallèle synchrone de largeur 16 bits fonctionnant à la fréquence de 8 MHz ?
15,26 Mo/s
Hola ! Il semble que nous tenons là un vieux briscard de l'informatique !
C'est vrai qu'on a très longtemps...et très logiquement d'ailleurs... considéré qu'un méga-octet équivalût à 1.048.576 octets (soit 1.024²) - Mais il s'est trouvé, voici quelques années déjà, quelque esprits chagrins pour déplorer que des préfixes décimaux puissent ainsi s'appliquer à des puissances de deux. Les grands normalisateurs l'ont donc décrété très officiellement en l'an de grâce 1999: 1 kilo-octet = 1.000 octets, et foin de la logique binaire !
Si vous voulez rire, vous pouvez toujours allez faire un tour ici pour découvrir le nouveau nom de nos anciennes unités de naguère...
16 Mo/s
Well done ! Ce bus fonctionnant à la fréquence de 8 MHz, 8.000.000 cycles d'horloge s'écoulent chaque seconde, chacun de ces cycles étant susceptible de permettre le transfert de 16 bits, c'est-à-dire 2 octets. Le débit maximal théorique d'un tel bus est donc de:
     8.000.000 x 2 = 16.000.000 octets/s - soit 16 Mo/s.
128 Mo/s
Et que je te prends le 8, et que je te prends le 16, et que je te mulitplie tout ça... et que je me plante....
128 MB/s
Vous avez parfaitement le droit de ne tenir aucun compte de nos précieux conseils et de libeller le débit d'un bus de type parallèle en bits/s plutôt qu'en octets/s. Mais tâchez alors de ne pas confondre le symbole "B", signifiant "byte" (et donc octet) avec le symbole "bit".
128 Mbits/s aurait donc été somme toute valable. Mais pas 128 MB/s, qui représente un débit huit fois supérieur.

Un débit peu crédible

Maintenant que vous savez tout - ou presque - de ce qui se passe sous le capot de nos bus, vous ne serez pas surpris(e) de lire que cette formule ne nous donne qu'un débit théorique. Il faudrait en effet, pour que celui-ci soit effectif, que chaque cycle d'horloge soit le théâtre d'un transfert de donnée, ce qui supposerait que le bus tourne à plein régime, et que la latence de chaque transaction soit nulle.

C'est en effet le bon côté du bus parallèle de type synchrone: on peut très facilement calculer son débit maximal théorique par la formule simple:

DMT = Fréquence de fonctionnement x Largeur

...en n'oubliant surtout pas de multiplier par deux cette valeur pour un bus de type DDR, et par quatre pour un bus de type QDR.

Protocole de type asynchrone: Bus tope

Aucune surprise lorsque vous apprendrez que l'alternative au bus de type synchrone est le bus asynchrone (asynchronous bus). Comme son nom l'indique, aucune horloge sur un tel bus pour cadencer les échanges entre ses hôtes. Dès lors privés de cette référence temporelle, ceux-ci doivent s'entendre directement entre eux afin de procéder à tout contact sur le bus.

Comme au bistrot, la meilleure façon de procéder afin de lancer une conversation reste encore la franche poignée de main (handshake) sauf que dans le cas d'un bus, c'est moins une poignée de main que l'on s'échange qu'une poignée de bits, deux pour être précis, et sur deux lignes de contrôle supplémentaires: une ligne "requête" (request) et une ligne "accusé de réception" (acknowledgment).

Dès que le maître a validé sa requête sur les lignes d'adresse et, éventuellement...pour une transaction en écriture., de donnée, il active la ligne request afin de signifier à l'esclave sa demande. Celui-ci en prend connaissance, s'exécute, puis une fois la requête effectivement satisfaite, active à son tour la ligne ackowledgment afin d'avertir le maître que tout est prêt et qu'il peut venir glaner sur le bus les informations désirées.

Comme nous le voyons, le bus de type asynchrone ne repose plus du tout sur un quelconque principe de temporalité, mais bel et bien sur un principe de "cause à effet", tout signal sur le bus étant à la fois la conséquence d'un signal précédent et la cause du signal suivant.
Un bus de type "réaction en chaîne", en quelque sorte.

A l'opposé du bus synchrone, l'immense avantage du bus asynchrone est sa souplesse, des composants de rapidités très variables pouvant partager le même bus sans que les plus lents n'handicapent les plus rapides. En contrepartie, un tel bus s'avère plus délicat à concevoir, de par les lignes de contrôle supplémentaires que son fonctionnement implique.
Autre conséquence accessoire: le débit d'un bus asynchrone n'est plus du tout aussi simple à calculer...
 

Exemples de transactions sur des bus parallèles de types synchrone et asynchrone.

Cliquez sur le bouton "synchrone" ou "asynchrone" afin d'étudier le chronogramme des lignes du bus au cours d'une transaction de type lecture.

Notons qu'il est facile d'imaginer à quoi pourrait ressembler une transaction de lecture en mode rafale: une fois l'esclave informé de la requête, celui-ci délivre sur le bus une donnée à chaque cycle d'horloge consécutif.


Il fait maintenant évoquer un gros défaut inhérent au bus de type asynchrone: tout événement étant déclenché par la survenue d'un événement précédent, un composant particulièrement lent peut dangeureusement augmenter la latence du bus, des transactions étant susceptibles de devoir patienter que la transaction précédente veuille bien s'achever.
Le bus asynchrone à transaction fractionnée (split-cycle), ou encore entrelacée, est une astucieuse réponse à cette terrible menace.

Sur un tel bus, le composant maître n'attend plus que son esclave lui transmette l'information souhaitée; il adresse sa requête, puis libère immédiatement le bus, de telle manière que d'autres transactions puissent éventuellement s'y dérouler. Une fois terminée sa besogne, le composant esclave réclame à son tour le contrôle du bus...et en devient donc le maître... et adresse alors les données désirées à l'ancien composant maître, entretemps devenu esclave.

Comme toujours, ce processus élaboré à une contrepartie technique: tout composant esclave étant susceptible de devenir maître, chacun d'entre eux doit disposer des circuits inhérents à la prise de contrôle du bus, enchérissant en conséquence cette solution néanmoins fort judicieuse.

Bon ! Tout cela est très bien, très passionnant et tout et tout... Mais A S S E Z !
Assez de considérations techniques et autres théories logistico-électroniques ! La mal des transports a vaincu, la nausée monte...
Nous voulons du PRA-TI-QUE, du concret, le plan du réseau, les horaires et le prix du ticket.
Pitié...

Une tour en bus

Bus à impériale

Comme nous l'évoquions dans l'introduction de cette page, un ordinateur est un atelier hétéroclite où les composants les plus high-techs, tels un processeur ou une carte graphique, côtoient des dispositifs aussi frustres qu'une souris à molette ou un lance-misile en mousseGros succès commercial au siège du parti en phase de préparation du prochain congrès.... Or, inutile de dire que tous ce petit monde n'a pas les mêmes exigences en terme de communicabilité...

En effet, comment faire cohabiter sur un même bus un processeur, organe central hypercommunicant...pensez: plusieurs millions de sollicitations à la mémoire chaque seconde... et quasi stérile avec votre clavier, assemblage de plastique et de poussièresSi, si. La preuve: retournez, secouez, aspirez..., tout au mieux percuté cinq fois par seconde ?Sans compter que l'un est fabriqué à Taiwan, l'autre en Chine...

La solution est somme toute évidente: elle consiste à regrouper sur un même bus "haute performance" les éléments les plus rapides et les plus sollicités de l'ordinateur, et reléguer les composants plus frustres ou moins exigeants sur un bus plus pépère relié au précédent par un pont (bridge).
Des bus à plusieurs étages, donc. Il fallait y penser.
 

Principe des bus hiérarchisés.

Le pont permet de relier entre eux un bus "rapide" dédié aux composants les plus véloces et un bus "lent", sur lequel viennent se connecter les composants les moins exigeants.
Notons que le débit moyen des premiers nommés tendant à de plus en plus augmenter, il n'est pas rare que ce ne soit pas deux mais trois niveaux de bus qui soient désormais superposés dans nos ordinateurs modernes.

Promis, c'était là le dernier schéma théorique de cette page...
 

Plan du réseau

Et immédiatement, pour preuve de notre bonne foi, le schéma de l'architecture d'un ordinateur tout ce qu'il y a de plus réel:
 

 
Ce schéma, quoique fort simplifié, va néanmoins nous permettre d'en apprendre de belles sur les bus parcourant nos belles tours blanches et, enfin ! de mettre en pratique nos rutilantes connaissances théoriques sur le sujet.

Les grandes lignes

Première constatation très rapide: la carte mère (chipset) apparaît ici comme une véritable station terminus, tous nos bus venant s'y connecter d'une manière ou d'une autre.
Ceci dit, passons en revue les grandes lignes du réseau ci-dessus illustré:

  • Le bus système (system bus) regroupe sous un même terme générique les deux bus les plus rapides de l'ordinateur, à savoir:
    • Le bus processeur, également appelé bus frontal (front side bus), qui, comme son nom l'indique, relie le processeur à la carte mère. Ce bus est le plus sollicité de toute la machine, puisqu'y transitent toutes les informations en provenance et à destination du processeur.
    • Le bus mémoire (memory bus), qui unit la mémoire vive (RAM) à la carte mère.
  • Le bus graphique (graphics bus) relie, lui, la carte graphique à la carte mère. Les applications étant toujours plus exigeantes en termes de graphismes, ce bus voit son débit progresser continûment depuis plusieurs années.

Conformément à nos théories impériales, on remarquera que ces bus les plus rapides se connectent tous trois au même niveau de la carte mère, sur une structure électronique appelé puce northbridge.

Plus bas sur la carte mère, la puce southbridge est le terminus du bus d'extension, également appelé bus d'entrées / sorties (I/O bus) sur lequel viennent se connecter tous les périphériques qui nous sont familiers. Attention toutefois, l'expression pourrait nous faire penser qu'il s'agit là d'un seul très long bus, mais en réalité, ce bus se subdivise lui-même en plusieurs "sous-bus" bien différenciés, comme nous le verrons pour terminer.

Lignes intra-muros et périphériques

A côté de cette nomenclature très géographique des différents bus de la machine, on pourrait en proposer une autre, beaucoup moins académique mais furieusement plus pragmatique, celle qui distinguerait les différents bus de nos ordinateurs selon la réponse à cette question presque bête: "Comment monter dans ce bus là: avec ou sans tournevis ?".

En effet, on peut constater sur le schéma que tous les composants de l'ordinateur ne se branchent pas de la même façon sur leur bus.

Les grands modèles de bus

Voici enfin pour terminer le moment de mettre des noms sur tous ces bus dont nous connaissons maintenant tous les secrets.
Pas trop tôt... Le voyage commençait à devenir franchement pénible...
 

Bus Caractéristiques techniques Débit théorique Usages
Bus système
FSB Intel Bus parallèle synchrone 64 bits QDR
Fréquence des derniers modèles: 333 MHz...à l'heure où sont écrites ces lignes.
jusqu'à 10,6 GB/s
Bus processeur Intel, en gain continu de fréquence de fonctionnement
Hypertransport Bus série/parallèle 2 à 32 bits DDR
Fréquences de 800 MhzHypertransport version 1.0 (2001) à 2,6 GHzHypertransport version 3.0 (2006)
Un lien pour chaque sens de transmission
jusqu'à 41,6 GB/s (en mode full duplex) Bus très haute vitesse utilisé sur les modèles de processeurs AMD

Enfin bref...

"Simple" chemin électrique, n'est-ce-pas ?

Oui, bon, l'épithète n'était peut-être pas le plus judicieux...

Mais avant de vous plaindre, rendez-vous compte ! Vous avez désormais toutes les clefs afin de comprendre, analyser, jauger, tous les bus présents dans votre ordinateur, depuis la souris la plus inoffensive jusqu'à la puce la plus féroce.

Un jour, c'est sûr, vous nous remercierez...
Pas plus tard peut-être que lors de votre prochain achat hardware...

Pour les plus insensés curieux... Le bus processeur.
Feed-back: exprimez-vous !

 
Arcana, vous l'aurez deviné, est un site artisanal. De fait, vos messages chaleureux et enthousiastes constituent la quasi seule motivation de son auteur à tenter de le faire vivre.
Néanmoins, toutes les vérités sont bonnes à dire et ce formulaire est donc également destiné à recevoir vos doléances et vos remarques, ainsi que vos questions, vos rapports de bugs, et, par dessus tout, vos précieux conseils et correctifs.

Merci.

Notes techniques

Ce site a été testé sous environnement Windows avec les deux navigateurs les plus populaires du moment, à savoir Internet Explorer 7 et Firefox 2.
Tout avait l'air de fonctionner à peu près, surtout avec le second.

Il est vrai qu'aucun effort supplémentaire de compatibilité avec d'autres navigateurs n'a été entrepris, le nirvana du cross-browsing réclamant tout à la fois une patience d'ange, une méticulosité d'horloger et, paramètre non négligeable, un certain bol de cocu, toutes qualités dont ne dispose pas l'auteur de ce site.

Afin que Arcana puisse à peu près correctement fonctionner sur votre machine, votre navigateur doit autoriser l'exécution des scripts JavaScript et également disposer du plugin Adobe FlashPlayer.

En effet, la plupart des somptueuses animations disséminées sur ce site ont été réalisées avec le logiciel Adobe Flash©. Télécharger FlashPlayer Si votre ordinateur ne dispose pas du petit programme permettant de lire ce format, vous ne pourrez visualiser ces animations.
Heureusement, il vous suffit pour remédier à cette terrible injustice de cliquer sur ce logo ci-contre afin de télécharger le "plugin" qui vous permettra de découvrir enfin ces petits chefs-d'oeuvre d'art naïf (ainsi que, par la suite, toute page Internet recourant à cette technologie).
La procédure est indolore, rapide et gratuite, alors pourquoi s'en priver, je vous le demande ?

Arcana recherche...

Quoique l'auteur de ce site dispose d'une petite expérience et d'un nanodiplôme en sciences informatiques, il n'est malheureusement titulaire d'aucun permis d'enseigner validé par l'Académie. Dès lors, et bien que tout ait été mis en oeuvre afin de ne pas propager de trop grossières erreurs sur ces pages, il manque à Arcana ce qui lui donnerait tout à la fois poids et respectabilité, à savoir une autorité scientifique, auréolée d'un cursus en règle et du crédit de l'Université.
Si une ou plusieurs sommités venant à croiser ce site acceptaient d'endosser cette écrasante responsabilité de caution intellectuelle pour une ou plusieurs leçons, elles seraient grandement remerciées et leur nom bien évidemment gravé en lettres d'or en tête de page, leur assurant par là même gloire et renommée quasi planétaires.

Le logo du site: un sens du dépouillement qui confine au déprimant...Par ailleurs, les spécialistes l'auront remarqué, Arcana se pare d'un graphisme rococo et luxuriant directement inspiré par l'école est-allemande des années 70.
De fait, quiconque n'a jamais eu à concevoir ex nihilo un simple bouton d'interface ne peut comprendre à quel point l'infographie est un métier à part entière. L'auteur de ce site ayant, suite à un très long face-à-face avec Photoshop, découvert son absence totale de don dans ce domaine très artistique, toute aide serait la bienvenue pour offrir à Arcana une charte graphique digne de ce nom.

De la même manière, quelques laborieux petits dessins pseudo-humoristiques viennent ça et là agrémenter le contenu parfois franchement hostile de certaines leçons. Si, vous aussi, vous tenez à participer à cette courageuse entreprise de dépénibilisation de l'écrit pédagogique, vos bulles originales seront les bienvenues et, légitimement signées, contribueront au fantastique rayonnement humaniste et artistique d'Arcana.

D'avance, merci.

Plan de la leçon