Un bus est un moyen de communication utilisé par toutes les puces pour se parler entre elles (c'est le transport public pour les puces et dispositifs de votre ordinateur).
Imaginez qu'un ordinateur est constitué de plusieurs puces indépendantes qui doivent se parler entre elles en utilisant des fils conducteurs. Vous pourriez avoir suffisamment de fils conducteurs permettant à chacune des puces d'être connectées individuellement aux puces dont elle a besoin de parler. Pensez-y un instant, admettons que toutes les puces sont des «32 bits» (elles ont 32 fils conducteurs) leur permettant de parler aux autres puces, puis supposons que votre ordinateur est composé de 50 puces. Chaque puce devrait alors posséder 1600 broches (fils conducteurs) uniquement pour communiquer directement avec chacune des autres puces. Une solution très coûteuse et les raccordements seraient difficilement réalisable -- alors cette solution n'est pas appliquée. À la place, les puces partagent un «bus». Ce «bus» est composé d'un ensemble de fils conducteurs, que toutes les puces se partagent, et utilisent pour se parler entre elles.
Un bus est composé habituellement d'un ensemble de fils conducteurs pour les «adresses» et un autre ensemble pour les «données»; et quelques fils supplémentaires pour la synchronisation, pour indiquer si le bus est utilisé, pour le timing ainsi que diverses autres fonctions. Une puce vérifie si le bus est disponible (n'est pas utilisé) -- si le bus est en service, la puce attend jusqu'à ce qu'il soit libéré -- si le bus est disponible, la puce place les valeurs d'adresse et de données sur le bus. Toutes les puces surveillent les lignes «d'adresses» et si elles reconnaissent une adresse qui leur appartient, elles attrapent le message (les données); autrement elles l'ignore. Techniquement ces adresses sont également appelées «emplacements de mémoire», ou registres; mais elles veulent tous dire fondamentalement la même chose.
Comme vous pouvez le constater, ce bus est une autoroute sur laquelle toutes les informations de l'ordinateur circulent. Plus la vitesse limite est rapide (vitesse d'horloge), et plus il y a de fils conducteurs (largeur de bus), plus le bus pourra manipuler d'informations. Les bus peuvent être série (1 bit de large) ou parallèle; ce qui peut représenter 8, 16 ou 32 bits de largeur (certains ont même 64 ou 128 bits de largeur, cependant ils sont rares). Plus le bus est large, plus il y a de données qui peuvent le traverser en même temps (en un cycle d'horloge). La vitesse d'horloge règle la rapidité à laquelle l'information est placée sur le bus -- une adresse et une donnée par cycle d'horloge. Ce taux de transfert est mesuré en MHz (megahertz); ce qui signifie des millions de cycles par seconde. Ainsi des millions de fois par seconde, une certaine puce (très souvent votre processeur) envoie des données à une autre puce (et l'autre puce le sait en examinant l'adresse).
Puisque ce bus est partagé, il est souvent la source d'embouteillages, alors que beaucoup d'informations doivent circuler au même instant. Ainsi si 10 puces veulent toutes parler en même temps, une seule aura la parole, alors que les 9 autres devront attendre leur tour -- ce qui réduit la performance du système. Voilà pourquoi la vitesse du bus est importante; aussi importante que le besoin en vitesse requis par vos puces. Si le bus est beaucoup plus rapide (ou plus large) que les puces, alors il n'est plus qu'une autoroute vide (utilisé quelquefois seulement). Si le bus est plus lent (ou plus étroit) que les puces, alors c'est constamment l'heure de pointe et tous sont ralentis. Un bon équilibre doit être recherché (dans les systèmes modernes, le bus est habituellement incapable de répondre à la demande du processeur et de la mémoire).
Les ordinateurs sont devenus de plus en plus complexes...ce qui fait que de nos jours un seul bus n'est plus suffisant, il en existe plusieurs. De plus, il existe plusieurs bus à l'intérieur même d'une puce -- mais la plupart des gens font référence aux bus qui sont utilisés dans les communications externes (et non pas celles qui ont lieu à l'intérieur d'une puce).
Dans la plupart des cas, un bus est ce qui raccorde plus de deux dispositifs ou puces. Une communication point à point est souvent appelée un «port». Une exception à cette règle se nomme LocalBus (peu d'ordinateurs le possède) -- c'est un raccordement point à point (bus) entre le processeur et une seule carte, habituellement une carte vidéo/graphique. (Puisque les cartes graphiques sont les cartes d'expansion les plus exigeantes en performance, il est normal de les mettre sur un bus indépendant). Mais dans la plupart des cas un bus implique généralement plus de deux dispositifs -- une version plus «moderne» du LocalBus se nomme AGP (Advanced Graphics Port).
Les bus de périphériques permettent à un dispositif de parler à d'autres dispositifs. IEEE488 (GPIB), SCSI, ADB, USB et FireWire sont tous des bus de périphériques -- à travers lequel les périphériques se parlent entre eux et avec l'ordinateur. (Cela inclus également les réseaux, mais ces derniers sont rarement appelés ainsi). Les bus de périphériques conversent habituellement à des vitesses plus lentes (comparativement aux autres bus), parce qu'ils doivent communiquer sur de plus grandes distances. Des vitesses rapides sont de l'ordre de 50MB/s pour le FireWire (un nouveau bus série), 5 MB/s pour le SCSI (20MB/s pour la version Fast/Wide). Les autres bus semblables sont beaucoup plus lents (ADB a un taux de transfert d'environ 192 kilo-octets/s).
Prenez note que les ports RS-232 (port série) et parallèles ne sont pas considérés comme des bus. Ce sont des branchements de dispositif à dispositif, ils ne sont pas partagés entre plusieurs appareils. C'est la même chose pour le IDE, EIDE et UltraIDE -- ceux-ci ont un connecteur indépendant pour chaque dispositif, ils ne sont pas partagés.
Le chaînage -- plusieurs bus de périphériques sont connectés en «chaîne». Chaque dispositif doit avoir un port d'entrée et un port de sortie, vous branchez les dispositifs en les chaînant un à la suite des autres, le début de la chaîne étant votre ordinateur.
Les bus d'expansion permettent l'ajout de cartes dans les ordinateurs (pour obtenir de nouvelles fonctionnalités). NuBus, LocalBus et PCI sont tous des bus d'expansion -- de même que ISA, EISA, PCI, MCA du côté du PC (et bien sûr le S100 du côté du CP/M), et il y en a (et il y en aura) plusieurs autres encore. Ils ont tous leur propre largeur de bus et taux de transfert. Pour l'instant, ce qui compte c'est de savoir que le bus le plus répandu est PCI, sa largeur de bus étant 32 bits et sa vitesse est de 33MHz (pour un taux de transfert théorique de 132MB/s). Les possibilités du bus PCI ont été améliorées par un bus plus large (64 bits) et une plus grande vitesse (66MHz) -- ce qui quadruple la vitesse à laquelle les cartes peuvent converser entre elles ou avec la mémoire.
Pour embrouiller davantage les choses, certains ordinateurs voient leur expansion desservie par une carte située sur le bus d'expansion, même si la carte mère peut jouer ce rôle elle-même (et non pas à l'aide d'une carte indépendante). Cela diminue la performance par rapport à l'expansion à partir de la carte mère, mais pas suffisamment pour que la majorité des gens s'en aperçoivent. Vous aurez à lire les notices techniques pour vous en assurer, puisque cela n'est pas mentionné aux acheteurs, et vous devrez être un assoiffé de vitesse pour vous en rendre compte.
Le bus interne permet aux puces situées sur la carte mère de converser entre elles. Lorsque les gens parlent du «bus», ils parlent de ce bus interne. Ce bus est unique pour chaque version d'un processeur et même pour chaque modèle ou manufacturier de cartes mères. Ce bus internet permet au processeur de converser avec la mémoire et les ports d'entrées/sorties bâties sur la carte mère -- c'est le bus le plus performant de l'ordinateur (sur certains systèmes spécialisés, on pourra trouver un bus vidéo qui est plus rapide, mais ce n'est pas courant). Lorsque vous entendez quelqu'un dire «mon ordinateur a un bus de 66MHz», c'est du bus interne dont il parle.
Plusieurs ordinateurs possèdent un bus de 64 bits et une vitesse de 66MHz -- ou un taux de transfert théorique d'approximativement 525MB/s. C'est drôlement rapide, mais pensez-y -- votre ordinateur (CPU) tourne à 266MHz (ou à peu près quatre fois plus vite). Bien souvent le processeur dépasse en vitesse le bus interne.
Votre RAM ne peut même pas tenir le coup face au bus -- alors on fabrique des types de RAM plus rapides ou on utilise une technique appelée interfoliage (on alterne entre chaque puce RAM afin de satisfaire le taux de transfert du bus). Cet écart de performance est la raison d'être de la mémoire «cache», qui aide à tenir le CPU occupé -- en plus de prévenir la saturation du Bus causé par un CPU qui réalisé un tas d'accès mémoire (empêchant ainsi les autres puces de faire leur travail).
Un autre truc est utilisé pour tenir occupé le CPU, utilisant une technique appelée backside cache. Cela veut dire que le CPU peut parler au bus principal (et la mémoire) -ou- à un autre bus situé en «arrière» (backside). Ce second bus possède de la mémoire temporaire très rapide (que le CPU utilise pour emmagasiner et retirer des choses). Pendant qu'il utilise ce bus «arrière», le bus avant (bus principal) est habituellement libre et disponible pour les autres puces. On obtient ainsi un bus plus rapide artificiellement -- puisque votre bus n'est pas saturé en essayant de satisfaire les besoins en mémoire de votre processeur. Si vous avez plusieurs processeurs, cette technique peut devenir encore plus efficace -- en fait, la saturation du bus est le principal problème des systèmes multiprocesseurs.
Donc, il y a plusieurs bus dans votre ordinateur, et souvent à l'intérieur même d'une puce. Puisque les performances du bus principal (bus interne) ne tiennent pas le coup face à la forte croissance de la performance des processeurs et de la mémoire, il est probable que les concepteurs utiliseront de plus en plus de bus pour solutionner ces problèmes (pour décharger les autres bus et réduire les embouteillages). Déjà, il est fréquent de rencontrer un bus spécial pour manipuler les graphiques ou la vidéo et l'audio -- et quelques fois des sous-bus spéciaux sont utilisés pour envoyer des données ou des signaux de contrôle d'un point à un autre. Mais heureusement, vous comprenez maintenant les fondements d'un bus -- le partage d'un ensemble de fils conducteurs.