Article de reference

Cœur graphique suivant

Graphics Core Next ( GCN ) est le nom de code d'une série de microarchitectures et d'une architecture de jeu d'instructions développées par AMD pour ses GPU , en remplacement de...

Graphics Core Next ( GCN ) est le nom de code d'une série de microarchitectures et d'une architecture de jeu d'instructions développées par AMD pour ses GPU , en remplacement de sa microarchitecture TeraScale . Le premier produit utilisant GCN a été lancé le 9 janvier 2012.

GCN est une microarchitecture SIMD à jeu d'instructions réduit , contrairement à l'architecture SIMD à mots d'instructions très longs de TeraScale. GCN nécessite considérablement plus de transistors que TeraScale, mais offre des avantages pour le calcul GPU à usage général (GPGPU) grâce à un compilateur plus simple .

Les puces graphiques GCN étaient fabriquées en CMOS à 28 nm, et en FinFET à 14 nm (par Samsung Electronics et GlobalFoundries ) et à 7 nm (par TSMC ), disponibles sur certains modèles des cartes graphiques AMD Radeon HD 7000 , HD 8000 , 200 , 300 , 400 , 500 et Vega , y compris la Radeon VII, commercialisée séparément. L'architecture GCN était également utilisée dans la partie graphique des unités de traitement accéléré (APU), notamment celles des PlayStation 4 et Xbox One .

L'architecture GCN a été remplacée par la microarchitecture et l'architecture du jeu d'instructions RDNA en 2019.

Jeu d'instructions

Le jeu d'instructions GCN appartient à AMD et a été développé spécifiquement pour les GPU. Il ne comporte aucune micro-opération pour la division .

La documentation est disponible pour :

  • le jeu d'instructions Graphics Core Next 1 ,
  • le jeu d'instructions Graphics Core Next 2 ,
  • les jeux d'instructions Graphics Core Next 3 et 4 ,
  • le jeu d'instructions Graphics Core Next 5 , et
  • l' architecture du jeu d'instructions « Vega » 7 nm (également appelée Graphics Core Next 5.1).

Un backend de compilation LLVM est disponible pour le jeu d'instructions GCN. Il est utilisé par Mesa 3D .

GNU Compiler Collection 9 prend en charge GCN 3 et GCN 5 depuis 2019 pour les programmes autonomes monothreadés, GCC 10 déchargeant également via OpenMP et OpenACC .

MIAOW est une implémentation RTL open-source de la microarchitecture AMD Southern Islands GPGPU.

En novembre 2015, AMD a annoncé son initiative Boltzmann, qui vise à permettre le portage d' applications basées sur CUDA vers un modèle de programmation C++ commun .

Lors de l'événement Super Computing 15, AMD a présenté un pilote Linux sans interface graphique et une infrastructure d'exécution HSA pour le calcul haute performance de classe cluster, ainsi qu'un outil d'interface de calcul hétérogène pour la portabilité (HIP) pour porter les applications CUDA vers le modèle C++ commun susmentionné.

Microarchitectures

En juillet 2017, le jeu d'instructions Graphics Core Next avait connu cinq itérations. Les différences entre les quatre premières générations sont plutôt minimes, mais l'architecture GCN de cinquième génération présente des processeurs de flux fortement modifiés afin d'améliorer les performances et de prendre en charge le traitement simultané de deux nombres de précision inférieure au lieu d'un seul nombre de précision supérieure.

Traitement des commandes

Traitement des commandes GCN : chaque moteur de calcul asynchrone (ACE) analyse les commandes entrantes et répartit le travail entre les unités de calcul (CU). Chaque ACE peut gérer jusqu'à 8 files d'attente indépendantes. Les ACE fonctionnent en parallèle avec le processeur de commandes graphiques et deux moteurs DMA. Le processeur de commandes graphiques gère les files d'attente graphiques, les ACE les files d'attente de calcul et les moteurs DMA les files d'attente de copie. Chaque file d'attente peut traiter des éléments de travail sans attendre la fin des autres tâches, ce qui permet d'entrelacer des flux de commandes indépendants sur le shader du GPU.

Processeur de commandes graphiques

Le processeur de commandes graphiques (GCP) est une unité fonctionnelle de la microarchitecture GCN. Il est notamment responsable de la gestion des shaders asynchrones .

Moteur de calcul asynchrone

Le moteur de calcul asynchrone (ACE) est un bloc fonctionnel distinct servant à des fins de calcul, dont le but est similaire à celui du processeur de commandes graphiques.

planificateurs

Depuis la troisième itération de GCN, le matériel intègre deux planificateurs : l’un gère l’exécution des « fronts d’onde » lors de l’exécution des shaders (le planificateur d’unités de calcul) et l’autre gère l’exécution des files d’attente de dessin et de calcul. Ce dernier améliore les performances en exécutant des opérations de calcul lorsque les unités de calcul sont sous-utilisées en raison de limitations du nombre de commandes graphiques dues à la vitesse ou à la bande passante du pipeline. Cette fonctionnalité est appelée calcul asynchrone.

Pour un shader donné, les pilotes du GPU peuvent également planifier des instructions sur le CPU afin de minimiser la latence.

processeur géométrique

processeur géométrique

Le processeur géométrique contient un assembleur de géométrie, un tessellateur et un assembleur de sommets.

Le Tesselator est capable d'effectuer une tessellation matérielle telle que définie par Direct3D 11 et OpenGL 4.6 , et a succédé à ATI TruForm et à la tessellation matérielle dans TeraScale en tant que cœur de propriété intellectuelle semi-conducteur le plus récent d'AMD à l'époque .

unités de calcul

Une unité de calcul (UC) combine 64 processeurs de shaders et 4 unités de texturage (UTM). Les unités de calcul sont distinctes des unités de rendu (UR) , mais les alimentent . Chaque unité de calcul comprend les éléments suivants :

  • un planificateur CU
  • une unité de succursale et de messagerie
  • 4 unités vectorielles SIMD (SIMD-VU) de 16 voies de large
  • 4 fichiers de registres vectoriels à usage général (VGPR) de 64 KiB
  • 1 unité scalaire (SU)
  • un fichier GPR scalaire de 8 KiB
  • un partage de données local de 64 KiB
  • 4 unités de filtre de texture
  • 16 Unités de chargement/stockage de textures
  • un cache de niveau 1 (L1) de 16 KiB

Quatre unités de calcul sont connectées pour partager un cache d'instructions L1 de 16 Kio et un cache de données L1 de 32 Kio, tous deux en lecture seule. Une unité SIMD-VU traite 16 éléments à la fois (par cycle), tandis qu'une unité de traitement (SU) ne traite qu'un seul élément à la fois (par cycle). De plus, l'unité de traitement gère certaines autres opérations, telles que les branchements.

Chaque unité visuelle SIMD (SIMD-VU) possède une mémoire privée où sont stockés ses registres. Il existe deux types de registres : les registres scalaires (S0, S1, etc.), qui contiennent chacun un nombre de 4 octets, et les registres vectoriels (V0, V1, etc.), qui représentent chacun un ensemble de 64 nombres de 4 octets. Sur les registres vectoriels, chaque opération est effectuée en parallèle sur les 64 nombres, correspondant à 64 entrées. Par exemple, le traitement peut s'effectuer simultanément sur 64 pixels différents (les entrées étant légèrement différentes pour chacun d'eux, la couleur finale obtenue est donc légèrement différente).

Chaque SIMD-VU dispose de 512 registres scalaires et de 256 registres vectoriels.

AMD affirme que chaque unité de calcul GCN (CU) dispose de 64 KiB de partage de données local (LDS).

Planificateur CU

Le planificateur CU est le bloc fonctionnel matériel qui détermine les fronts d'onde exécutés par l'unité SIMD-VU. Il sélectionne une unité SIMD-VU par cycle pour la planification. Il ne faut pas le confondre avec d'autres planificateurs matériels ou logiciels.

Front de vague

Un shader est un petit programme écrit en GLSL qui effectue le traitement graphique, tandis qu'un kernel est un petit programme écrit en OpenCL qui effectue le traitement GPGPU. Ces processus n'ont pas besoin de beaucoup de registres, mais ils doivent charger des données depuis la mémoire système ou graphique. Cette opération engendre une latence significative. AMD et Nvidia ont opté pour des approches similaires afin de masquer cette latence inévitable : le regroupement de plusieurs threads . AMD appelle un tel groupe un « wavefront », tandis que Nvidia l'appelle un « warp ». Un groupe de threads est l'unité de base de l'ordonnancement des GPU qui implémentent cette approche de masquage de la latence. Il représente la taille minimale des données traitées en SIMD, la plus petite unité de code exécutable, et permet de traiter une instruction unique simultanément par tous les threads qui le composent.

Dans tous les GPU GCN, un « front d'onde » est composé de 64 threads, et dans tous les GPU Nvidia, un « warp » est composé de 32 threads.

La solution d'AMD consiste à attribuer plusieurs fronts d'onde à chaque SIMD-VU. Le matériel répartit les registres entre les différents fronts d'onde, et lorsqu'un front d'onde attend un résultat en mémoire, le planificateur d'unités de calcul (CU) lui attribue un autre front d'onde. Les fronts d'onde sont attribués individuellement à chaque SIMD-VU. Les SIMD-VU n'échangent pas de fronts d'onde. Chaque SIMD-VU peut se voir attribuer jusqu'à 10 fronts d'onde (soit 40 par unité de calcul).

AMD CodeXL présente des tableaux illustrant la relation entre le nombre de SGPR et de VGPR et le nombre de fronts d'onde, mais essentiellement, pour les SGPR, ce nombre se situe entre 104 et 512 par front d'onde, et pour les VGPR, il est de 256 par front d'onde.

Il convient de noter qu'en lien avec les instructions SSE , ce concept de parallélisme de niveau le plus élémentaire est souvent appelé « largeur de vecteur ». La largeur du vecteur est caractérisée par le nombre total de bits qu'il contient.

Unité vectorielle SIMD

Chaque unité vectorielle SIMD possède :

Chaque SIMD-VU possède 10 tampons d'instructions de front d'onde, et il faut 4 cycles pour exécuter un front d'onde.

blocs d'accélération audio et vidéo

De nombreuses implémentations de GCN sont généralement accompagnées de plusieurs autres blocs ASIC d'AMD , notamment le décodeur vidéo unifié , le moteur de codage vidéo et AMD TrueAudio .

Moteur de codage vidéo

mémoire virtuelle unifiée

Dans un aperçu de 2011, AnandTech a écrit sur la mémoire virtuelle unifiée, prise en charge par Graphics Core Next.

    Architecture classique d'ordinateur de bureau avec une carte graphique dédiée sur PCI Express. Le processeur et la carte graphique disposent de leur propre mémoire physique, avec des espaces d'adressage différents. L'intégralité des données doit être copiée via le bus PCIe. Remarque : le schéma indique la bande passante, mais pas la latence mémoire.
    Architecture classique d'ordinateur de bureau avec une carte graphique dédiée sur PCI Express . Le processeur et la carte graphique disposent de leur propre mémoire physique, avec des espaces d'adressage différents. L'intégralité des données doit être copiée via le bus PCIe. Remarque : le schéma indique la bande passante, mais pas la latence mémoire .
  • GCN prend en charge la « mémoire virtuelle unifiée », permettant ainsi une copie nulle : seuls les pointeurs sont copiés, et non les données. Il s’agit d’une fonctionnalité HSA essentielle.
    GCN prend en charge la « mémoire virtuelle unifiée », permettant ainsi une copie nulle : seuls les pointeurs sont copiés, et non les données . Il s’agit d’une fonctionnalité HSA essentielle.
  • Les solutions graphiques intégrées (et les APU AMD avec carte graphique TeraScale) souffrent d'une mémoire principale partitionnée : une partie de la mémoire système est exclusivement allouée au GPU. Le transfert direct des données d'une partition à l'autre est impossible ; elles doivent être copiées (via le bus mémoire système).
    Les solutions graphiques intégrées (et les APU AMD avec carte graphique TeraScale ) souffrent d'une mémoire principale partitionnée : une partie de la mémoire système est exclusivement allouée au GPU. Le transfert direct des données est impossible ; elles doivent être copiées (via le bus mémoire système) d'une partition à l'autre.
  • Les APU AMD dotés de graphismes GCN bénéficient d'une mémoire principale unifiée, ce qui permet d'économiser de la bande passante, ressource précieuse.
    Les APU AMD avec graphiques GCN bénéficient d' une mémoire principale unifiée, ce qui permet de conserver une bande passante rare

Architecture de système hétérogène (HSA)

depuis le noyau Linux 3.19.

Certaines fonctionnalités HSA spécifiques implémentées dans le matériel nécessitent la prise en charge du noyau du système d'exploitation (ses sous-systèmes) et/ou de pilotes de périphériques spécifiques. Par exemple, en juillet 2014, AMD a publié un ensemble de 83 correctifs destinés à être intégrés à la branche principale 3.17 du noyau Linux afin de prendre en charge ses cartes graphiques Radeon basées sur Graphics Core Next . Le pilote noyau HSA se trouve dans le répertoire /drivers/gpu/hsa , tandis que les pilotes de périphériques graphiques DRM se trouvent dans /drivers/gpu/drm et complètent les pilotes DRM existants pour les cartes Radeon . Cette première implémentation se concentre sur un seul APU « Kaveri » et fonctionne en parallèle avec le pilote graphique noyau Radeon existant (kgd).

Compression de couleur Delta sans perte

planificateurs matériels

Les planificateurs matériels sont utilisés pour effectuer la planification et décharger le pilote vers le matériel de l'affectation des files d'attente de calcul aux ACE, en mettant ces files d'attente en mémoire tampon jusqu'à ce qu'il y ait au moins une file d'attente vide dans au moins une ACE. Cela a pour conséquence que le HWS affecte immédiatement les files d'attente mises en mémoire tampon aux ACE jusqu'à ce que toutes les files d'attente soient pleines ou qu'il n'y ait plus de files d'attente à affecter en toute sécurité.

Une partie du travail d'ordonnancement effectué comprend des files d'attente priorisées qui permettent aux tâches critiques de s'exécuter avec une priorité plus élevée que les autres tâches, sans qu'il soit nécessaire d'interrompre les tâches de priorité inférieure pour exécuter la tâche prioritaire. Ainsi, les tâches peuvent s'exécuter simultanément, les tâches prioritaires étant conçues pour monopoliser le GPU au maximum, tout en laissant les autres tâches utiliser les ressources non utilisées par les tâches prioritaires. Il s'agit essentiellement de moteurs de calcul asynchrones dépourvus de contrôleurs de répartition. Ils ont été introduits pour la première fois dans la microarchitecture GCN de quatrième génération, mais étaient présents dans la microarchitecture GCN de troisième génération à des fins de tests internes. Une mise à jour du pilote a activé les ordonnanceurs matériels des composants GCN de troisième génération pour une utilisation en production.

Accélérateur de déchets primitifs

Cette unité élimine les triangles dégénérés avant leur entrée dans le nuanceur de sommets et les triangles ne couvrant aucun fragment avant leur entrée dans le nuanceur de fragments. Cette unité a été introduite avec la microarchitecture GCN de quatrième génération.

Générations

Graphismes Noyau Suivant 1

Cœur graphique Next 2
Graphismes Noyau Suivant 3
Graphismes Core Next 4

Puces

GPU discrets :

Comparaison des GPU GCN

1. Les anciens noms de code, tels que Treasure (Lexa) ou Hawaii Refresh (Ellesmere), ne sont pas mentionnés. 2. Date de lancement initiale. Les dates de lancement des puces variantes, telles que Polaris 20 (avril 2017), ne sont pas mentionnées.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index