« Fonctionnement d'un ordinateur/Les périphériques et les cartes d'extension » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 1 :
Après avoir vu les composants internes à un ordinateur, il est temps de passer aux composants connectés sur l'unité centrale, les fameux '''périphériques'''. Dans ce chapitre, nous allons étudier les cartespériphériques son,d’entrée leset cartesde graphiques,sortie : les claviers, l'écran, etc.
 
==La carte son==
 
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'''.
 
Une carte son est composée de plusieurs sous-composants. Le premier recueille la tension transmise par le micro-phone et la convertit en
binaire. Ce composant est le '''convertisseur analogique-numérique''', ou CAN. Celui-ci est relié à un composant qui mesure la tension envoyée par le microphone à intervalles régulier : l''''échantillonneur'''. Le second composant transforme des informations binaires en tension à envoyer à un haut-parleur. Ce composant s'appelle le '''convertisseur numérique-analogique''', ou CNA. Évidemment, on trouve aussi des circuits chargés de gérer les transferts entre la mémoire et la carte son, et éventuellement un processeur pour prendre en charge divers effets sonores.
 
[[File:CARTE SON - architecture.PNG|centre|Architecture d'une carte son.]]
 
En aval du CAN, 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.
 
[[File:CARTE SON - architecture - 3.PNG|centre|Architecture d'une carte son avec les mémoires tampons.]]
 
===Échantillonneur===
 
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-bloquer 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.
 
[[File:Sample-hold-circuit.svg|centre|Echantillonneur-bloqueur.]]
 
===Convertisseur analogique-numérique===
 
Le CAN convertit la tension du microphone en nombres codés en binaire. Un signal analogique ne peut pas être traduit en numérique sans pertes, l'infinité de valeurs d'un intervalle de tension ne pouvant être codé sur un nombre fini de bits. La tension envoyée va ainsi être arrondie à une tension qui peut être traduite en un entier sans problème. Cette perte de précision va donner lieu à de petites imprécisions qui forment ce qu'on appelle le '''bruit de quantification'''. Plus le nombre de bits utilisé pour encoder la valeur numérique est élevée, plus ce bruit est faible. 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.
 
[[File:Quantized.signal.svg|centre|Signal analogique convertit en numérique.]]
 
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.
 
[[File:Partage de CAN sur plusieurs entrées.PNG|centre|Partage de CAN sur plusieurs entrées.]]
 
==La carte réseau==
 
La '''carte réseau''' est le composant qui permet à notre ordinateur de communiquer sur un réseau (local ou internet). LA plupart permet d'envoyer ou de recevoir des informations sur un câble réseau ou une connexion WIFI. Elle 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). 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.
 
[[File:Architecture matérielle d'une carte réseau.png|centre|Architecture matérielle d'une carte réseau.]]
 
==La carte graphique==
 
Les cartes graphiques sont des cartes qui s'occupent de communiquent 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.
 
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).
 
[[File:Architecture interne d'une carte d'affichage en mode graphique.png|centre|Composants de la carte vga]]
 
===Les cartes accélératrices 2D===
 
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).
 
[[File:Hardware sprites.png|centre|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===
 
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.
 
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.
 
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.
 
<gallery widths=400px heights=400px>
Architecture de base d'une carte 3D - 2.png|Carte 3D avec gestion des textures et ROP uniquement.
Architecture de base d'une carte 3D - 4.png|Carte 3D avec gestion matérielle de la géométrie.
Architecture de base d'une carte 3D - 6.png|Carte 3D avec processeurs de shaders unifiés.
</gallery>
 
==Le clavier==