Bus PCI et dialogue avec le disque dur

URL: http://www.poirrier.be/~jean-etienne/notes/structordi/pcidd.php

Dernière mise à jour : 31 janvier 2005

Indtroduction
Histoire de l'IDE
La succession des ATA
Dialogue entre maître et esclave
Dialogue entre contrôleur IDE et pont sud
Bus Mastering et ISP
Plug and Play
Et après le PCI ?


Si on résume les communications entre les différents composants d'une carte mère, on a :

Schéma des communications entre les différents composants principaux d'une carte mère

  • le microprocesseur (CPU) possède maintenant ses caches L1 et L2 au sein de lui-même et il communique avec le pont nord (North Bridge) via le Front Side Bus (FSB) ;
  • dans ce pont nord se trouvent une série de contrôleurs comme, par exemple, le contrôleur de mémoire (memory controller, contrôlant le bus vers la mémoire RAM), le contrôleur PCI (gérant les IRQ, DMA, etc.) et le contrôleur vidéo (donnant accès au bus AGP) ;
  • du pont nord (plus précisément du contrôleur PCI se trouvant dans le pont nord) part le bus PCI, servant à gérer les cartes d'extension modernes (réseau, SCSI, modem, etc.) ;
  • le bus PCI relie aussi le pont nord et le pont sud (South Bridge) ;
  • le pont sud va gérer les connections vers les ports USB, vers le BIOS, vers le bus IDE/EIDE (et donc les disques durs) et vers le bus ISA ;
  • le bus ISA sert à gérer les cartes d'extensions plus anciennes (réseau, SCSI, modem, etc.) ;
  • mais le bus ISA sert aussi à relier le pont sud au MultiIO Controller, ce dernier gérant les communications vers le clavier, lecteur de disquette, port parallèle et port série.

Histoire de l'IDE

Ou pourquoi a-t-on inventé l'IDE ?

Aux débuts de l'informatique (vers 1985), les disques durs et leurs contrôleurs étaient vendus séparément, ce qui impliquait de possibles incompatibilités.

On a alors introduit la norme IDE (Integrated Drive Electronics) qui repousse le contrôleur dans le périphérique. Maintenant, le disque dur contient son propre contôleur (logiquement compatible), intégré dans sa boîte. Ainsi, maintenant, là où on enfiche le câble IDE, ce n'est juste qu'un connecteur vers le pont sud.

Ensuite, on a introduit la norme ATA (AT Attachment), basée sur l'IDE (donc comprenant contrôleur et disque dur dans la même boîte). A partir de ce moment, il va aussi y avoir une mémoire tampon dans la boîte du disque dur. On pourra ainsi stocker un secteur entier au lieu d'une lecture bit à bit. (Pour info, la taille d'un secteur est approximativement de 3 mm de long et 6 μm d'épaisseur)

Et, finalement, on a intégré le tout dans la norme ISA (Industry Standard Architecture), passant le tout à 16 bits et 8 MHz. Comme l'IDE marchait bien, on est aussi passé à ce moment-là à cette norme pour les supports de masse non fixe (ex. : lecteur de disquette, lecteur de CD-ROM, certains lecteurs de bande, etc.).

La succession des ATA

Au début était l'ATA1, invention de Compaq, avec des connecteurs 40 pins (sans alimentation ; 44 pins avec). C'est aussi la première fois où on a entendu parler des notions de maîtres et esclaves avec le PIO (Programmed Input Output). En effet, au début, le microprocesseur gérait tout. Puis, au fur et à mesure, des processeurs spécifiques sont apparus pour décharger le microprocesseur central et être plus performant dans certaines tâches. C'est ce que fait le PIO : la gestion des échanges entre les mémoires.

Avec l'ATA2, on passe au DMA (Direct Memory Access) grâce auquel un périphérique peut passer directement de l'information à la RAM sans passer par le microprocesseur (notamment l'accès direct à certaines fenêtres de mémoire). On gagne ainsi de la vitesse car on évite la redirection par le CPU : on passe de 4,16 Mb/s à 16,67 Mb/s.

C'est aussi au moment de l'ATA2 qu'est introduit le LBA (Logical Block Addressing) et la nouvelle "convention" CHS ... Avant, dans le CMOS, on avait 10 bits pour les cylindres (on pouvait aller jusque 1024 cylindres), 8 bits pour les têtes (head, maximum 256) et 6 bits pour les secteurs (maximum 63). On était donc limité à 8,4 Gb de mémoire sur le disque dur. Tout çà à cause du CMOS, pas du disque. Avec le LBA, la limite est levée.

Avec l'ATA3, on rajoute juste des codes de contrôle.

Avec l'ATA4, on passe aux modes UDMA (Ultra DMA) et ATAPI (AT Attachment Program Interface). La norme ATAPI est devenue un standard pour tout ce qui concerne les périphériques amovibles (removable media) : disquettes, cassettes, etc.

L'UDMA fait passer le débit à 33 Mb/s. Mais, à de telles fréquences, des interférences électriques apparaissent. On voit ainsi les limites des câbles à 40 fils/broches (dont, en plus, on ne pouvait pas dépasser 18 pouces = 50 cm de longueur) : les interférences entre les fils font que les données (envoyées en même temps) n'arrivent pas en même temps à l'autre bout du câble.

interférences entre les câbles

La tension passant dans un fil (en noir) produit un champ magnétique (en vert). Plus la tension varie au cours du temps, plus le champ augmente. Ce champ a alors un influence sur le câble voisin, perturbant le signal. A son tour, le câble voisin ...

Pour résoudre le problème, on aurait pu espacer les câbles. Mais on ne l'a pas fait (question d'encombrement). A la place, on a créé un câble à 80 fils/broches :

  • 40 fils transportent effectivement l'information ;
  • 40 fils intercalés sont tous reliés à la terre et entre eux (l'influence de l'un est ainsi compensée par l'autre).

Finalement, l'ATAPI 5 est de l'UDMA mode 4, travaillant à 66 Mb/s. Et l'UDMA mode 5 travaille à 100 Mb/s.

Nomenclature ATANomenclature UDMADébit
ATA4UDMA mode 233 Mb/s
ATAPI 5UDMA mode 466 Mb/s
 UDMA mode 5100 Mb/s

Pour travailler à de telles vitesses, il faut les bons disques durs, contrôleurs, BIOS et conducteurs physiques (à 80 fils).

Ce qu'il y a de bien, c'est que les constructeurs ont maintenu la compatibilité ascendante et descendante (forward and backward compatibility) :

  • sur une vieille machine, un nouveau disque dur va s'adapter et ralentir ;
  • avec un vieux disque dur, un nouvelle machine va s'adapter et ralentir.

Donc il se peut qu'on ait acheté un tout nouveau super disque dur et qu'on n'utilise pas toutes ses ressources parce que la carte mère est plus ancienne. Ainsi, avant achat d'un disque dur, il est conseillé de se renseigner sur sa carte mère (notamment grâce au numéro de BIOS et au site http://www.wimsbios.com/).

Dialogue entre maître et esclave

Comme les contrôleurs sont sur les disques durs, ils doivent communiquer entre eux pour voir qui va être maître ou esclave ... En pratique, le fils 28 va jusqu'au premier connecteur et pas au-delà. Facile, pour voir qui est maître et esclave !

Quand l'esclave veut envoyer des données, il envoie un message au maître pour voir s'il peut parler. Si le maître ne fait rien, il dit "ok". Sinon, il envoie un signal d'attente.

En pratique, dans une "nappe" à 3 connecteurs, on place le bleu sur la carte mère, le noir en master et le gris en slave. Et, en principe, le fil rouge est en 1 (représente le fils n°1).

Dialogue entre contrôleur IDE et pont sud

Le contrôleur IDE et le pont sud ne fonctionnent pas à la même vitesse. Et pourtant ils communiquent. Le principe est simple : comme pour certains types de mémoires, on détecte les phases montantes (raising edge) et descendantes (falling edge) du signal.

De plus, on a également augmenté les fréquences de transfert du bus :

  • un disque dur fonctionnant à 100 MHz va être relié à un bus à 50 MHz ;
  • un disque dur fonctionnant à 133 MHz va être relié à un bus à 66,6 MHz.

Bus Mastering et ISP

Pour encore accélérer les transferts, on a développé le Bus Mastering (c'est en option, on n'est pas obligé de l'utiliser). Avec cette technique, chacun des éléments connectés au bus PCI peut prendre le contrôle total du bus et faire comme s'il était seul sur le bus ("Tout le monde n'écoute plus que moi"). Cette technique marche aussi maintenant au niveau du bus IDE. En principe, c'est plus rapide mais on ne voit pas de différence si un programme accède beaucoup au disque dur ou s'il y a plusieurs programme concurrents.

Cette technique fonctionne grâce à l'ISP (Integrated System Peripheral) ... Le périphérique qui veut prendre le contrôle du bus adresse une demande à l'ISP. Ce dernier va voir si il n'y a pas déjà un autre qui a le contrôle total. S'il n'y en a pas, il accède à la demande. S'il y en a, l'ISP établit des priorités avec l'ordre suivant :

  1. la RAM (pour ses refresh, principalement) ;
  2. les transferts DMA ;
  3. le processeur ;
  4. finalement, la carte ou le disque dur effectuant la demande.

Note : les cartes capables de faire du Bus Mastering sont uniquement PCI et ont 49 connecteurs (alors que les cartes PCI sans Bus Mastering en ont 47).

Plug and Play

Le Plug and Play (PnP, "Connecte et utilise") est une autre caractéristique du bus PCI. Il est utilisé dans les systèmes d'exploitation Microsoft à partir de MS-Windows 95.

Pour que le PnP fonctionne, il faut trois choses :

  1. il faut que le BIOS puisse le faire (BIOS compatible) ;
  2. ESCD (Extended System Configuration Data) ;
  3. le système d'exploitation doit le supporter aussi.

La carte d'extension PnP a besoin :

  • d'un numéro d'IRQ,
  • d'un canal DMA,
  • d'une zone de mémoire pour ses données.

Comment çà marche ?

Quand on démarre, le BIOS va interroger les différents slots pour voir s'il y a quelque chose. S'il trouve quelque chose, il va demander à la carte de lui envoyer une identification (dans un langage prédéfini) et le BIOS va voir dans le fichier ESCD, sur le disque dur (comme la configuration déjà trouvée aux précédents démarrage doit être sauvée et que le CMOS est petit, le fichier ESCD va se trouver sur le disque dur). Si on a inséré une nouvelle carte avant le démarrage, son identification ne se trouve pas dans le fichier ESCD. Le BIOS va lui attribuer alors de nouvelles ressources systèmes et les inscrire dans le fichier ESCD.

Si on a le système d'exploitation MS-Windows, celui-ci se charge en mémoire et scanne à son tour le bus PCI. Dans son propre fichier ESCD (system.dat), il ne trouve pas non plus d'attribution ni de pilote (driver) pour la nouvelle carte. MS-Windows affiche alors la première fenêtre du processus d'installation (nécessitant de 1. trouver le driver et 2. l'installer).

Après, la machine doit être relancée ou non, en fonction des besoins de la carte. Si on reboote, le système (tant le BIOS que MS-Windows) va trouver les bon paramètres pour la carte.

panneau de configuration de MS-Windows
Un exemple de configuration montrée par le panneau de configuration de MS-Windows

Et après le PCI ?

Pour le futur, les tendances seraient ...

  • d'augmenter la largeur du bus PCI pour arriver à des taux de transfert de 1 Gb/s ;
  • de paralléliser les transferts (un peu comme la RAMBUS) avec le "Point to Point Connection" : si un périphérique veut discuter avec un autre, qu'ils se mettent d'accord sur un langage et une largeur de bus. Le bus sera alors fragmenté en sous-canaux pour permettre le dialogue de plusieurs applications en parallèle.