Arhitectura și organizarea unui GPU pentru jocuri NVIDIA și AMD

Arhitectura și organizarea unui GPU pentru jocuri NVIDIA și AMD

GPU-urile precum CPU-urile sunt un tip de procesor, dar sunt optimizate pentru calcul paralel și generarea de grafică în timp real. Cu toate acestea, în ciuda faptului că avem diferite tipuri de arhitecturi, fiecare dintre GPU-uri are o organizație și, prin urmare, împărtășesc. Ceea ce vom explica în acest articol într-un mod detaliat și detaliat.

În acest articol nu vom avea de-a face cu un anume GPU arhitectură, dar cea a tuturor acestora în general și, prin urmare, când vedeți diagrama pe care producătorii o lansează de obicei despre organizarea următorului lor GPU, o puteți înțelege fără probleme. Indiferent dacă acesta este un GPU integrat sau dedicat și gradul de putere pe care îl au.

Organizarea unui GPU contemporan

Muñeca Rusa

Pentru a înțelege modul în care este organizat un GPU, trebuie să ne gândim la o păpușă rusească sau matrioșka, care este alcătuită din mai multe păpuși din interior. Ceea ce am putea vorbi și despre un set care stochează progresiv o serie de subseturi. Cu alte cuvinte, GPU-urile sunt organizate în așa fel încât diferitele seturi care le compun să fie în multe cazuri una în alta.

Datorită acestei diviziuni, vom înțelege mult mai bine ceva la fel de complex ca un GPU, deoarece din simplu putem construi complexul. Acestea fiind spuse, să începem cu prima componentă.

Setează A în organizarea unui GPU: unitățile de umbrire

Anatomía GPU Organizație

Primul dintre seturi sunt unitățile de umbrire. Prin ele însele sunt procesoare, dar spre deosebire de procesoare nu sunt concepute pentru paralelism din instrucțiuni, ILP, ci din fire de execuție, TLP. Indiferent dacă vorbim despre GPU-uri de la AMD, NVIDIA, Intel sau orice alt brand, toate GPU-urile contemporane sunt formate din:

  • Unitățile SIMD și înregistrările acestora
  • Unitățile scalare și registrele lor.
  • Planificator
  • Memorie locală partajată
  • Unitate de filtrare a texturii
  • Cache de date de top și / sau textură
  • Încărcați / stocați unități pentru a muta date în și din cache și memoria partajată.
  • Unitatea de Intersecție Fulger.
  • Matrice sistolice sau unități tensoriale
  • Export Bus care exportă date din setul A și în diferitele componente ale setului B.

Setați B în organizarea unui GPU : Shader Array / Shader Engine / GPC

Anatomía GPU Organizație

Setul B include setul A în interiorul său, dar inițial adaugă instrucțiunile și cache-urile constante. În GPU-uri, precum și în procesoare, cache-ul de primul nivel este împărțit în două părți, una pentru date și cealaltă pentru instrucțiuni. Diferența constă în faptul că, în cazul GPU-urilor, memoria cache a instrucțiunilor se află în afara unităților shader și, prin urmare, sunt în setul B.

Setul B din organizarea unui GPU include, prin urmare, o serie de unități shader, care comunică între ele prin interfața comună de comunicare dintre ele, permițându-le să comunice între ele. Pe de altă parte, diferitele unități de umbrire nu sunt singure în Setul B, deoarece aici există mai multe unități de funcții fixe pentru redarea graficelor, ca acum.

  • Unitatea primitivă: Aceasta este invocată în timpul World Space Pipeline sau Geometric Pipeline, este însărcinată cu teselarea geometriei scenei.
  • Unitatea de rasterizare: It efectuează rasterizarea primitivelor, transformând triunghiurile în fragmente de pixeli și etapa sa fiind cea care începe așa-numita Screen Space Pipeline sau Rasterization Phase.
  • ROPS: Unitățile care scriu tampoanele de imagine acționează în două etape. În faza raster anterioară fazei de texturare, acestea generează tamponul de adâncime (Z-Buffer) în timp ce în faza de după faza de texturare, primesc rezultatul acestei etape pentru a genera tamponul de culoare sau diferitele ținte de redare (redare întârziată) .

Set C în arhitectura unui GPU :

NVIDIA-Ampere-GA102

Avem deja aproape GPU-ul complet sau GPU-ul fără acceleratoare, este format din următoarele componente:

  • Mai multe seturi B în interior.
  • Memorie globală partajată : Un Scratchpad și, prin urmare, în afara ierarhiei cache pentru a comunica seturile B între ele.
  • Unitate geometrică: Are capacitatea de a citi indicatorii către RAM care indică geometria scenei, cu aceasta este posibil să se elimine geometria nevizibilă sau superfluă, astfel încât să nu fie redată inutil în cadru.
  • Procesoare de comandă (grafică și calcul)
  • Memoria cache de ultimul nivel: Toate elementele GPU sunt clienții acestei cache, astfel încât trebuie să aibă un inel de comunicare imens, toate componentele Setului B au contact direct cu memoria cache L2, precum și toate componentele Setului C în sine.

Cache-ul de ultim nivel (LLC) este important deoarece cache-ul este cel care ne oferă coerență între toate elementele setului C între ele, incluzând în mod evident seturile B în cadrul acestuia. Nu numai atât, dar permite nu supra-saturarea controlerului de memorie externă, deoarece odată cu aceasta este LLC însăși, împreună cu unitățile MMU ale GPU, care sunt responsabile de captarea instrucțiunilor și datelor din RAM. Gândiți-vă la cache-ul de ultim nivel ca la un fel de depozit de logistică în care toate elementele setului C trimit și / sau primesc pachetele și logistica lor sunt controlate de MMU, care este unitatea responsabilă de acest lucru.

Set final, GPU complet

NVIDIA GPU

Cu toate acestea avem deja GPU-ul complet, setul D include unitatea principală care este GPU-ul însărcinat cu redarea graficelor jocurilor noastre preferate, dar nu este cel mai înalt nivel al unui GPU, deoarece ne lipsesc o serie de coprocesoare a sustine. Acestea nu acționează pentru a reda grafica direct, dar fără ele GPU nu ar putea funcționa. Aceste elemente sunt în general:

  • Unitatea GFX, inclusiv memoria cache de nivel superior
  • Podul Nord sau Podul Nord al GPU, dacă acest lucru se află într-un SoC eterogen (cu un procesor), dar cu o memorie partajată, atunci vor folosi un Northbridge comun. Toate elementele setului D sunt conectate la Northbridge
  • Acceleratoare: Codificatoarele video, adaptoarele de afișare, sunt conectate la Northbridge. În cazul adaptorului de afișare, acesta este cel care trimite semnalul video către portul DisplayPort sau HDMI
  • Unități DMA: Dacă există două spații de adresare RAM (chiar și cu același puț fizic), unitatea DMA permite transmiterea datelor dintr-un spațiu RAM în altul. În cazul unui GPU separat, unitățile DMA servesc drept comunicare cu CPU sau alte GPU-uri.
  • Controler și interfață de memorie: It permite comunicarea elementelor Setului D cu memoria RAM externă. Acestea sunt conectate la Northbridge și este singura cale către memoria RAM externă.

Cu toate acestea aveți deja organizarea completă a unui GPU, cu ajutorul căruia puteți citi diagrama unui GPU mult mai bine și puteți înțelege modul în care acesta este organizat intern.