Processeur graphique
Un processeur graphique, ou GPU (de l'anglais Graphics Processing Unit), Ă©galement appelĂ© coprocesseur graphique sur certains systĂšmes, est une unitĂ© de calcul assurant les fonctions de calcul d'image. Il peut ĂȘtre prĂ©sent sous forme de circuit intĂ©grĂ© (ou puce) indĂ©pendant, soit sur une carte graphique ou sur la carte mĂšre, ou encore intĂ©grĂ© au mĂȘme circuit intĂ©grĂ© que le microprocesseur gĂ©nĂ©ral (on parle d'un SoC lorsqu'il comporte toutes les puces spĂ©cialisĂ©es). Dans la terminologie d'AMD un GPU intĂ©grĂ© Ă la mĂȘme puce que le processeur est appelĂ© APU, et dans la terminologie d'Intel un IGP). La sortie peut ĂȘtre affichĂ©e Ă l'Ă©cran, ou retraitĂ© en RAM ou VRAM pour diffĂ©rents usages, telle que l'Ă©criture sur mĂ©moire de masse ou un nouveau traitement interne. Un processeur graphique a gĂ©nĂ©ralement une structure hautement parallĂšle (voir accĂ©lĂ©ration matĂ©rielle) qui le rend efficace pour une large palette de tĂąches graphiques comme le rendu gĂ©omĂ©trique 2D ou 3D, s'opĂ©rant gĂ©nĂ©ralement dans une mĂ©moire vidĂ©o dĂ©diĂ©e. Une unitĂ© de traitement du signal vidĂ©o peut ĂȘtre couplĂ©e Ă ce processeur pour le dĂ©codage ou l'encodage de vidĂ©o dans diffĂ©rents formats tels que Mpeg, etc.. Enfin, Ce parallĂ©lisme permet Ă©galement le calcul intensif en gĂ©nĂ©ral, lorsqu'il s'agit d'un GPGPU (anglais : General Purpose GPU, signifiant GPU Ă vocation gĂ©nĂ©raliste).
Les bibliothÚques d'utilisation de ces processeurs les plus répandues sont les standards OpenGL et Vulkan, la bibliothÚque spécifique à Microsoft Windows, Direct3D et la bibliothÚque spécifique à MacOS, Metal. La bibliothÚque standard OpenCL est dédiée au calcul intensif, et une plus spécifique créée par Nvidia est Cuda.
Leur parallélisme poussé les rend aussi intéressants comme processeurs de calcul matriciel, pour casser des codes en « force brute »[1], de minage de cryptomonnaies, ou pour la création de corpus d'intelligence artificielle[2].
Enfin, leur rapport performance/prix les avantage pour le calcul[3].
Types de processeurs graphiques
Il existe différents types de processeurs graphiques, également appelés processeurs géométriques.
Les tùches graphiques au sein de premiers systÚmes informatiques étaient partagés entre processeur géométrique (quand il y en avait un) et processeur vidéo (indispensable pour envoyer l'image à afficher vers l'écran). Le premier est chargé de faire des opérations graphiques au sein de la mémoire, allégeant ainsi le processeur général de cette tùche.
Aujourd'hui on parle également de processeur vidéo pour désigner un processeur de traitement de signal, utilisé pour le décodage de vidéogrammes, ça n'est pas le sujet abordé ici. Les processeurs vidéos dans leur fonction graphique, permettent sur les premiers systÚmes informatiques de modifier l'image au moment de l'envoyer à l'écran, alors typiquement, un écran à balayage, utilisant un canon à électron parcourant l'écran de gauche à droite et de haut en bas. Ce processeur est synchronisé avec le balayage, et permet donc de gérer de façon synchrone plus ou moins de modification sur l'image (position à lire en mémoire, couleur), évitant ainsi le processeur principal et le processeur graphique de tùches lourdes comme des modifications ou transferts de mémoire.
Table d'éléments graphiques
Ils ont généralement un mode texte, dans lequel une table contient les codes des caractÚres à afficher, en 8 bits, et une autre table fait la liaison entre le code du caractÚre et l'emplacement mémoire au sein du systÚme du motif les représentant. Des motifs sont généralement présents en ROM ou EPROM, et il est alors possible de les remplacer par un motif défini par logiciel en RAM.
Les consoles de jeu et bornes d'arcades 8 et 16 bits ont généralement un systÚme similaire pour les décors. Une table des tuiles graphique à afficher à l'écran, généralement plus grande que l'écran affiché afin de permettre les défilements de l'écran, et une table définissant leur emplacement en mémoire.
Raster
Depuis les ordinateurs 8 bits, il est également possible, à l'aide du processeur vidéo d'opérer des changements en fonction de la position de l'élément en cours de traçage (en anglais : raster) à l'écran. Les coordonnées, actuelles sont déterminées à partir des signaux de synchronisation verticale (VBLANK, 1 par image) et horizontal (HBLANK, 1 par ligne), et du temps pendant lequel l'information d'un pixel est envoyé. Il est alors possible de changer la couleur de la palette ou du fond de l'écran par exemple. Ce principe était souvent utilisé sur les ordinateurs 8 bits pour signaler un chargement ou une décompression en cours. Ce principe a également été utilisé pour afficher des dégradés et différents effets dans les démos.
Sprite et bitplan
Le sprite est un objet graphique, superposĂ© Ă l'image de fond par le processeur vidĂ©o. Si sa couleur est transparente, il envoie l'information mĂ©moire de l'image de fond, si elle est opaque, il envoie l'information du Ìșsprite lui-mĂȘme. Sur de nombreux systĂšmes le nombre de sprites Ă©tait limitĂ© en largeur (nĂ©cessitĂ© de parcourir la mĂ©moire des diffĂ©rents sprites au moment d'afficher la ligne horizontale). Selon les systĂšmes, cette limite est plus souple verticalement en raison de la dĂ©pendance au Raster. Il est principalement utilisĂ© dans le domaine des jeux vidĂ©o, mais est Ă©galement utilisĂ© dans les interfaces graphiques, pour afficher le curseur.
Le plan d'image (anglais : bitplan) est similaire au sprite mais sur une image entiÚre, selon les systÚmes il est plus ou moins limité. Par exemple sur un systÚme dont la mémoire à une limite d'un écran complet en 8 bits, pourra afficher 2 plans images 4 bits, il faut également prendre en compte les limites dans les opérations de mixage de ces plans, limitées dans le temps.
Les SoC utilisés aujourd'hui sur les téléphones conservent toujours ces possibilités.
Processeur géométrique 2D
Une des fonctions premiĂšres d'un processeur gĂ©omĂ©trique 2D est le "blitter". Il sert Ă la copie d'image de part et d'autre de la RAM (principale ou vidĂ©o selon les systĂšmes), avec ou sans gestion de la transparence pour le mixage, La transparence peut ĂȘtre gĂ©rĂ©e via un masque de transparence (contenant une version de l'image ou 0 signifie transparent et 1 ou autre valeur selon les capacitĂ©s, signifie opaque ou translucide), ou via une valeur dans l'image dĂ©diĂ©e Ă la transparence. Cela permet de complĂ©menter la prĂ©sence ou de compenser l'absence d'un processeur vidĂ©o gĂ©rant les sprites ou les multiples bitplans. On retrouve par exemple cette fonction dans Denise (Amiga), ou G2D (certains processeurs ARM, notamment Samsung, AllWinner, Rockchip, NXP).
Certains processeurs vectoriels 2D, comme celui de la console de jeu 8 bits Vectrex, gĂšrent uniquement des objets vectoriels, tels que des segments de droite.
Processeur géométrique 3D
Il est chargé de faire des calculs en trois dimensions, c'est-à -dire de représenter dans l'espace des objets géométriques.
Silicon Graphics en 1992, est un pionnier dans le domaine, en sortant des stations de travail équipées de processeurs graphiques spécialisées en 3D. Ils créent également le langage OpenGL, qui deviendra ensuite un standard ouvert, géré par le consortium industriel Khronos Group, qui le fait évoluer vers Vulkan.
Selon les processeurs, il a des fonctions plus ou moins avancées. Tracé de droite, de polygones, modification géométrique d'image pour les textures, anticrénelage, sont des fonctions de base.
GPGPU
Les fonctions de traitement d'image des processeurs gĂ©omĂ©trique 3d utilisant, au fur et Ă mesure de leur Ă©volution de plus en plus les mĂȘmes instructions qu'un processeur vectoriel, les deux fonctions ont Ă©tĂ© rĂ©unies au sein de ce que l'on appelle un GPGPU (signifiant littĂ©ralement processeur graphique Ă but gĂ©nĂ©raliste). Cela a permis de dĂ©mocratiser ces derniers.
Il permet en plus de faire des opérations géométriques 2D et 3D, des opérations d'algÚbre linéaire complexes, et avec un bon niveau de parallélisme. Il est principalement utilisé en calcul intensif, que ce soit dans le rendu d'images avancé, ou le calcul scientifique (analyse numérique).
Intégration du processeur dans un systÚme
Ces processeurs peuvent ĂȘtre intĂ©grĂ©s de diffĂ©rentes maniĂšres dans un systĂšme informatique :
- Une puce dĂ©diĂ©e, soudĂ©e sur la carte mĂšre, c'Ă©tait le cas sur les micro-ordinateurs 8 et 16 bits et 16â32 bits (comme la puce Agnus de l'Amiga), ou les bornes d'arcades des annĂ©es 1980 (un processeur secondaire pouvant ĂȘtre dĂ©diĂ© pour le calcul graphique), des consoles de jeu 8 et 16 bits, ainsi que quelques micro-ordinateurs 32 bits des annĂ©es 1990).
- Une puce dédiée, soudée sur une carte graphique, notamment sur les compatibles IBM PC (cartes CGA, EGA, VGA, SVGA, etc., jusqu'à nos jours)
- Un processeur intégré à un SoC (une puce, regroupant l'ensemble du systÚme, dont ; processeur principal, graphique, sonore, vidéo, réseau, etc.), c'est le cas notamment de la majorité des puces d'architecture ARM, tels que sur les téléphones mobiles, tablettes tactiles, box internet, SBC, etc.
- Un processeur intĂ©grĂ© Ă un APU, seul le processeur principal et le processeur graphique sont intĂ©grĂ©s dans la mĂȘme puce. Intel et AMD se sont inspirĂ©s d'ARM, pour amĂ©liorer les performances des Ă©changes entre le processeur principal et le processeur graphique en intĂ©grant leurs propres circuits graphiques Ă leurs processeurs.
Fonctionnement
Les sommets de polyĂšdres (en anglais vertex) constituent les donnĂ©es Ă©lĂ©mentaires de la gĂ©omĂ©trie en trois dimensions et par lĂ des processeurs graphiques. Ce sont les points entre lesquels seront tracĂ©es les arĂȘtes dâun objet et par lesquels le processeur construit les objets multidimensionnels. Si les objets sont en deux dimensions, ou quâil sâagit de vidĂ©os, les donnĂ©es sont directement envoyĂ©es Ă la fenĂȘtre dâaffichage.
Pour accĂ©lĂ©rer le calcul, le processeur calcule les sommets invisibles (cachĂ©s par dâautres sommets, par les faces dâun objet ou autrement) et les supprime pour ne pas avoir Ă les gĂ©rer.
Le processeur graphique applique ensuite aux faces des objets les textures puisĂ©es sur le disque dur grĂące au logiduc graphique (Pixel Pipeline). Le moteur graphique envoie ensuite au processeur des donnĂ©es sur lâĂ©clairage des polygones, que celui-ci se charge de mettre en Ćuvre pour Ă©clairer la scĂšne. Ensuite, la puce graphique applique Ă lâimage les divers filtres (anticrĂ©nelage ou filtrage anisotrope), et envoie le rĂ©sultat Ă la fenĂȘtre dâaffichage, qui « aplatit » lâimage pour lâafficher Ă lâĂ©cran.
Implémentations matérielles
Il existe différentes organisations des architectures informatiques dans lesquels les processeurs graphiques sont utilisés.
Puce sur carte mĂšre
Sur les premiers micro-ordinateurs, le processeur graphique était un circuit intégré (ou puce), situé sur la carte mÚre de l'ordinateur. C'est également le cas généralement sur les consoles de jeu, ou encore aujourd'hui sur les ordinateurs à carte unique.
Carte graphique dédiée
Il sâagit du type de processeur graphique le plus puissant. Le processeur est gĂ©nĂ©ralement situĂ© sur une carte interfacĂ©e avec la carte mĂšre de lâordinateur par un port PCI Express pour les machines rĂ©centes AGP ou PCI pour les machines plus anciennes ; quant aux ordinateurs portables, certains disposent dâune dĂ©clinaison spĂ©cifique du port PCI Expres}, le MXM ou Mobile PCI-Express Module). Ces cartes disposent de leur propre mĂ©moire vive.
SoC
Dans les System On Chip (SoC), le processeur graphique est situĂ© dans le mĂȘme circuit intĂ©grĂ© que le processeur principal , le processeur sonore, et les autres composants principaux du systĂšme. Un bus interne au circuit intĂ©grĂ© permet d'Ă©changer les informations entre ses diffĂ©rentes composantes.
Processeur graphique intégré (IGP)
Ces processeurs graphiques sont intĂ©grĂ©s dans le northbridge sur la carte mĂšre de lâordinateur ou directement au processeur central (Ă partir de la famille de processeurs Westmere chez Intel), et utilisent sa mĂ©moire vive ou plus rarement une faible quantitĂ© de mĂ©moire dĂ©diĂ©e. Ces processeurs graphiques sont moins performants que ceux des cartes graphiques dĂ©diĂ©es, mais ils sont moins coĂ»teux, plus faciles Ă intĂ©grer et moins consommateurs en Ă©nergie. Les ordinateurs portables anciens et/ou d'entrĂ©e de gamme utilisent cette mĂ©thode afin de rĂ©duire les coĂ»ts.
Les IGP suffisent si le matĂ©riel n'est pas sollicitĂ© par les jeux modernes ou des programmes utilisant de grandes quantitĂ©s de ressources graphiques. Les cartes mĂšres anciennes ont souvent un processeur graphique intĂ©grĂ© et un (ou plusieurs) port permettant dâajouter une carte graphique dĂ©diĂ©e. Ce type d'IGP tend cependant Ă disparaĂźtre au profit des processeurs graphiques intĂ©grĂ©s directement dans les CPU plus rĂ©cents. Le dĂ©faut majeur de ces derniers est que l'ensemble CPU/GPU est limitĂ© par la puissance maximale pouvant ĂȘtre reçue par le biais du socket. CPU et GPU ne peuvent donc fonctionner ensemble au maximum de leur frĂ©quence respective si la somme des puissances nĂ©cessaires dĂ©passe la puissance maximale rĂ©elle pouvant ĂȘtre admise. Cela nĂ©cessite donc un bridage de l'un pour obtenir de meilleurs rĂ©sultats avec l'autre. En d'autres termes, quand l'un est au maximum, l'autre doit passer en Ă©conomie. Les jeux les plus rĂ©cents deviendront injouables et les logiciels utilisant essentiellement beaucoup de graphisme seront limitĂ©s si le CPU est sollicitĂ© au dĂ©triment du GPU. Et vice versa, des logiciels de compression de donnĂ©es ou ayant besoin essentiellement du CPU seront plus lents si celui-ci est bridĂ© au profit du GPU. Par contre, il est possible de jouer sans problĂšme Ă des jeux plus anciens qui ne demandent pas beaucoup de ressources en termes de couple CPU/GPU ou en dĂ©sactivant bonne quantitĂ© d'options graphiques.
Bien que ce type de configuration se dĂ©mocratise de plus en plus, une configuration plus classique CPU et carte graphique supplĂ©mentaire reste plus efficace car la bande passante dĂ©diĂ©e utilisĂ©e par la carte graphique permet de soulager le CPU, laissant ainsi Ă ce dernier la totalitĂ© de la puissance du socket. Une carte graphique, mĂȘme bas de gamme, obtiendra de meilleurs rĂ©sultats qu'un IGP car non bridĂ©e par un partage de circuit avec le CPU. Ainsi, pour un joueur occasionnel ou quelqu'un Ă©voluant dans le domaine du multimĂ©dia, une carte bas de gamme se rĂ©vĂ©lera utile, voire quasi-indispensable, afin de profiter de meilleurs rendus sans pour autant dĂ©penser beaucoup d'argent. Cependant cet investissement supplĂ©mentaire n'est pas intĂ©ressant pour un utilisateur limitant l'utilisation de sa machine Ă de la bureautique ou de la recherche sur internet, car demandant peu de ressources. Il lui sera alors plus avantageux de se contenter d'un IGP. De plus, les amĂ©liorations Ă chaque nouvelle gĂ©nĂ©ration de processeurs intĂ©grant une partie graphique permet parfois de rattraper cet Ă©cart de puissance avec les cartes graphiques bas de gamme, voire les dĂ©passer dans certains cas.
Il est aussi possible pour un utilisateur possĂ©dant un ensemble « CPU/IGP/carte graphique » d'activer le GPU intĂ©grĂ© au processeur principal et donc, par l'intermĂ©diaire de programmes fournis ou prĂ©sents sur les sites des fabricants de ces composants, de faire la transition entre le GPU du processeur et la carte graphique adjointe au systĂšme et ainsi optimiser la consommation Ă©lectrique. Par exemple, une carte graphique performante destinĂ©e aux jeux et consommant beaucoup en puissance peut ĂȘtre dĂ©sactivĂ©e pendant une session de bureautique par un pilote permettant d'attribuer Ă chaque programme installĂ© un GPU spĂ©cifique.
Choisir un processeur graphique
Un processeur graphique a pour fonction principale de traiter les calculs graphiques complexes afin de soulager le CPU de ces tùches. Pour autant, cela ne signifie pas que ces deux composants soient totalement indépendants. En effet, il existe plusieurs problÚmes pouvant subsister si un mauvais équilibre entre le processeur central et le processeur graphique est présent. Ainsi, il ne sert à rien d'opter pour une carte graphique trÚs performante si elle est bridée par les performances du CPU. On utilise alors le terme de « CPU limited » (littéralement « limité par le CPU »). à l'inverse, si l'utilisateur se procure un processeur trÚs performant mais choisit une carte graphique ayant peu de performances ou se contentant de l'IGP, il ne pourra pas obtenir de bons rendus graphiques fluides si ceux-ci nécessitent de gros calculs graphiques. Il faut donc pouvoir équilibrer le plus possible les performances afin d'en tirer le meilleur[4].
Pour une personne travaillant sur de la bureautique, faisant des recherches sur internet, ou des utilisations polyvalentes, un IGP ou une carte graphique d'entrĂ©e de gamme suffit. Pour une utilisation dans le domaine de la 3D, que ce soit en jeu vidĂ©o, ou en modĂ©lisation 3D simple il vaut mieux un IGP haut de gamme, ou une carte graphique dĂ©diĂ©e. Enfin, dans le cas de montage vidĂ©o, de modĂ©lisation 3D complexe ou la volontĂ© d'utiliser les derniers jeux vidĂ©o complexes, au maximum de leurs performances, une Ă plusieurs cartes graphiques dĂ©diĂ©es haut de gamme peuvent ĂȘtre nĂ©cessaires. Il est dans tous les cas, souvent possible d'ajouter une Ă plusieurs cartes graphiques supplĂ©mentaires si la puissance de base est insuffisante Ă lâutilisation qui en est faite du systĂšme informatique. C'est le cas surtout des joueurs exigeants au sujet des graphismes ou des professionnels en montage photo/vidĂ©o de haut niveau ou en CAO/DAO[4].
Fabricants
Peu dâentreprises conçoivent de tels processeurs : les plus connues sont NVIDIA, AMD (anciennement ATI) et Intel. Il y a aussi d'autres fabricants dĂ©sormais moins importants, ou moins connus du grand public, comme Qualcomm, S3 Graphics, Matrox, 3DLabs (en), ARM XGI (en). Ces entreprises sont dites « fabless », c'est-Ă -dire qu'elles conçoivent les circuits graphiques, mais ne les fabriquent pas en sĂ©rie.
Cas des cartes graphiques
D'autres entreprises (Asus, MSI, PNYâŠ) se chargent ensuite de proposer des cartes graphiques intĂ©grant ces processeurs. Ce sont les entreprises constructrices. Celles-ci prennent en gĂ©nĂ©ral une certaine libertĂ© de modification des frĂ©quences de fonctionnement des GPU par rapport aux frĂ©quences de base prĂ©conisĂ©es par les concepteurs. C'est le principe de l'overclocking. Bien entendu, ces modifications nĂ©cessitent un choix rigoureux dans le systĂšme de refroidissement, car bien souvent, les frĂ©quences en hausse provoquent Ă©galement en contrepartie une hausse de tempĂ©rature, Ă l'image des CPU. Ces frĂ©quences varient entre les constructeurs et selon les modĂšles et les systĂšmes de refroidissement proposĂ©s par ces entreprises. L'Ă©cart de performance entre les modĂšles de rĂ©fĂ©rence (fournis par les concepteurs) et les constructeurs varie et certains GPU personnalisĂ©s peuvent mĂȘme prĂ©senter un gain non nĂ©gligeable par rapport au GPU de rĂ©fĂ©rence.
Notes et références
- « Peut-on casser un mot de passe avec une carte graphique ? », Tom's Hardware, .
- utilisation pour l'intelligence artificielle
- ZDNet, août 2016 : « Il est bien plus intéressant de nos jours de laisser les GPU s'occuper de ces tùches plutÎt que de tout confier au CPU qui a un rapport qualité prix/puissance bien moins intéressant (l'exemple le plus flagrant est le rendu 3D qui est bien plus rapide avec un GPU qu'un CPU à prix équivalent, rapport 10 à 50). »
- Canard PC Harware no 1 à 28 : voir les conseils de sélection de matériel mis à jour à chaque parution trimestrielle.