Les bus et signaux

publicité
Les bus et signaux
Le Bus
Le bus est un câble de n lignes qui permet de faire passer des données du processeur à la mémoire et vice-versa.
Il constitue une sorte d'autoroute qui traverse le PC, réglementée par le processeur. C'est une voie
d'interconnexion et d'échanges permettant le transfert de données entre les éléments internes d'un ordinateur, le
processeur et la mémoire centrale. Le bus permet de véhiculer tous les signaux entre l'Unité Centrale et les
périphériques. On peut le décomposer en trois grands groupes principaux.
Le bus de données qui sert à transporter l'information proprement dite et qui est constitué, pour les processeurs
les plus récents, de 32 voir 64 lignes parallèles.
Le bus d'adresse qui permet de désigner le composant auquel on s'adresse et d'identifier la case mémoire
concernée par l'opération en cours (lecture ou écriture). Est lui aussi de 32 ou 64 lignes parallèles.
Le bus de commande qui détermine le type d'opération a effectuer (lecture, écriture, sélection du composant,
etc.) et quel composant est autorisé à s'exprimer sur le bus a un instant donné.
Il existe plusieurs types de bus et de contrôleurs de bus, certains sont ancien et n'existent plus.
- Bus ISA (Industry Standard Architecture) : C'est le bus originel du PC qui se décline en version 8 bits ou 16 bits.
Il permet au maximum un transfert de 8 Mégabits par seconde soit 1Mo/s ce qui est parfois suffisant pour certains
périphériques comme les cartes réseaux. C'est l'architecture du bus du PC/AT.
- Bus LOCAL : Pour améliorer la vitesse des échanges entre le processeur et la mémoire, la solution adoptée
consiste à installer un bus local entre ces deux éléments. Ce bus fonctionne à la vitesse du microprocesseur sans
nécessiter une électronique coûteuse, en raison de sa faible longueur et du fait qu'aucun autre périphérique n'y est
relié. La grande majorité des PC vendus aujourd'hui possèdent un bus local de ce type.
- Bus VESA (VL-BUS) : La présence d'un bus local donna rapidement aux constructeurs l'envie de l'utiliser pour les
périphériques demandant une grande vitesse de transfert. Il s'agit en premier lieu de l'affichage, dont les besoins
croissent dans des proportions énormes avec l'adoption des interfaces graphiques telles que Windows et, dans une
moindre mesure, des disques durs et des cartes réseau. Dans le cas d'un disque dur par exemple, il ne sert à rien
de communiquer à une vitesse supérieure à celle du disque. Cependant, le problème peut être contourné en
installant sur la carte d'interface du disque une quantité de mémoire servant de tampon. L'échange de données
peut ainsi se faire à une vitesse maximale entre le processeur et le tampon, l'électronique de la carte se chargeant
ensuite d'envoyer le contenu du tampon sur le disque pendant que le processeur fait autre chose. Un certain
nombre de constructeurs ont développé leur propre bus local, incompatible avec les produits de marque différente.
En revanche, certains se sont associés pour créer le standard VLSA (Video Electronic Association) qui avait pour
objet initial de permettre l'installation d'une carte d'affichage sur le bus local.
- Bus EISA (Extended Industry Standard Architecture) : C'est une évolution du bus ISA qui permet la
reconnaissance automatique des périphériques connectés à ce bus.
- Bus VLB (VL-Bus) : C'est un bus 32 bits qui permet la technique du “bus mastering”. Il nécessite 2 cycles
d'horloge pour transférer un mot de 32 bits à 33 Mhz dont le débit peut varier de 66Mo/s à 105 Mo/s en mode
rafale. Le VL-Bus 2 quant à lui est un bus 64 bits fonctionnant à 50 Mhz et autorisant un taux de tranfert de 320
Mo/s.
- Bus PCI (Peripheral Component Interconnect) : Inventé par Intel le 22 juin 1992, c'est un bus de 32 ou 64 bits
(connecteurs de 124 ou 188 broches), indépendant séparé du CPU et qui est contrôlé par ce que l'on appelle le
“chipset” (c'est un microprocesseur). Contrairement au bus VLB il ne s'agit pas vraiment d'un bus local mais d'un
bus intermédiaire situé entre le bus processeur (NorthBridge) et le bus d'entrées-sorties (SouthBridge) ; voir
schéma simplifié. Il y a eu beaucoup d'évolution du bus PCI au niveau des fréquences, voir tableau ci dessous. Le
voltage est de 3.3V sur les ordinateurs portables et 5V pour les fixes.
Norme
Date
Fréquence
PCI 1.0
1992
33 MHz
PCI 2.0
1993
33 MHz
PCI 2.1:
1995
33 / 66 MHz
PCI
1998
33 / 66 MHz
PCI-X 1.0
1999
66 / 100 /133 MHz
PCI 2.3
2002
33 / 66 MHz
PCI-X 2.0
2002
133 / 266 / 533 MHz
32
64
32
64
32
64
32
64
32
64
32
64
32
64
bits
bits
bits
bits
bits
bits
bits
bits
bits
bits
bits
bits
bits
bits
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Largeur
133 Mo/s
266 Mo/s
132 Mo/s
264 Mo/s
132 / 264 Mo/s
264 / 528 Mo/s
132 / 264 Mo/s
264 / 528 Mo/s
264 / 400 / 532 Mo/s
528 / 800 / 1064 Mo/s
132 / 264 Mo/s
264 / 528 Mo/s
532 / 1064 / 2128 Mo/s
1064 / 2128 / 4256 Mo/s
- Bus PCMCIA : C'est un bus développé principalement pour les portables. Ses performances sont relativement
limitées. Sa largeur n'est que de 16 bits et sa vitesse ne dépasse pas 33 Mhz. Il ne possède que 26 lignes
d'adresses, ce qui limite l'espace mémoire à 64 mégaoctets. Il n'autorise pas la prise de contrôle du bus par les
périphériques. En revanche, il présente un certain nombre d'avantages, particulièrement intéressants dans le cas
des ordinateurs portables. Le principal est la très petite taille des connecteurs et des cartes d'extension (format
carte de crédit). De plus, c'est le seul qui autorise la connexion et la déconnexion des cartes d'extension sans
couper l'alimentation de l'ordinateur.
- Bus AGP (Accelerated Graphics Port ) : apparu en mai 1997 pour permettre de gérer les flux de données
graphiques devenant trop importants pour le bus PCI. Le bus AGP est directement relié au bus processeur (FSB :
Front Side Bus) avec même fréquence, donc une bande passante élevée.
L'interface AGP a été mise au point pour la connexion de la carte graphique en lui ouvrant un canal direct d'accès à
la mémoire (soit DMA : Direct Memory Access), sans passer par le contrôleur d'entrée-sortie. Les cartes AGP ont
donc théoriquement besoin de moins de mémoire embarquée, puisqu'elles peuvent accéder directement aux
données graphiques stockées dans la mémoire centrale. Dans les faits, elles embarquents de la mémoire et un
processeur de traitement graphique.
Débits des différentes normes AGP :
AGP 1X : 66,66 MHz x 1(coef.) x 32 bits
AGP 2X : 66,66 MHz x 2(coef.) x 32 bits
AGP 4X : 66,66 MHz x 4(coef.) x 32 bits
AGP 8X : 66,66 MHz x 8(coef.) x 32 bits
/8
/8
/8
/8
=
=
=
=
266.67 Mo/s
533.33 Mo/s
1,06 Go/s
2,11 Go/s
Les cartes peuvent être équipées de trois types de connecteurs (couleur marron normalisée) : AGP 1,5 volts et 3,3
volts (avec détrompeur) et AGP universel (sans détrompeur).
- Bus USB (Universal Serial Bus) : élaboré en 1995 pour la connexion d'une grande variété de périphériques, il est
basé sur une architecture de type série beaucoup plus rapide que les ports série précédents. La norme USB permet
le chaînage d'un maximum de 127 périphériques. La communication se fait selon un protocole de type Token ring).
Les ports USB supportent le Hot plug and play.
L'architecture USB fourni l'alimentation électrique aux périphériques qu'elle relie (maximum 15W par périphérique).
Elle utilise quatre fils : la masse, l'alimentation et deux fils de données.
- Bus Firewire : mis au point en 1995 (norme IEEE 1394) pour fournir un système d'interconnexion permettant
de faire circuler des données à haute vitesse en temps réel. Apple lui a donné le nom de Firewire », devenu le nom
le plus utilisité (connu aussi sous le nom de i.Link et Lynx). C'est un port permettant de connecter des
périphériques (caméras numériques...) à très haut débit. Il existe des cartes d'extension (sur connecteur PCI ou
PCMCIA) pour ajouter des connecteurs FireWire aux ordinateurs. Le système de ponts, permettant de relier
plusieurs bus entre eux, permet d'adresser 65535 périphériques.
Le bus IEEE 1394 fonctionne à peu près comme le bus USB, mais il utilise un câble composé de six fils (2 pour les
données, 2 pour l'horloge, 2 pour l'alimentation). Les deux fils d'horloge lui donnent la possibilité de fonctionner
selon deux modes de transfert :
- asynchrone : basé sur une transmission de paquets à intervalles de temps variables. L'hôte envoie un paquet de
données et attend un accusé de réception du périphérique. Le paquet est à nouveau réexpédié si l'A/R n'est pas
recu.
- isochrone : il permet l'envoi de paquets de données de taille fixe à intervalle de temps régulier. Un nœud (Cycle
Master) envoi un paquet de synchronisation (Cycle Start packet) toutes les 125 microsecondes. L'accusé de
réception n'est pas nécessaire, le débit est donc fixe, l'adressage les transferts plus rapide.
Débits des différentes normes Firewire : (1394b est aussi appelée FireWire 2 ou FireWire Gigabit)
IEEE 1394a-S100 100 Mbit/s
IEEE 1394a-S200 200 Mbit/s
IEEE 1394a-S400 400 Mbit/s
IEEE 1394b-S800 800 Mbit/s
IEEE 1394b-S1200 1200 Mbit/s
IEEE 1394b-S1600 1600 Mbit/s
IEEE 1394b-S3200 3200 Mbit/s
- Bus PCI Express (Peripheral Component Interconnect Express) : Le bus internes de type parallèles (ISA, PCI...)
arrivent à des limites technologiques à cause des difficultés de routage, les limitation en fréquence et tension. Les
PCI express, liaisons point-à-point avec switchs sont la solution à cette limitation.
Le bus PCI Express, noté aussi PCI-E ou 3GIO (Third Generation I/O») a été mis au point en juillet 2002.
Il existe plusieurs versions, 1X, 2X, 4X, 8X, 12X, 16X et 32X qui permettent d'obtenir des débits entre 250 Mo/s et
8 Go/s, (4 fois le débit AGP 8X). Ce bus permet le Hot plug. Les connecteurs PCI Express sont incompatibles avec
les anciens connecteurs PCI pour une plus faible consommation électrique.
Schéma des bus
Schéma simplifié des bus sur un PC
Schéma hiérarchique d'un bus sur un PowerPC (carte MCP750)
Comparatif architecture PCI / PCI Express
PCI (Périphéral Component Interconnect) :
- 33, 66, 100, 133, 166 Mhz
- 32 à 64 bits de données
- 3 espaces d'adressages : suivant l'état de certaines lignes de contrôle, on accédera avec une même adresse, à 3
données différentes ...
- Espace de Configuration, espace d'I/O, espace mémoire
- Dans l'espace de configuration, un numéro est attribué, par construction, à chaque périphérique. Cet espace
permet e connaître les besoins en espace mémoire et I/O, le nombre de registres, le type de device, de configurer
le device pour qu'il réponde ensuite aux bonnes adresses dans les espaces mémoire et I/O.
- Transmission synchrone (la mesure de signal se fait sur le front montant de l'horloge)
- Avec acquittement
- Arbitrage centralisé, généralement dans le Bridge principal
- Lignes d'adresses et de données multiplexées (la distinction se fait par la ligne de controle IRDY#).
PCI Express :
- Version série par paquets du PCI
- 2.5Gb/s par ligne
- Supporte plusieurs lignes: x2, x4, x8, x16, x32
- 100% compatible d'un point de vue logiciel avec PCI.
Le Chipset (jeu de composants)
C'est l'élément chargé d'aiguiller les informations entre les différents bus de l'ordinateur afin que les différents
composants puissent communiquer entre eux. Le chipset était au départ composé d'un grand nombre d'éléments
électroniques, d'où son nom. Il est généralement composé de deux éléments :
- Le NorthBridge (Pont Nord ou Northern Bridge, ou contrôleur mémoire), chargé de contrôler les échanges entre
le processeur et la mémoire vive. C'est le Chipset le plus proche du processeur.
- Le SouthBridge (Pont Sud ou Southern Bridge, ou contrôleur d'entrée-sortie, ou contrôleur d'extension) gère les
communications avec les périphériques d'entrée-sortie.
On parle généralement de bridge (en français pont) pour désigner un élément d'interconnexion entre deux bus.
Pour communiquer, deux bus ont besoin d'avoir la même largeur.
Caractéristiques des principaux bus (Attention : non a jour !)
Norme
ISA 8-bit
ISA 16-bit
EISA
VLB
PCI 32-bit
PCI 64-bit2.1
AGP
AGP (x2 Mode)
AGP (x4 Mode)
AGP(x8 Mode)
ATA33
ATA100
ATA133
Serial ATA (S-ATA)
Serial ATAII( S-ATA2)
USB
USB2.0
Firewire
Firewire 2
SCSI-1
SCSI-2-Fast
SCSI-2-Wide
SCSI-2-FastWide
32
bits
SCSI-3-Ultra
SCSI-3-UltraWide
SCSI-3-Ultra2
SCSI-3-Ultra2Wide
SCSI-3-Ultra160
(Ultra3)
Largeur du bus (bits)
8
16
32
32
32
64
32
32
32
32
16
16
16
1
2
1
1
>1
1
8
8
16
Vitesse du bus (MHz)
8.3
8.3
8.3
33
33
66
66
66x2
66x4
66x8
33
50
66
4.77
10
10
Bande passante(Mo/sec)
7.9
15.9
31.8
127.2
127.2
508.6
254.3
528
1056
2112
33
100
133
180
380
1.5
60
100
200
5
10
20
32
10
40
8
16
8
16
20
20
40
40
20
40
40
80
16
80
160
Fonctionnement des bus
Tous les périphériques du Bus sont donc reliés aux mêmes lignes, donc un arbitrage doit avoir lieu pour définir qui
va émettre et qui va recevoir les informations. Quelquefois un multiplexage permet d'utiliser les mêmes lignes pour
des rôles différents, à des instants différents
On introduit donc la notion de maitre et d'esclave. Le maitre sur le bus à la capacité de déclencher un transfert. Un
esclave lui ne fait que répondre aux requêtes.
Un bus polyvalent doit pouvoir accepter plusieurs maitres. Dans ce cas, il faut résoudre les conflits qui résulteraient
d'une demande simultanée d'accès au bus par plusieurs maitres.
On distingue 2 grandes familles de gestion d'arbitrage :
Centralisée : un composant spécifique sur le bus reçoit les demandes d'accès et décide à qui attribuer le bus
(Exemple : PCI).
Répartie : Chaque maitre intervient dans le mécanisme de sélection, par commun accord, de celui qui aura le
contrôle du bus (Exemple : SCSI).
Information sur les périphériques PCI
La norme PCI définie un “header”
(en-tête) minimum, contenant les
informations critiques permettant
d'identifier un périphérique. Le
vendorID est attribué par le
consortium PCI à chaque fabricant
de
composants.
Les
BAR
permettent de détecter les besoins
en espace mémoire et entréesorties (IO).
Les signaux
Signaux d'adresse
Chaque périphérique répond à une plage d'adresses bien définie (éventuellement programmable) : par exemple,
sur un bus ISA, les adresses 0x0000 à 0x000F sont dédiées au contrôleur DMA, alors que les adresses 0x01F0 à
0x01FF permettent de communiquer avec le 1er disque dur.
Chacune de ces adresses peut être considérée comme un port d'entrée-sortie d'une largeur de 8 bits. Exemple :
pour envoyer à l'adresse 0x01F0 le contenu du registre AL, il suffit d'utiliser l'instruction assembleur OUT 0x01F0,
AL, ce message étant ainsi reçu par le contrôleur de disque dur. Inversement, pour lire un message envoyé par ce
port, on pourra employer l'instruction IN AL, 0x1F0.
Certains ports d'entrée/sortie ont une largeur de 16 ou 32 bits avec lesquels on communique en utilisant des
registres de la bonne largeur. Exemple : si 0x01F0 était un port 32 bits, on pourrait alors écrire OUT 0x01F0, EAX.
Dans ce cas, les bit d'indice 0 à 7 de EAX sont envoyés à l'adresse 0x01F0, les bits d'indice 8 à 15 en 0x01F1, les
bits de 16 à 23 en 0x01F2, et les bits de 24 à 32 en 0x01F3. Attention à ne pas confondre les adresses
d'entrée/sortie auquel on accède avec IN et OUT, avec les adresses en mémoire qui sont gérés avec les
instructions MOV, ADD, SUB...
Signaux de données
Sur un bus ISA dit 16 bits, les fils électriques transportant les données et les adresses auxquelles elles sont
destinées sont distincts : les fils numérotés de A0 à A23 transportent les 24 bits d'adresse tandis que les fils
numérotés de D0 à D15 transportent les 16 bits de données, ce qui fait en tout 40 bits. Sur les bus PCI dit 32 bits,
les 32 bits de données sont multiplexés sur les mêmes fils que les adresses, numérotés de AD0 à AD31, c'est-àdire que la même piste de cuivre ADi transmet, en deux cycles d'horloge successifs, le i-ième bit du mot d'adresse,
puis le i-ième bit du mot de donnée.
Signaux de contrôle
Il y 124 contacts sur un slot PCI, dont seulement 32 sont utilisés par les lignes AD0 à AD31. Les autres pistes
servent à a l'alimentation (nombreuses broches 0 V, +3.3 V et +5 Volts), à la synchronisation les échanges (signal
CLK, horloge du bus), à 3. vérifier l'intégrité de l'information (bit de parité couvrant les lignes AD0 à AD31), à
indiquer l'état du bus (l'opération qu'on est en train d'effectuer : entré/sortie, reset général, demande
d'interruption...).
Le contrôle d'interruption et les IRQ
Le raccordement physique entre les périphériques et le microprocesseur ne suffit pas pour que les échanges se
fassent bien. Il administrer la façon dont les échanges vont avoir lieu. Il y a deux techniques : - Le polling, qui
consiste à ce que le CPU interroge successivement tous les périphériques pour demander à chacun s'il a des
données à transmettre. - Les interruptions, qui consiste à attirer l'attention du CPU en demandant l'interruption du
programme en cours d'exécution, par une requête d'interruption (IRQ : Interrupt ReQuest). Cette requête
déclenche une routine de gestion spécifique permettant au CPU de traiter ou d'ignorer la demande du périphérique.
Dans la plupart des ordinateurs communs, c'est cette technique qui est utilisée.
Téléchargement