Le bus AGP, accélérateur d'affichage

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

Dernière mise à jour : 31 janvier 2005


L'AGP a été inventé par Intel en 1996 pour améliorer l'affichage de vidéos et en 3D. L'AGP se base sur les spécifications du bus PCI en essayant de contrer ses défauts en ce qui concerne la vitesse et la mémoire.

[Carte vidéo AGP]
Figure 1. Carte vidéo AGP

Le bus PCI est limité à une vitesse maximale de 133 Mb/s (en 32 bits), doit être partagé entre tous les périphériques, ne possède pas de priorités, etc. De plus, une fois les instructions et/ou données arrivées au microprocesseur, elles seront traitées en série, les unes après les autres.

Bien que basé sur les spécification du bus PCI, l'AGP est un bus qui ne relie que 2 points : le microprocesseur et la carte graphique. Ainsi, ce bus AGP n'est pas partagé : les données occupent toute la bande passante possible.

1. Augmenter la vitesse

Le protocole supportant l'AGP permet d'aller à 2,1 Gbytes/s (sur un bus à 266 MHz, voir les caractéristiques ci-dessous) parce qu'il utilise le signal montant et le signal descendant pour transmettre des données (comme dans la DDR-SDRAM ; le bus PCI n'utilise que le signal montant).

Intel a utilisé deux astuces supplémentaires pour augmenter la vitesse ...

Le pipelining : cette méthode d'organisation autorise la carte graphique à recevoir et répondre à plusieurs paquets de données dans une seule requête. Dans le bus PCI, la requête "n+1" n'est pas envoyée tant que la requête "n" n'est pas finie. En AGP, les requêtes n, n+1, n+2, ..., n+x peuvent être envoyées à la suite les unes des autres, sans attendre que la précédente ne soit terminée. La profondeur du pipelining AGP (i.e. la valeur du "x" ci-dessus) dépend de l'implémentation et reste transparente pour les applications. Ainsi, de manière plus concrète, une carte AGP recevra les informations de hauteur, largeur, données, etc. d'un coup, alors que, si les informations devaient transiter par le bus PCI, elles le seraient une à une, avec des temps d'attente entre les deux.

[Schéma de communication par pipelining et comparaison avec le bus PCI]
Figure 2. Schéma de communication par pipelining et comparaison avec le bus PCI

L'adressage en sidebank : par l'ajout de 8 connecteurs supplémentaires transportant les adresses, le protocole de l'AGP transporte plus de données sur les 32 connecteurs "normaux". Avec un bus PCI, les adresses étaient encapsulées dans les données (sur les 32 connecteurs classiques) et il fallait d'abord ouvrir le paquet, décoder l'adresse et puis s'occuper des données. Cela permet au contrôleur graphique d'y place de nouvelles adresses et nouvelles requêtes, tout en continuant à échanger des données (de précédentes adresses et requêtes) sur les 32 connecteurs classiques).

[Schéma de communication par sidebank addressing]
Figure 3. Schéma de communication par sidebank addressing

[Vue générale des vitesses avec l'AGP]
Figure 4. Vue générale des vitesses avec l'AGP

2. Partager la mémoire

Avec le perfectionnement des jeux en 3D, les textures employées sont devenues de plus en plus précises et lourdes. Les faire transiter par le bus PCI requiert de multiples va-et-vient entre la mémoire centrale (RAM), le microprocesseur, le chipset, la carte graphique (sa mémoire, son chipset), etc.

Avec le bus AGP, Intel autorise maintenant la carte graphique à venir chercher directement les données (de textures, par exemple) dans la mémoire centrale (RAM) au lieu de sa propre mémoire vidéo. Les zones de mémoire centrale (RAM) allouée où la carte vidéo peut venir lire directement sont appelées zones de mémoire AGP. Ce processus est appelé le DIME (Direct Memory Execute).

[AGP DIME, Direct Memory Execute]
Figure 5. Principe de fonctionnement de l'AGP DIME, Direct Memory Execute

Notons que les zones de mémoire AGP restent toujours accessibles par le microprocesseur (elles sont donc accessibles par le microprocesseur et la carte graphique). Il n'y a pas de perte de mémoire centrale. Cependant, cet accès ne peut pas se faire de manière concurrentielle (en même temps). Les textures n'ont donc besoin que d'être stockée qu'une fois, à un seul endroit.

Outre les avantages de la vitesse, du stockage unique et de l'augmentation des tailles des textures, cela a aussi un avantage économique car la mémoire centrale (RAM) est moins chère que la mémoire vidéo (VRAM).

Ce partage de la mémoire nécessite la pleine collaboration du système d'exploitation car c'est ce dernier qui détermine les zones de mémoire centrale (RAM) qui seront utilisables par la carte vidéo. Tant MS-Windows que GNU/Linux (via le module agpgart) supportent l'AGP.

Les cartes vidéo ont toutes l'habitude d'aller chercher des zones contiguës de mémoire VRAM. Or, dans la mémoire centrale (RAM), il n'y a pas de mécanisme d'allocation de mémoire contiguës (par contre, il y a bien un mécanisme qui retient à quoi appartiennent tous les petits bouts de mémoire). Intel a donc créé le GART (Graphics Address Remapping Table), une table qui retient, spécifiquement pour la carte vidéo, où se trouve les différents bouts de données dans la mémoire centrale (RAM) et qui les fait apparaître comme contigus pour la carte graphique.

[AGP GART, Graphics Address Remapping Table]
Figure 5. Principe de fonctionnement de l'AGP GART, Graphics Address Remapping Table

Grâce au sidebank addressing, la carte graphique peut lire les textures en mémoire centrale (mémoire AGP) tout en lisant / écrivant les valeurs des pixels correspondant à cette texture en mémoire vidéo.

3. Caractéristiques des différentes versions de l'AGP

AGP 1.0 (ou AGP 1.x) :

  • canal 32 bits à 66 MHz, signal de 1,5 ou 3,3 volts
  • données uniquement sur le signal montant
  • vitesse maximale = 266 Mb/s

AGP 2x :

  • canal 32 bits à 66 MHz, signal de 1,5 ou 3,3 volts
  • données sur le signal montant et descendant (fréquence effective = 133 MHz)
  • vitesse maximale = 533 Mb/s

AGP 4x :

  • canal 32 bits à 133 MHz, signal de 1,5 volts
  • données sur le signal montant et descendant (fréquence effective = 266 MHz)
  • vitesse maximale = 1 Gb/s

AGP 8x :

  • canal 32 bits à 266 MHz, signal de 0,8 volts
  • données sur le signal montant et descendant
  • vitesse maximale = 2,1 Gb/s

AGP Pro n'est qu'un AGP "normal" qui permet de fournir plus de courant à la carte vidéo (3,3 et 12 volts) et possède toute une série de caractéristiques thermiques, etc. pour le haut de gamme.

4. Autres utilisations et futur de la norme

Une autre utilisation "courante" de l'AGP : la connection de disques durs en RAID sur le port AGP de serveurs qui ne possèdent pas de carte graphique (administrables à distance). Ces disques durs bénéficient alors de l'augmentation de bande passante vers le microprocesseur.

L'utilisation de l'AGP sera bientôt dépassée car Intel a déjà prévu de le remplacer (vers 2005) par sa nouvelle norme : le PCI-Express.

Références et liens pour approfondir le sujet