Fonctionnement d'un ordinateur/Les cartes filles

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Dans ce chapitre, nous allons étudier les cartes filles, les cartes d'extension qui se connectent sur la carte mère. Nous allons notamment voir la carte son, la carte graphique et les cartes réseau.

La carte son[modifier | modifier le wikicode]

Dans un ordinateur, toutes les données sont codées sous forme numérique, c'est à dire sous la forme de nombres entiers/ou avec un nombre de chiffres fixes après la virgule. Les ordinateurs actuels utilisent du binaire. Les informations sonores sont aussi stockées dans notre PC en binaire. Toutes vos applications qui émettent du son sur vos haut-parleurs stockent ainsi du son en binaire/numérique. Seulement, les haut-parleurs et microphone sont des composants dits analogiques, qui codent ou décodent l'information sonore sous la forme d'un tension électrique, qui peut prendre toutes les valeurs comprises dans un intervalle. Dans ces conditions, il faut bien faire l'interface entre les informations sonores numérique du PC, et le haut-parleur ou micro-phone analogique. Ce rôle est dévolu à un composant électronique qu'on appelle la carte son.

L'architecture globale[modifier | modifier le wikicode]

L'usage des microphones et des haut-parleurs demande de faire des conversions entre analogique et numérique. Les microphones transforment un signal sonore en un signal électrique analogique, alors que les haut-parleurs font l'inverse. Mais ces signaux analogiques ne sont pas compréhensibles par le reste de l'ordinateur, qui est composée de circuits numériques. C'est pour cela que la carte son doit faire la conversion des signaux analogiques en signaux numériques, en binaire.

  • Pour le micro-phone, la conversion doit traduire un signal analogique, proportionnel à l'intensité sonore, en signal numérique. Le convertisseur analogique-numérique, ou CAN, recueille la tension transmise par le micro-phone et la convertit en binaire. Il est relié à un composant qui mesure la tension envoyée par le microphone à intervalles régulier : l'échantillonneur.
  • De même, pour gérer les sorties haut-parleur, la carte son doit traduire le signal numérique provenant de l'ordinateur en un signal analogique utilisable par les haut-parleurs. Le convertisseur numérique-analogique, ou CNA, transforme des informations binaires en tension à envoyer à un haut-parleur.
CPT-Sound-ADC-DAC

En plus de tout cela, la carte son contient, au minimum, des circuits chargés de gérer les transferts entre la mémoire et la carte son, des circuits de communication avec le bus.

Architecture d'une carte son.

Il faut signaler que certaines cartes sont possèdent un processeur, qui s'occupe du calcul de divers effets sonores. Ce processeur est techniquement un processeur de traitement de signal, aussi appelé DSP, à savoir un type de processeur que nous aborderons en détail d'ici quelques chapitres. Ce DSP est placé en aval du CNA, ce qui est évident quand on sait que le processeur ne peut traiter que des informations numériques.

CARTE SON avec DSP

En aval du CAN (ou du DSP, cas échéant), on trouve une petite mémoire dans laquelle sont stockées les informations qui viennent d'être numérisée. Cette mémoire sert à interfacer le processeur avec le CNA : le processeur est forcément très rapide, mais il n'est pas disponible à chaque fois que la carte son a fini de traduire un son. Les informations numérisées sont donc accumulées dans une petite mémoire FIFO en attendant que le processeur puisse les traiter. La même chose a lieu pour le CNA. Le processeur étant assez pris, il n'est pas forcément capable d'être disponible tous les 10 millisecondes pour envoyer un son à la carte son. Dans ces conditions, le processeur prépare à l'avance une certaine quantité d'information, suffisamment pour tenir durant quelques millisecondes. Une fois qu'il dispose de suffisamment d’informations sonores, il va envoyer le tout en une fois à la carte son. Celle-ci stockera ces informations dans une petite mémoire FIFO qui les conservera dans l'ordre. Elle convertira ces informations au fur et à mesure, à un fréquence régulière.

Architecture d'une carte son avec les mémoires tampons.

L'échantillonneur[modifier | modifier le wikicode]

La tension transmise par le microphone varie de manière continue, ce qui rend sa transformation en numérique difficile. Pour éviter tout problème, la valeur de la tension est mesurée à intervalle réguliers, tout les 20 millisecondes par exemple. On parle alors d’échantillonnage. Le nombre de fois que notre tension est mesurée par seconde s'appelle la fréquence d'échantillonnage. Pour donner quelques exemples, le signal sonore d'un CD audio a été échantillonné à 44,1 kHZ, c'est à dire 44100 fois par secondes. Plus cette fréquence est élevée, plus le son sera de qualité, proche du signal analogique mesuré. C'est ce qui explique qu'augmenter la fréquence d'échantillonnage augmente la quantité de mémoire nécessaire pour stocker le son. Sur les cartes sons actuelles, il est possible de configurer la fréquence d'échantillonnage.

L’échantillonnage est réalisé par un circuit appelé l’échantillonneur-bloqueur. L'échantillonneur-bloqueur le plus simple ressemble au circuit du schéma ci-dessous. Les triangles de ce schéma sont ce qu'on appelle des amplificateurs opérationnels, mais on n'a pas vraiment à s'en préoccuper. Dans ce montage, ils servent juste à isoler le condensateur du reste du circuit, en ne laissant passer les tensions que dans un sens. L'entrée C est reliée à un signal d'horloge qui ouvre ou ferme l'interrupteur à fréquence régulière. La tension va remplir le condensateur quand l'interrupteur se ferme. Une fois le condensateur remplit, l'interrupteur est déconnecté isolant le condensateur de la tension d'entrée. Celui-ci mémorisera alors la tension d'entrée jusqu'au prochain échantillonnage.

Echantillonneur-bloqueur.

Les convertisseurs entre analogique et numérique[modifier | modifier le wikicode]

Pour faire les conversions analogiques-numériques, on utilise deux circuits, vus dans les chapitres en début de cours :

  • Le circuit qui convertit un signal analogique en signal numérique cela est un CAN (convertisseur analogique-numérique).
  • Le circuit qui fait la conversion inverse est un CNA (convertisseur numérique-analogique).
CAN & CNA

Le signal numérique de la carte son, utilisé pour coder le son, utilise un certain nombre de bits. Sur les cartes sons actuelles, ce nombre de bits porte un nom : c'est la résolution de la carte son. Celui-ci varie entre 16 et 24 bits sur les cartes sons récentes.

Le multiplexeur analogique[modifier | modifier le wikicode]

Une carte son peut supporter plusieurs entrées analogiques. Malheureusement, cela couterait trop cher de mettre plusieurs CAN sur une carte son. A la place, les concepteurs de cartes sons mutualisent le CAN sur plusieurs entrées analogiques grâce à un multiplexeur analogique. Ce multiplexeur récupère les tensions des différentes entrées, et en choisira une qui est recopiée sur la sortie. Ce multiplexeur comporte une entrée de commande qui permet de choisir quelle entrée sera choisie pour être recopiée sur la sortie. Ce multiplexeur est ensuite suivi par un amplificateur,qui fait rentrer la tension fournit en entrée dans un intervalle de tension compatible avec le CAN.

Partage de CAN sur plusieurs entrées.

La carte graphique[modifier | modifier le wikicode]

Les cartes graphiques sont des cartes qui s'occupent de communiquer avec l'écran, pour y afficher des images. Au tout début de l'informatique, ces opérations étaient prises en charge par le processeur : celui-ci calculait l'image à afficher à l'écran, et l'envoyait pixel par pixel à l'écran, ceux-ci étant affichés immédiatement après. Cela demandait de synchroniser l'envoi des pixels avec le rafraichissement de l'écran.

Les cartes d'affichage[modifier | modifier le wikicode]

Pour simplifier la vie des programmeurs, les fabricants de matériel ont inventé des cartes d'affichage, ou cartes vidéo. Avec celles-ci, le processeur calcule l'image à envoyer à l'écran, et la transmet à la carte d'affichage. Celle-ci prend alors en charge son affichage à l'écran, déchargeant le processeur de cette tâche. De telles cartes vidéo étaient alors très simples : elles contenaient un controleur de bus, une mémoire vidéo, un CRTC qui s'occupait de lire les pixels dans l'ordre pour les envoyer à l'écran (suivant la fréquence de rafraichissement de l'écran et sa résolution), et de circuits annexes (comme le DAC, qui convertissait les pixels en informations analogiques).

Composants de la carte vga

Les cartes accélératrices 2D[modifier | modifier le wikicode]

Avec l'arrivée des interfaces graphiques, les concepteurs de cartes vidéo ont permis à celles-ci d'accélérer le rendu 2D. La base d'un rendu en 2D est de superposer des images 2D précalculées les unes au-dessus des autres. Par exemple, on peut avoir une image pour l’arrière plan(le décor), une image pour le monstre qui vous fonce dessus, une image pour le dessin de votre personnage, etc. Ces images sont appelées des sprites. Ces images sont superposées les unes au-dessus des autres, au bon endroit sur l'écran.

D'ordinaire, cela se traduit dans la mémoire vidéo par une copie des pixels de l'image à superposer sur l'image d'en-dessous. Les premières cartes graphiques 2D comprenaient des circuits pour faire ces copies directement dans la mémoire vidéo. Au lieu de laisser le processeur faire ces copies lui-même, en adressant la mémoire vidéo, il pouvait placer les sprites à rendre dans la mémoire vidéo et demander à la carte 2D de faire les copies elles-même. Ceux-c pouvaient aussi gérer les images transparentes (je ne détaille pas comment ici).

Avec d'autres cartes 2D, les sprites ne sont pas ajoutés sur l’arrière-plan : celui-ci n'est pas modifié. À la place, c'est la carte graphique qui décidera d'afficher les pixels de l’arrière-plan ou du sprite pendant l'envoi des pixels à l'écran, lors du balayage effectué par le CRTC. Pour cela, les sprites sont stockés dans des registres (voire des RAM pour l'arrière-plan). Pour chacune des RAM associée au sprite, on trouve trois registres permettant de mémoriser la position du sprite à l'écran : un pour sa coordonnée X, un autre pour sa coordonnée Y, et un autre pour sa profondeur (pour savoir celui qui est superposé au-dessus de tous les autres). Lorsque le CRTC demande à afficher le pixel à la position (X , Y), chacun des registres de position est alors comparé à la position envoyée par le CRTC. Si aucun sprite ne correspond, les mémoires des sprites sont déconnectées du bus. Le pixel affiché est celui de l'arrière-plan. Dans le cas contraire, la RAM du sprite est connectée sur le bus, et son contenu est envoyé au framebuffer ou au RAMDAC. Si plusieurs sprites doivent s'afficher en même temps, le bus choisit celui dans la profondeur est la plus faible (celui superposé au-dessus de tous les autres).

Sprites matériels.

Cette technique a autrefois été utilisée sur les anciennes bornes d'arcade, ainsi que sur certaines console de jeu bon assez anciennes. Mais de nos jours, elle est aussi présente dans les cartes graphiques actuelles dans un cadre particulièrement spécialisé : la prise en charge du curseur de la souris, ou le rendu de certaines polices d'écritures ! Les cartes graphiques contiennent un ou plusieurs sprites, qui représentent chacun un curseur de souris, et deux registres, qui stockent les coordonnées x et y du curseur. Ainsi, pas besoin de redessiner l'image à envoyer à l'écran à chaque fois que l'on bouge la souris : il suffit de modifier le contenu des deux registres, et la carte graphique place le curseur sur l'écran automatiquement. Pour en avoir la preuve, testez une nouvelle machine sur laquelle les drivers ne sont pas installés, et bougez le curseur : effet lag garantit !

Les cartes accélératrices 3D[modifier | modifier le wikicode]

Le premier jeu à utiliser de la "vraie" 3D fût le jeu Quake, premier du nom (un excelent jeu, en passant). Et depuis sa sortie, presque tous les jeux vidéos un tant soit peu crédibles utilisent de la 3D. Face à la prolifération de ces jeux vidéos en 3D, les fabricants de cartes graphiques se sont adaptés et ont inventé des cartes capables d'accélérer les calculs effectués pour rendre une scène en 3D : les cartes accélératrices 3D.

Les toutes premières cartes graphiques contenaient simplement des circuits pour gérer les textures, ainsi qu'un framebuffer. Seules l'étape de texturing, quelques effets graphiques (brouillard) et l'étape d'enregistrement des pixels en mémoire étaient prises en charge par la carte graphique. L'étape de texturing est réalisée par un circuit spécialisé, l'unité de textures. L'enregistrement de l'image a afficher, ainsi que les calculs de profondeurk de brouillard, et autres, sont réalisés par les Raster Operation Pipeline, ou ROP. Par la suite, ces cartes s’améliorèrent en ajoutant plusieurs circuits de gestion des textures, pour colorier plusieurs pixels à la fois : c'est ce qu'on appelle du multitexturing. Les cartes graphiques construites sur cette architecture sont très anciennes : ATI rage, 3DFX Voodoo, Nvidia TNT, etc.

Carte 3D avec gestion des textures et ROP uniquement.

Les cartes suivantes ajoutèrent une gestion des étapes de rasterization directement en matériel. Les cartes ATI rage 2, les Invention de chez Rendition, et d'autres cartes graphiques supportaient ces étapes en hardware. La première carte graphique capable de gérer la géométrie fût la Geforce 256, la toute première Geforce. Elle disposait pour cela d'un circuit pour manipuler les vertices et la géométrie. Pour plus d'efficacité, ces cartes graphiques possédaient parfois plusieurs unités de traitement des vertices et des pixels, ou plusieurs ROP. De nos jours, toutes les cartes 3D possèdent un tel circuit de traitement de la géométrie.

Carte 3D avec gestion matérielle de la géométrie.

Par la suite, les circuits qui gèrent les calculs sur les pixels et les vertices sont devenus des processeurs programmables. Au tout début, seuls les traitements sur les vertices étaient programmables. C'était le cas sur les NVIDIA's GeForce 3, GeForce4 Ti, Microsoft's Xbox, et les ATI's Radeon 8500. Puis, les cartes suivantes ont permis de programmer les traitements sur les pixels : certains processeurs s'occupaient des vertices, et d'autres des pixels. Sur les cartes graphiques récentes, les processeurs peuvent traiter indifféremment pixels et vertices.

Carte 3D avec processeurs de shaders unifiés.

Pour résumer, l'évolution des cartes graphiques s'est réalisée en trois temps : un temps où des circuits dédiés étaient utilisés pour tout traitement graphique, un autre où le rendu est devenu programmable, et un dernier temps où géométrie et traitement des pixels sont devenus traités par des processeurs unifiés.

GPUarchitecture001

L'architecture d'une carte graphique actuelle est assez complexe et on y retrouve beaucoup de circuits spécialisés. Dans les grandes lignes, on y trouve :

  • un circuit de communication avec le bus graphique de la carte mère ;
  • un circuit de gestion de la mémoire vidéo et la mémoire vidéo proprement dite ;
  • des circuits de calcul graphique, qui ne sont rien de plus qu'un ensemble de processeurs parallèles ;
  • des circuits d'interfacage avec les sorties vidéos, qui gérent le VGA? le HDMI, et autres sorties écran ;
  • des circuits d'accélération de la vidéo, qui accélérent le rendu des vidéos, films, et autres ;
  • des circuits annexes, similaires à ceux qu'on trouve dans un CPU ou un PC : gestion de la puissance, BIOS vidéo, etc.
Generic block diagram of a GPU

La carte réseau[modifier | modifier le wikicode]

La carte réseau est le composant qui permet à notre ordinateur de communiquer sur un réseau (local ou internet). Elle permet d'envoyer ou de recevoir des informations sur un câble réseau ou une connexion WIFI. Pour mieux comprendre son fonctionnement et les rôles qu'elle doit jouer, je vous conseille la lecture de mon wikilivre sur les réseaux informatiques, et notamment la lecture du chapitre sur la couche liaison.

La carte réseau communique avec le reste de l'ordinateur via le bus de la carte mère. Les données échangées sont mémorisées temporairement dans une mémoire tampon. Celle-ci permet de mettre en attente les données à envoyer tant que le réseau n'est pas disponible, ou d'accumuler les données reçues en attendant de les recevoir complètement. Ces données sont ensuite gérées par un circuit qui s'occupe de gérer les aspects réseau de la transmission : ajout/retrait des adresses MAC pour l'encapsulation, calcul de la somme de contrôle. Ce circuit est suivi d'une mémoire appelée la fenêtre glissante, qui contrôle l'ordre d'envoi des paquets. La carte réseau contient ensuite un circuit qui transforme les données à transmettre en ondes WIFI ou en signaux électriques (pour les câbles réseau). Dans tous les cas, les transferts d'informations se font en série (le câble est l'équivalent d'un bus série). L'interface de transfert contient donc deux registres à décalage : un pour faire la conversion parallèle -> série, et un autre pour la conversion série -> parallèle. En parallèle, on trouve un circuit qui détecte les conflits d'accès aux bus et qui les gère.

Architecture matérielle d'une carte réseau.