« Fonctionnement d'un ordinateur/Les bus et liaisons point à point (généralités) » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 40 :
 
Ces caractéristiques ne sont pas les seules. Par exemple, on pourrait citer le débit binaire, à savoir le nombre de bits que le bus peut transmettre par seconde. On pourrait aussi citer le temps de latence, à savoir le temps que met une donnée à être transférée sur le bus. Mais ces mesures de performances ne sont pas si différentes de celles utilisées pour quantifier la vitesse des entrées-sorties. Aussi, nous n'en parlerons pas ici. D'autant qu'elles peuvent se déduire de la largeur du bus et de sa fréquence.
 
===La largeur du bus===
 
[[File:Parallel and Serial Transmission.gif|droite|Comparaison entre bus série et parallèle.]]
 
La plupart des bus peuvent échanger plusieurs bits en même temps et sont appelés '''bus parallèles'''. Mais il existe des bus qui ne peuvent échanger qu'un bit à la fois : ce sont des '''bus série'''. On pourrait croire qu'un bus série ne contient qu'un seul fil pour transmettre les données, mais il existe des contrexemples. Généralement, c'est le signe que le bus n'utilise pas un codage NRZ, mais une autre forme de codage un peu plus complexe. Par exemple, le bus USB utilise deux fils D+ et D- pour transmettre un bit. Pour faire simple, lorsque le fil D+ est à sa tension maximale, l'autre est à zéro (et réciproquement).
 
La transmission et la réception sur un bus série demande de faire une conversion entre les données, qui sont codées sur plusieurs bits, et le flux série à envoyer sur le bus. Cela s'effectue généralement en utilisant des registres à décalage, commandés par des circuits de contrôle.
 
[[File:Serial interface.png|centre|500px|Serial interface]]
 
Passons maintenant aux bus parallèles. Pour information, si le contenu d'un bus de largeur de n bits est mis à jour m fois par secondes, alors son débit binaire est de n × m. Mais contrairement à ce qu'on pourrait croire, les bus parallèles ne sont pas plus rapides que les bus série. En effet, le temps d'attente entre deux transmissions est plus grand sur les bus parallèles. Un bus série n'a pas ce genre de problèmes, ce qui surcompense le fait qu’un bus série ne peut envoyer qu'un bit à la fois.
 
Il existe plusieurs raisons à cette infériorité des temps de latence des bus série. Premièrement, les fils d'un bus ne sont pas identiques électriquement : leur longueur et leur résistance changent très légèrement d'un fil à l'autre. En conséquence, un bit va se propager à des vitesses différentes suivant le fil. On est obligé de se caler sur le fil le plus lent pour éviter des problèmes à la réception. En second lieu, il y a le phénomène de crosstalk. Lorsque la tension à l'intérieur du fil varie (quand le fil passe de 0 à 1 ou inversement), le fil va émettre des ondes électromagnétiques qui perturbent les fils d'à côté. Il faut attendre que la perturbation électromagnétique se soit atténuée pour lire les bits, ce qui limite le nombre de changements d'état du bus par seconde.
 
===La fréquence du bus et son caractère synchrone/asynchrone===
 
On peut faire la différence entre bus synchrone et asynchrone, la différence se faisant selon l'usage ou non d'une horloge. La méthode de synchronisation des composants et des communications sur le bus peut ainsi utiliser une horloge, ou la remplacer par des mécanismes autres.
 
====Les bus synchrones====
 
Certains bus sont synchronisés sur un signal d'horloge : ce sont les '''bus synchrones'''. Avec ces bus, le temps de transmission d'une donnée est fixé une fois pour toute. Le composant sait combien de cycles d'horloge durent une lecture ou une écriture. Sur certains bus, le contenu du bus n'est pas mis à jour à chaque front montant, ou à chaque front descendant, mais aux deux : fronts montant et descendant. De tels bus sont appelés des bus double data rate. Cela permet de transférer deux données sur le bus (une à chaque front) en un seul cycle d'horloge : le débit binaire est doublé sans toucher à la fréquence du bus.
 
[[File:Exemple de lecture sur un bus synchrone.png|centre|Exemple de lecture sur un bus synchrone.]]
 
====Les bus asynchrones====
 
À haute fréquence, le signal d'horloge met un certain temps pour se propager à travers le fil d'horloge, ce qui induit un léger décalage entre les composants. Plus on augmente la longueur des fils, plus ces décalages deviendront ennuyeux. Plus on augmente la fréquence, plus la période diminue comparée au temps de propagation de l'horloge dans le fil. Ces phénomènes font qu'il est difficile d'atteindre des fréquences de plusieurs gigahertz sur les bus actuels. Pour ces raisons, certains bus se passent complètement de signal d'horloge, et ont un protocole conçu pour : ce sont les '''bus asynchrones'''. Ces bus sont donc très adaptés pour transmettre des informations sur de longues distances (plusieurs centimètres ou plus).
 
[[File:Exemple d'écriture sur un bus asynchrone.png|centre|Exemple d'écriture sur un bus asynchrone]]
 
===Les bus dédiés et multiplexés===
 
ParlonsCommençons maintenantpar parler de la distinction entre les bus (et plus précisément les bus dits multiplexés) et les liaisons point à point (aussi appelées bus dédiés).
 
: ''Petite précision de vocabulaire : Le composant qui envoie une donnée sur un bus est appelé un émetteur, alors que ceux reçoivent les données sont appelés récepteurs.''
Ligne 108 ⟶ 78 :
|[[File:FullDuplex.JPG]]
|}
Les bus ''simplex'' et ''half-duplex'' se résument généralement à un simple fil (pour les bus série), ou à des ensembles de fils (pour les bus parallèles). Les bus ''full duplex'' sont créés en regroupant deux bus simplex ensemble : un pour l'émission et un pour la réception. Mais certains bus ''full-duplex'', assez rares au demeurant, n'utilisent pas cette technique et se contentent d'un seul bus bidirectionnel.
 
Les bus ''simplex'' et ''half-duplex'' se résument généralement à un simple fil (pour les bus série), ou à des ensembles de fils (pour les bus parallèles). Les bus ''full duplex'' sont créés en regroupant deux bus simplex ensemble : un pour l'émission et un pour la réception. Mais certains bus ''full-duplex'', assez rares au demeurant, n'utilisent pas cette technique et se contentent d'un seul bus bidirectionnel.
 
====Les bus multiplexés====
Ligne 116 ⟶ 85 :
 
[[File:ARINC429 Architecture Emetteur Recepteurs.svg|centre|Bus multiplexés.]]
 
===La largeur du bus===
 
[[File:Parallel and Serial Transmission.gif|droite|Comparaison entre bus série et parallèle.]]
 
La plupart des bus peuvent échanger plusieurs bits en même temps et sont appelés '''bus parallèles'''. Mais il existe des bus qui ne peuvent échanger qu'un bit à la fois : ce sont des '''bus série'''. On pourrait croire qu'un bus série ne contient qu'un seul fil pour transmettre les données, mais il existe des contrexemples. Généralement, c'est le signe que le bus n'utilise pas un codage NRZ, mais une autre forme de codage un peu plus complexe. Par exemple, le bus USB utilise deux fils D+ et D- pour transmettre un bit. Pour faire simple, lorsque le fil D+ est à sa tension maximale, l'autre est à zéro (et réciproquement).
 
La transmission et la réception sur un bus série demande de faire une conversion entre les données, qui sont codées sur plusieurs bits, et le flux série à envoyer sur le bus. Cela s'effectue généralement en utilisant des registres à décalage, commandés par des circuits de contrôle.
 
[[File:Serial interface.png|centre|500px|Serial interface]]
 
Passons maintenant aux bus parallèles. Pour information, si le contenu d'un bus de largeur de n bits est mis à jour m fois par secondes, alors son débit binaire est de n × m. Mais contrairement à ce qu'on pourrait croire, les bus parallèles ne sont pas plus rapides que les bus série. En effet, le temps d'attente entre deux transmissions est plus grand sur les bus parallèles. Un bus série n'a pas ce genre de problèmes, ce qui surcompense le fait qu’un bus série ne peut envoyer qu'un bit à la fois.
 
Il existe plusieurs raisons à cette infériorité des temps de latence des bus série. Premièrement, les fils d'un bus ne sont pas identiques électriquement : leur longueur et leur résistance changent très légèrement d'un fil à l'autre. En conséquence, un bit va se propager à des vitesses différentes suivant le fil. On est obligé de se caler sur le fil le plus lent pour éviter des problèmes à la réception. En second lieu, il y a le phénomène de crosstalk. Lorsque la tension à l'intérieur du fil varie (quand le fil passe de 0 à 1 ou inversement), le fil va émettre des ondes électromagnétiques qui perturbent les fils d'à côté. Il faut attendre que la perturbation électromagnétique se soit atténuée pour lire les bits, ce qui limite le nombre de changements d'état du bus par seconde.
 
===La fréquence du bus et son caractère synchrone/asynchrone===
 
On peut faire la différence entre bus synchrone et asynchrone, la différence se faisant selon l'usage ou non d'une horloge. La méthode de synchronisation des composants et des communications sur le bus peut ainsi utiliser une horloge, ou la remplacer par des mécanismes autres.
 
====Les bus synchrones====
 
Certains bus sont synchronisés sur un signal d'horloge : ce sont les '''bus synchrones'''. Avec ces bus, le temps de transmission d'une donnée est fixé une fois pour toute. Le composant sait combien de cycles d'horloge durent une lecture ou une écriture. Sur certains bus, le contenu du bus n'est pas mis à jour à chaque front montant, ou à chaque front descendant, mais aux deux : fronts montant et descendant. De tels bus sont appelés des bus double data rate. Cela permet de transférer deux données sur le bus (une à chaque front) en un seul cycle d'horloge : le débit binaire est doublé sans toucher à la fréquence du bus.
 
[[File:Exemple de lecture sur un bus synchrone.png|centre|Exemple de lecture sur un bus synchrone.]]
 
====Les bus asynchrones====
 
À haute fréquence, le signal d'horloge met un certain temps pour se propager à travers le fil d'horloge, ce qui induit un léger décalage entre les composants. Plus on augmente la longueur des fils, plus ces décalages deviendront ennuyeux. Plus on augmente la fréquence, plus la période diminue comparée au temps de propagation de l'horloge dans le fil. Ces phénomènes font qu'il est difficile d'atteindre des fréquences de plusieurs gigahertz sur les bus actuels. Pour ces raisons, certains bus se passent complètement de signal d'horloge, et ont un protocole conçu pour : ce sont les '''bus asynchrones'''. Ces bus sont donc très adaptés pour transmettre des informations sur de longues distances (plusieurs centimètres ou plus).
 
[[File:Exemple d'écriture sur un bus asynchrone.png|centre|Exemple d'écriture sur un bus asynchrone]]
 
==L'interfaçage avec le bus==