EtoileAbonnementRSS
jeuxvideo.com  /  Tous les forums  /  Forum principal Informatique  /  Forum Matériel Informatique  / 

Topic [Dossier] Comment fonctionne un GPU ?

Sujet : [Dossier] Comment fonctionne un GPU ?

12
Page suivanteFin
Phanteks
Phanteks
MP
25 août 2016 à 16:47:16

Partie I: Quelles sont les unités de base d’un GPU ?

Les unités de base.

Quelques soient les micro-architecture de GPU, une base reste commune, les unités d’un GPU.

  • Les Stream Processors.
  • Les Raster Engines.
  • Les Texture Mappin Units.
  • Les Render OutPut Units.

----------------------------------------------------------------------------------------------------------------------------------------------------

Les Stream Processor.

Les Stream Processors (en Français nommés processeurs de flux) sont les éléments les plus connus d’une carte graphique. Nvidia les nomme CUDA Cores, d’autres les nomment à tort des « coeurs », mais ce sont bel et bien des Stream Processor.

Un Stream Processor est ni plus ni moins qu’une unité capable de faire du calcul sur des flottants (traduction anglicisé de floats, qui sont les nombres à virgule). Typiquement, plus les Stream Processors sont nombreux, plus le calcul de données mathématique s’effectue rapidement. Et il y a beaucoup de maths à faire calculer dans un jeu pour une carte graphique : les mouvements, les effets de particules, la direction de la lumière, les ombres, les reflets …

A noter que les Stream Processor (SP) calculent sur des floats en 32 bits (de manière très approchée, c’est un nombre avec 32 chiffres binaires après la virgule) car ce sont les nombres les plus utilisés par nos programmes. Certains Stream Processor sont capables de calculer des floats en 64 bits, qui sont plus précis. Ces floats 64 sont très apprécié dans le monde du calcul et le monde professionnel, car assez utilisé. Par contre, il y a toujours moins d’unités capable de traiter des flaots 64 que celles capables de traiter des floats 32.

----------------------------------------------------------------------------------------------------------------------------------------------------

Les Raster Engine.

Les Raster Engines (en français les unités de rasterisation) sont de grosses unités capables de générer des polygones. Comme vous le savez sûrement, votre jeu vidéo préféré est composé de nombreux objets (personnages, murs, sols, caisses en bois …) composés chacun de nombreux polygones (des triangles). Actuellement, pour arriver au niveau de réalisme exigé par les joueurs, il faut un nombre effroyable de polygones pour que l’objet ne soit pas « cubique ». http://image.noelshack.com/fichiers/2016/34/1472133365-lara-croft-polygones.jpg
Regardez les deux exemples ci-dessus : Lara Croft avec 300 polygones et Lara Croft avec 5000 polygones. Mais actuellement, un personnage d’un très beau jeu (par exemple Ryse : Son of Rome) peut atteindre voir dépasser les 100 000 polygones. Et ce nombre ne cesse d’augmenter ! D’ici 2025, il est estimé qu’on dépassera le Million de polygone pour un personnage.

----------------------------------------------------------------------------------------------------------------------------------------------------

Les Texture Mapping Units.

Passons maintenant aux Texture Mapping Units (TMU). Ce sont les unités qui appliquent des textures aux polygones générés. Un dessin valant bien mieux qu’un discours, voici un exemple d’un monstre sous forme de polygone (à droite), et le même à gauche une fois « texturéfié ».
http://image.noelshack.com/fichiers/2016/34/1472133511-texture.jpg

Typiquement, quand vous téléchargez un pack de texture HD (pour Skyrim par exemple), ou plus simplement si vous augmentez les détails des textures dans votre jeu, c’est les TMU que vous faîtes plus travailler, bande d’esclavagistes.

----------------------------------------------------------------------------------------------------------------------------------------------------

Les Render Output Units.

Et enfin, on termine par les Render Output Units (ROP) qui sont des unités chargées du traitement de l’image. Ce sont les ROP que vous ferez travailler lorsque vous poussez l’anti-aliasing et l’anisotropic filtering ou que vous montez en résolution d’affichage.

----------------------------------------------------------------------------------------------------------------------------------------------------

Et la puissance dans tout ça ?

Ces quatre unités spécialisées font partie intégrante des puissances de calcul théoriques des cartes graphiques. Le principe général est de multiplier le nombre d’unité valides par la fréquence du GPU.

  • Puissance de Calcul FP32/FMA32 (en GFLOP) = nombre de SP 32 x2 x fréquence (en GHz).
  • Puissance de Calcul FP64/FMA64 (en GFLOP) = nombre de SP 64 x2 x fréquence (en GHz).
  • Débit de triangle (en GTriangle/s) = nombre de Raster Engine x fréquence (en GHz).
  • Débit de filtrage (en GTexel/s) = nombre de TMU x fréquence (en GHz).
  • Débit de pixel (en GPixel/s) = nombre de ROP x fréquence (en GHz).
Rien de bien compliqué en fait. Attention, il existe quelques rares exceptions qui n’ont pas toutes les unités effectives à 100 % sur certaines références, ce qui fausse un peu ce calcul. Mais concrètement tout est là. On ne vous parlera plus chinois quand on vous parlera de GTexel/s.

----------------------------------------------------------------------------------------------------------------------------------------------------

Comme exemple, comparons ces deux bonnes vieilles rivales.

http://image.noelshack.com/fichiers/2016/34/1472134074-geforce-gtx-770-vs-radeon-r9-280x.jpg
Ces cartes de performances similaires n’ont pas les mêmes points forts. En effet, la R9 280X a un énorme avantage au niveau du nombre Stream Processor (2048 contre 1536, 33 % d’avantage quand même), ce qui lui permet de calculer bien plus vite, surtout en 64 bits ! En effet, 1 SP sur 4 (ratio de 1/4) est capable de calculer du 64 bits sur la Radeon, contre 1 SP sur 24 pour la Geforce (ratio de 1/24), d’où cet écart monstrueux.

Par contre la GTX 770 bat sa concurrente à plate couture au niveau du débit de triangle, puisqu’elle possède le double de Raster Engine (4 contre 2).

Cependant, au niveau du débit de filtrage et le débit de pixel, égalité quasi parfaite puisque même nombre d’unités à chaque fois, avec un léger avantage pour la Nvidia, grâce à sa fréquence plus élevée.

Au final, on peut voir que l’avantage de la Radeon au niveau de la puissance de calcul compense l’avantage de la Geforce sur la génération de triangle.
Phanteks
Phanteks
MP
25 août 2016 à 16:47:23

Partie II: Comment est organisé un GPU ? (Je tiens à prévenir que la seconde partie demande un niveau de compréhension plus élevé par rapport à la partie I ou par rapport au dossier sur le CPU).

Comme vous l’avez vu dans le Quicky précédent, il existe différentes unités dans un GPU.

  • Les Stream Processors.
  • Les Raster Engine.
  • Les Texture Mappin Units.
  • Les Render OutPut Units.
Cependant, ces unités ne sont pas mis en vrac dans un GPU. Non, tout est organisé, et c’est cette organisation que nous allons tenter de vous expliquer. Et c’est là qu’intervient de manière claire la notion d’architecture.

----------------------------------------------------------------------------------------------------------------------------------------------------

Un bref résumé sur l'architecture.

Qu’est-ce qu’une micro-architecture ? C’est la manière d’organiser un GPU, dans le but d’améliorer les performances par rapport à la version précédente. Par contre, il ne faut pas faire amalgame entre micro-architecture et génération. En effet, deux cartes peuvent être de génération différentes et partager la même micro-architecture (GTX 680 et GTX 770 par exemple), ou au contraire être de la même génération, mais en étant de micro-architecture différentes (GTX 750 et GTX 760 par exemple). Pour faire un bref historique des cartes AMD plus ou moins récentes, les HD 5000 avaient une architecture VLIW5, tandis que les HD 6000 avaient une micro-architecture VLIW4, et les HD 7000 ainsi que les RX 200 ont des architectures GCN. De son côté Nvidia donne des noms de physiciens ou de mathématiciens célèbres à ses micro-architectures. En effet les GTX 400 et 500 étaient sur une architectures Fermi, les GTX 600 et 700 (sauf les GTX 750 et 750 Ti) étaient sur du Kepler, tandis que les toute récentes GTX 900 sont sur une architecture Maxwell.

----------------------------------------------------------------------------------------------------------------------------------------------------

Des blocs ? C'est quoi ? Papa Mario l'expert vous dit tout.

Comme nous le disions plus haut, les unités de calcul ne sont pas mis en vrac dans le GPU. Et c’est là qu’intervient la notion de blocs.

En effet, les GPU sont formés de blocs insécables (qu’on ne peut pas couper en deux). Selon l’architecture, ces blocs ont des noms différents : Compute Units (CU) chez les cartes graphiques AMD en GCN, SMX chez les cartes Nvidia Kepler, et SMM chez les cartes Nvidia en Maxwell.

Ces blocs contiennent des Stream Processor/ CUDA Core ainsi que des TMU. Par exemple :

  • Un CU possède 64 SP et 4 TMU.
  • Un SMX possède 192 SP et 16 TMU.
  • Un SMM possède 128 SP et 8 TMU.

Sans partir dans les détails, on remarque que AMD a choisi des blocs plus petits (et plus nombreux) tandis que ceux de Nvidia sont plus gros et moins nombreux (bien qu’ils aient rapetissé avec Maxwell).

Prenez une carte Nvidia Kepler, vous remarquerez que son nombre de « coeurs » est toujours un multiple de 192. Ce multiple est le nombre de SMX.

Ces blocs sont rarement mis en avant par le Marketing, sauf à quelques rares occasions. Est-ce que vous vous rappelez lorsque, sous prétexte de la technologie HSA, AMD avait dit que son APU A10 7850K possédait 4 coeurs CPU et 8 coeurs GPU ? Et bien ces « coeurs GPU » sont en fait des Compute Units. La partie graphique intégrée au 7850K avait 8 Compute Units, ce qui fait donc 64×8= 512 SP et 4×8 = 32 TMU.

Bon, quand je vous disais que ces blocs ne possédaient que des SP et des TMU, ce n’était pas tout à fait vrai. En effet, ils possèdent également de la mémoire cache de bas niveau, très rapide. Très très peu évoquée, cette mémoire cache joue un rôle dans les performances d’une carte.

Voilà un exemple, pour voir si vous avez bien suivi. Ci dessous un SMM de Maxwell, en l’occurrence le GM204, qui anime la GTX 970 et 980 notamment. Vous pouvez comparer ce bloc Maxwell à un bloc Kepler (SMX), juste en dessous.
http://image.noelshack.com/fichiers/2016/34/1472135264-nvidia-smm2.png
http://image.noelshack.com/fichiers/2016/34/1472135264-nvidia-smx-gk1042.png

Vous pouvez y voir notamment les CUDA Cores (les « Cores »), ainsi que les TMU (« Tex »), sans oublier la mémoire cache (cliquez sur l’image pour l’agrandir).

On voit ici par exemple que Nvidia a fortement allégé son bloc SMM par rapport au SMX pour pouvoir en mettre plus (passage de 192 à 128 CUDA Cores et de 16 à 8 TMU). Par contre, la mémoire cache a été augmentée pour notre grand bonheur.

----------------------------------------------------------------------------------------------------------------------------------------------------

Et maintenant, des super blocs. Zoup-Zoup-Bwomp, le doux bruitage des sauts de Mario.

Mais ces blocs, que ce soient des Compute Units, des SMX ou des SMM sont eux aussi rassemblés en ce que nous allons appeler des Super blocs. Un Super bloc possède un Raster Engine (unité capable pour rappel de générer des triangles). Si vous ne connaissez pas les Raster Engine, c’est que vous n’avez pas lu la partie I. Dans tous les cas, plus une carte a de super bloc, plus elle a de Raster Engine, et plus elle calcule vite les triangles.

Chez Nvidia, les SMX ou les SMM (selon si on est en présence d’une carte Kepler ou Maxwell) sont regroupés dans des Super Bloc que l’on appelle des Graphic Processing Cluster (GPC). Par contre, il n’y a pas de règle fixe pour connaître le nombre de SM dans un GPC. Mais voilà ce qu’on a pu constater:

  • Sur tous les GPU d’architecture Kepler, sauf le GK110 (c’est à dire tout sauf les Titan, la GTX 780 et la 780 Ti) ont des GPC regroupant 2 SMX. Ainsi, la GTX 770 a 8 SMX regroupés en 4 GPC, tandis que la GTX 760 a 6 SMX regroupés en 3 GPC. De son côté, la GTX 650 Ti a 4 SMX regroupés en 2 GPC.
  • Sur le GK110, certainement afin d’éviter le profusion de GPC, ceux-ci ne contiennent pas 2 mais 3 SMX. Ainsi la GTX 780 Ti possède 5 GPC (car 15 SMX) tandis que la GTX 780 possède 4 GPC (car 12 SMX)
  • Sur Maxwell GM107 (GTX 750 et 750 Ti, possédant respectivement 4 et 5 SMM) n’ont qu’un seul GPC
  • Sur Maxwell en GM204 et GM206, un GPC regroupe 4 SMM. Ainsi la GTX 980 possède 4 GPC pleins (car 16 SMM) tandis que la GTX 960 en possède 2 (car 8 SMM).

Voici un appui visuel pour comprendre la coupe qu’a subi la GTX 760 par rapport à la GTX 770. (le trou en bas à droite c’est le GPC désactivé, réduisant de 2 le nombre de SMX et de 1 le nombre de Raster Engine par rapport à la GTX 760)
http://image.noelshack.com/fichiers/2016/34/1472135726-gtx104-gtx-7602.png

Pour un exemple plus général de ce qu’est un GPC, celui ci-dessous. C’est un GPC d’un GF100 (GTX 480). On voit clairement sur ce schéma qu’il possède plusieurs SM ainsi qu’un Raster Engine.
http://image.noelshack.com/fichiers/2016/34/1472135780-nvidia-gpc-gtx-4802.png

Chez AMD, les Compute Units sont rassemblés dans d’énormes blocs appelés les Shader Engine. Contrairement à Nvidia, le nombre de Super Bloc ne va pas changer d’une variante de GPU à une autre (reprendre l’exemple de la GTX 760 et 770, basées sur le même GPU, mais avec un GPC coupé dans le cas de la GTX 760). Par contre, un super Bloc (Shader Engine) peut avoir plus ou moins de Compute Units. Deux contraintes : le même nombre de CU dans chaque Shader Engine, et pas plus de 16.

Par exemple, le GPU Tahiti (R9 280 et R9 280X) est structuré en 2 Shader Engine, sauf que la R9 280 possède 28 CU (28×64 = 1792 SP), tandis que la R9 280X en possède 32 (32×64 = 2048 SP). Et bien c’est simple : dans le cas de la R9 280, chacun des deux Shader Engine aura 14 CU à sa charge, tandis que pour la R9 280X, chaque Shader Engine aura 16 CU. C’est exactement le même principe avec les autres GPU de la gamme, si ce n’est qu’il y a plus ou moins de Shader Engine.

  • Hawaii (R9 290/290X) : 4 Shader Engine.
  • Tonga (R9 285) : 4 Shader Engine.
  • Tahiti (R9 280/280X) : 2 Shader Engine.
  • Pitcairn/Curacao (R9 270/270X) : 2 Shader Engine.
  • Bonaire (R7 260/260X) : 2 Shader Engine.
  • Cape Verde (R7 250X) : 1 Shader Engine.
  • Oland (R7 240/250) : 1 Shader Engine.

Petit exemple de ce que l’on disait « même nombre de CU dans chaque Shader Engine ». Par exemple les GPU Hawaii ont 4 Shader Engine, et 44 CU dans le cas de la R9 290X (ce qui fait donc 11 CU par Shader Engine). Il n’est pas possible d’enlever un seul CU (et donc de passer à 43). Il faut soit en enlever un à chaque Shader Engine, soit rien du tout. Enlever un CU à chaque Shader Engine fait passer le nombre de CU à 40 (et donc 2560 SP). Et tadaaam, voilà une R9 290 !

Vous pouvez comparer par exemple ci dessous les 4 Shader Engines d’une GPU Hawaii (R9 290X) et ceux d’une GPU Tonga (R9 285). Vous constatez que les Shader Engines sont bien moins fournis sur la R9 285. (n’oubliez pas que vous pouvez cliquer pour agrandir).

Vous pouvez également constater que la R9 290X possède 8 contrôleurs mémoires 64 bits (écrits MC pour Memory Controler sur le schéma) contre seulement 4 pour Tonga.
http://image.noelshack.com/fichiers/2016/34/1472135965-hawaii-r9-290x-gpu.gif
http://image.noelshack.com/fichiers/2016/34/1472135965-tonga-r9-285-gpu.jpg

Comme vous pouvez le voir, les fabricants de GPU utilisent des architectures, qui sont sur certains points radicalement différentes.

----------------------------------------------------------------------------------------------------------------------------------------------------

Et autour des super blocs ?

Et bien autour des Super blocs, nous retrouvons nos ROP, qui vont se charger des filtres, ainsi que le bus mémoire, au bout duquel on trouve la mémoire graphique. Pour plus d’informations sur le bus mémoire, cliquez ici. En tout cas, notez qu’on aura un certain nombre de contrôleurs mémoire dans le GPU, chacun fournissant un bus de 64 bits. Il suffit donc de multiplier 64 par le nombre de contrôleurs mémoire pour obtenir la fameuse largeur de bus de la carte.

Et maintenant un petit exemple : voilà le GPU de la GTX 980, et ses 4 GPC (en 2 lignes de 2), possédant chacun 4 SMM en ligne qui communiquent avec un Raster Engine.

Au final, nous avons 4 GPC pleins, c’est à dire 4 Rasterizer + 16 (4×4) SMM, c’est à dire 4 Rasterizer + 2048 (16×128) Cuda Core + 128 (16×8) TMU.
http://image.noelshack.com/fichiers/2016/34/1472136203-gpu-gm204-gtx-9802.png

Vous pouvez voir 64 petits carrés bleus foncés de part et d’autres de la L2 cache au milieu. Ces petits carrés bleus sont les ROP dont nous parlions tout à l’heure.

Et enfin, vous pouvez voir les 4 contrôleurs mémoire 64 bits à gauche et à droite, ce qui nous fait arriver à un bus de 4×64 = 256 bits.

Source: OMF.

Phanteks
Phanteks
MP
25 août 2016 à 16:55:00

Chiche, le dossier semble plus long, alors que j'ai même pas saisi la moitié pour le dossier du CPU. :hap:

retour_de_max
retour_de_max
MP
25 août 2016 à 16:57:46

Encore un gros dossier bien instructif, bon j'avoue que je n'ai pas encore lu mais bravo !

Sileon
Sileon
MP
25 août 2016 à 17:05:12

Moi non plus, je t'assure. :rire:

XhaattilaX
XhaattilaX
MP
25 août 2016 à 17:07:41

Ça devrait rester en épingle ce truc ça pourrait en aider certains

[xenio]
[xenio]
MP
25 août 2016 à 17:15:09

Bien de copier coller ?

Message édité le 25 août 2016 à 17:15:27 par [xenio]
domson90
domson90
MP
25 août 2016 à 17:15:15

J ai pas encorr terminé la lecture mais très bon article Tholvar.

Sileon
Sileon
MP
25 août 2016 à 17:49:27

Le 25 août 2016 à 17:15:09 [Xenio] a écrit :
Bien de copier coller ?

Ben ? J'ai mit le nom du site.

Et puis, j'ai réorganisé dans les spoil en faisant sorte de relier tout ce qui est en lien direct avec ce qui est dit, c'est un peu le bordel sur l'article. :hap:

adgjl
adgjl
MP
25 août 2016 à 17:53:40

Ça devrait rester en épingle ce truc ça pourrait en aider certains

Malheureusement on est limité à cinq topics épinglés par forum, sachant qu'il y a deux topics de ce type qui ont été créé (un sur les CPUs et un sur les GPUs) ça risque d'être un peu difficile, vu qu'il y a également d'autres sujets qui le méritent peut-être encore plus.

Mais rien n'empêche les forumeurs à rediriger les personnes venant demander de l'aide vers ce topic, c'est d'ailleurs quelque chose que j'encourage !

Sileon
Sileon
MP
25 août 2016 à 18:04:04

Suffit de dépallcer aux sujets à ne pas manquer, à droite. :noel:

D'ailleurs, certains topics dedans doivent être refaits à mon avis, et le Blabla est en doublon.

Et sinon, il est où le vert ? :hap:

adgjl
adgjl
MP
25 août 2016 à 18:10:44

Suffit de dépallcer aux sujets à ne pas manquer, à droite. :noel:
D'ailleurs, certains topics dedans doivent être refaits à mon avis, et le Blabla est en doublon.

Ouaip, je vais peut-être voir ça avec Y3ti.

Mais bon, tout les trucs qui sont sur la droite du site personne ne les remarque... Par exemple j'ai les droits de modération depuis lundi, mais personne ne l'avait remarqué avant que je fasse de topic. :hap:

Et sinon, il est où le vert ? :hap:

Pour les réponses d'aide aux gens je préfère rester en noir comme tout le monde.

Là c'était peut-être un peu plus "officiel" effectivement, mais je suis sur mobile et j'avais un peu la flemme de passer sur la version web du site.

Sileon
Sileon
MP
25 août 2016 à 18:24:02

J'étais resté bloqué pendant 2 minutes quand tu disais noir, alors que c'est blanc chez moi, j'avais oublié que j'avais le skin noir/gris via Stylish. :noel:

Un dossier sur Zen devrait faire son apparition, je ne sais pas quand.

Fleco13
Fleco13
MP
25 août 2016 à 18:27:29

Le 25 août 2016 à 18:10:44 adgjl a écrit :

Suffit de dépallcer aux sujets à ne pas manquer, à droite. :noel:
D'ailleurs, certains topics dedans doivent être refaits à mon avis, et le Blabla est en doublon.

Ouaip, je vais peut-être voir ça avec Y3ti.

Mais bon, tout les trucs qui sont sur la droite du site personne ne les remarque... Par exemple j'ai les droits de modération depuis lundi, mais personne ne l'avait remarqué avant que je fasse de topic. :hap:

Et sinon, il est où le vert ? :hap:

Pour les réponses d'aide aux gens je préfère rester en noir comme tout le monde.

Là c'était peut-être un peu plus "officiel" effectivement, mais je suis sur mobile et j'avais un peu la flemme de passer sur la version web du site.

Moi j'avait vu que t'étais modo, mais je pensais que c'était un bug vu que justement il n'y avait aucun topic pour l'annoncer :hap:

Sinon sympa le dossier.

G tou lu mdr
Sileon
Sileon
MP
25 août 2016 à 18:40:43

Et tout compris ? :hap:

Fleco13
Fleco13
MP
25 août 2016 à 18:44:39

Le 25 août 2016 à 18:40:43 Sileon a écrit :
Et tout compris ? :hap:

J'ai jamais dit ça [[sticker:p/1kki]]

On va dire les 3/4 :hap:

Sileon
Sileon
MP
25 août 2016 à 19:07:30

Et moi je m'y met à finir sur le CPU. :noel:

Depuis taleur j'use Wiki pour les définitions.

Sileon
Sileon
MP
25 août 2016 à 21:05:25

Ok, ça coince sur les blocs. :hap:

C'est partie pour des recherches intenses. :noel:

adgjl
adgjl
MP
25 août 2016 à 21:09:18

Aller, courage Tholvar. :noel:

edward_1112
edward_1112
MP
25 août 2016 à 21:31:54

"Le topic est incroyable sa me fait bouger en tabernak lo

j'ai pas l'temps de niaiser lo je dois lire le post de tholvar lo"

Un quebecois a pris le controle de mon pc désolé [[sticker:p/1kks]]

12
Page suivanteFin
Répondre
Prévisu
Stickers
?