Architecture et organisation d'un GPU NVIDIA et AMD Gaming

Architecture et organisation d'un GPU NVIDIA et AMD Gaming

Les GPU comme les CPU sont un type de processeur, mais ils sont optimisés pour le calcul parallèle et la génération de graphiques en temps réel. Cependant, malgré le fait que nous ayons différents types d'architectures, chacun des GPU a une organisation et donc ils partagent. Ce que nous allons expliquer dans cet article de manière détaillée et détaillée.

Dans cet article, nous n'allons pas traiter d'un GPU architecture, mais celle de tous en général et donc quand on voit le schéma que les constructeurs lancent habituellement sur l'organisation de leur prochain GPU on peut le comprendre sans problème. Peu importe s'il s'agit d'un GPU intégré ou dédié et de leur degré de puissance.

Organisation d'un GPU contemporain

poupée russe

Pour comprendre comment s'organise un GPU, il faut penser à une poupée russe ou matriochka, qui est composée de plusieurs poupées à l'intérieur. Dont on pourrait aussi parler d'un ensemble stockant une série de sous-ensembles au fur et à mesure. En d'autres termes, les GPU sont organisés de telle sorte que les différents ensembles qui les composent sont dans de nombreux cas les uns dans les autres.

Grâce à cette division, nous comprendrons beaucoup mieux quelque chose d'aussi complexe qu'un GPU, car à partir du simple, nous pouvons construire le complexe. Cela dit, commençons par le premier composant.

Ensemble A dans l'organisation d'un GPU : les unités de shader

Organisation GPU Anatomía

Le premier des ensembles sont les unités de shader. En eux-mêmes, ce sont des processeurs, mais contrairement aux CPU, ils ne sont pas conçus pour le parallélisme à partir d'instructions, ILP, mais à partir de threads d'exécution, TLP. Qu'il s'agisse de GPU de AMD, NVIDIA, Intel ou toute autre marque, tous les GPU contemporains sont constitués de :

  • Unités SIMD et leurs enregistrements
  • Unités scalaires et leurs registres.
  • Planificateur
  • Mémoire locale partagée
  • Unité de filtrage de texture
  • Cache de données et/ou de textures de premier ordre
  • Charger/stocker des lecteurs pour déplacer des données vers et depuis le cache et la mémoire partagée.
  • Unité d'intersection de foudre.
  • Tableaux systoliques ou unités tensorielles
  • Bus d'exportation qui exporte les données de l'ensemble A vers les différents composants de l'ensemble B.

Set B dans l'organisation d'un GPU : Shader Array / Moteur Shader / GPC

Organisation GPU Anatomía

L'ensemble B inclut l'ensemble A dans son intérieur, mais ajoute initialement l'instruction et les caches constants. Dans les GPU, ainsi que les CPU, le cache de premier niveau est divisé en deux parties, une pour les données et l'autre pour les instructions. La différence est que dans le cas des GPU, le cache d'instructions est en dehors des unités de shader et donc ils sont dans l'ensemble B.

L'ensemble B dans l'organisation d'un GPU comprend donc une série d'unités de shader, qui communiquent entre elles via l'interface de communication commune entre elles, leur permettant de communiquer entre elles. D'un autre côté, les différentes unités de shader ne sont pas seules dans l'ensemble B, car c'est là qu'il y a plusieurs unités de fonction fixes pour le rendu des graphiques, comme maintenant.

  • Unité primitive : Celui-ci est invoqué lors du World Space Pipeline ou Geometric Pipeline, il est en charge de la tessellation de la géométrie de la scène.
  • Unité de rastérisation : Il effectue la rastérisation des primitives, convertissant les triangles en fragments de pixels et son étape étant celle qui commence la soi-disant Screen Space Pipeline ou phase de rastérisation.
  • ROPS : Les unités qui écrivent les tampons d'images agissent en deux étapes. Dans la phase raster avant la phase de texturation, ils génèrent le tampon de profondeur (Z-Buffer) tandis que dans la phase après la phase de texturation, ils reçoivent le résultat de cette étape pour générer le Color Buffer ou les différentes Render Targets (rendu différé) .

Set C dans l'architecture d'un GPU :

NVIDIA-Ampère-GA102

Nous avons déjà quasiment le GPU complet ou le GPU sans les accélérateurs, il se compose des composants suivants :

  • Plusieurs B-Sets à l'intérieur.
  • Mémoire globale partagée : Un Scratchpad et donc hors de la hiérarchie du cache pour communiquer les B-Sets entre eux.
  • Unité géométrique : Il a la capacité de lire les pointeurs vers la RAM qui pointent vers la géométrie de la scène, avec cela il est possible d'éliminer la géométrie non visible ou superflue afin qu'elle ne soit pas rendue inutilement dans le cadre.
  • Processeurs de commandes (graphiques et informatique)
  • Cache de dernier niveau : Tous les éléments du GPU sont clients de ce cache donc il doit avoir un immense anneau de communication, tous les composants du Set B ont un contact direct avec le cache L2 ainsi que tous les composants du Set C lui-même.

Le cache de dernier niveau (LLC) est important car c'est le cache qui nous donne la cohérence entre tous les éléments de l'ensemble C les uns avec les autres, y compris évidemment les ensembles B en son sein. Non seulement cela, mais cela permet de ne pas sursaturer le contrôleur de mémoire externe car avec cela, c'est la LLC elle-même, ainsi que la ou les unités MMU du GPU, qui sont responsables de la capture des instructions et des données de RAM. Considérez le Last Level Cache comme une sorte d'entrepôt logistique dans lequel tous les éléments du Set C envoient et/ou reçoivent leurs colis et leur logistique est contrôlée par le MMU, qui est l'unité en charge de le faire.

Ensemble final, GPU complet

GPU NVIDIA

Avec tout cela, nous avons déjà le GPU complet, l'ensemble D comprend l'unité principale qui est le GPU en charge du rendu des graphismes de nos jeux préférés, mais ce n'est pas le plus haut niveau d'un GPU, car il nous manque une série de coprocesseurs Support. Ceux-ci n'agissent pas pour rendre les graphiques directement, mais sans eux, le GPU ne pourrait pas fonctionner. Ces éléments sont généralement :

  • L'unité GFX, y compris son cache de premier niveau
  • Le North Bridge ou Northbridge du GPU, si c'est dans un SoC hétérogène (avec un CPU) mais avec une mémoire bien partagée alors ils utiliseront un Northbridge commun. Tous les éléments de l'ensemble D sont connectés au Northbridge
  • Accélérateurs : Les encodeurs vidéo et les adaptateurs d'affichage sont connectés au Northbridge. Dans le cas du Display Adapter, c'est celui qui envoie le signal vidéo au port DisplayPort ou HDMI
  • Lecteurs DMA : S'il y a deux espaces d'adressage RAM (même avec le même puits physique), le lecteur DMA permet le passage des données d'un espace RAM à un autre. Dans le cas d'un GPU séparé, les unités DMA servent de communication avec le CPU ou d'autres GPU.
  • Interface contrôleur et mémoire : il permet de communiquer les éléments du Set D avec la RAM externe. Ils sont connectés au Northbridge et c'est le seul chemin vers la RAM externe.

Avec tout cela, vous avez déjà l'organisation complète d'un GPU, avec laquelle vous pouvez beaucoup mieux lire le schéma d'un GPU et comprendre comment il est organisé en interne.