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 ».
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é ».
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.
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.