Modul 4 — ARHITECTURĂ HARDWARE

Lecția 4.2 — GPU

geometrie, rasterizare, shading

Începe Lecția

Introducere

Fiecare cadru pe care îl vezi pe ecran când joci pe o consolă este rezultatul muncii GPU-ului: mii de obiecte 3D sunt transformate în pixeli colorați în mai puțin de 16 milisecunde (pentru 60 FPS). GPU-ul dintr-un PlayStation 5 procesează geometria scenei, aplică texturi, calculează iluminarea, execută shaderele și produce imaginea finală — totul în paralel, pe 36 de unități de calcul care lucrează simultan.

Această lecție acoperă cele trei etape principale ale procesorului grafic: geometria (transformarea vertecșilor din spațiu 3D în spațiu ecran), rasterizarea (conversia triunghiurilor în fragmente/pixeli) și shading-ul (calculul culorii finale a fiecărui pixel, inclusiv iluminare, umbre și efecte speciale).

Scopul nu este memorarea numărului de TFLOPS, ci înțelegerea ce se întâmplă între momentul în care jocul definește o scenă 3D și momentul în care pixelii apar pe ecran, de ce GPU-ul RDNA 2 din PS5 atinge 10.28 TFLOPS și cum ray tracing-ul hardware simulează fizic corect lumina.

Teorie Structurată

4.2.1 — Definiție și componente GPU

  • GPU (Graphics Processing Unit) = circuit electronic specializat pentru procesare de imagine digitală și accelerare grafică
  • Prezent pe plăci grafice discrete, motherboard-uri, telefoane mobile, PC-uri, workstation-uri, console de jocuri
  • Termenul "GPU" folosit prima dată de Sony (1994) pentru PlayStation (GPU proiectat de Toshiba)
  • Popularizat de Nvidia (1999) cu GeForce 256 – "primul GPU din lume"
  • GeForce 256: single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat
  • GPU modern = capacitate de a rula programe custom numite shadere
  • Diferă de controllere video mai vechi (video display controllers – fără calcule interne) și blittere (doar operații de bază pe memorie)

4.2.2 — Arhitectură și procesare paralelă

  • Funcțiile grafice sunt în general independente → se pretează la implementare pe motoare de calcul separate
  • GPU-urile moderne includ sute sau mii de unități de calcul (embarrassingly parallel)
  • Unități de procesare: Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
  • Performanță măsurată în FLOPS (floating point operations per second), tipic TFLOPS în anii 2010-2020
  • Factori de performanță: dimensiunea traseelor semiconductoare, frecvența ceasului, cache-urile on-chip
  • GDDR SDRAM = memorie dedicată GPU-ului (vs. system RAM pentru integrated graphics)
  • GPU dedicat (discrete): RAM propriu (GDDR), performanță mai mare
  • GPU integrat (IGP/UMA): partajează RAM-ul sistemului, bandwidth limitat (~128 GB/s vs. >1000 GB/s la discrete)
  • APU (AMD Accelerated Processing Unit) = CPU + GPU pe același die
  • PS5 și Xbox Series = UMA (Unified Memory Architecture)

4.2.3 — Istoria GPU în console

  • Atari 2600 (1977): Television Interface Adaptor – video shifter
  • Namco Galaxian (1979): hardware specializat cu suport RGB color, multi-sprite, tilemap scrolling
  • Sega Model 1 (1993), Namco System 22, Sega Model 2: accelerare 3D în arcade-uri
  • Nintendo 64 (1996): Reality Coprocessor – primul GPU cu hardware T&L (Transform & Lighting) pe console home
  • PlayStation (1994): GPU Sony 32-bit (Toshiba) – prima utilizare a termenului "GPU"
  • PlayStation 4/Xbox One (2013): GPU bazat pe AMD Radeon HD 7850/7790
  • PlayStation 5/Xbox Series X (2020): GPU bazat pe AMD RDNA 2 cu ray tracing hardware
  • PS4/Xbox One = GPU Radeon HD 7000 series; PS5/Xbox Series = RDNA 2

4.2.4 — GPGPU și evoluție modernă

  • GPGPU = General Purpose computing on GPU
  • GeForce 8 series: primele GPU-uri cu stream processing units generice
  • CUDA (Nvidia, 2007): prima platformă larg adoptată pentru GPU computing
  • OpenCL: standard deschis de la Khronos Group pentru dezvoltare cross-platform (CPU + GPU)
  • RTX 20 series (2018): ray tracing cores adăugate – real-time ray tracing pe hardware consumer
  • RDNA 2 (AMD, 2020): hardware-accelerated ray tracing
  • Tensor cores (Nvidia Volta 2017, Turing 2018): deep learning, DLSS (Deep Learning Super Sampling)
  • AMD Matrix Cores (RDNA 3), Intel XMX Cores (Arc Alchemist)
  • Aplicații actuale: AI/machine learning, rendering, video encoding, simulări științifice

4.2.5 — Structura pipeline-ului grafic

  • Pipeline-ul grafic = framework ce descrie procedurile de transformare a unei scene 3D în reprezentare 2D pe ecran
  • Trei părți principale: Application, Geometry, Rasterization
  • Application stage: rulează pe CPU, gestionează input utilizator, animații, detecția coliziunilor, scene management
  • Geometry stage: operează pe poligoane și vertecși (Vertex pipeline)
  • Rasterization stage: convertește primitive continue în fragmente discrete (pixeli)
  • API-uri standard: Direct3D, OpenGL, Vulkan – abstractizează hardware-ul

4.2.6 — Geometria (procesare vertecși)

  • Vertex = punct în spațiul 3D; mai mulți vertecși definesc suprafețe
  • Triunghi = primitivă geometrică de bază (definit de 3 vertecși + vector normal)
  • Triunghi preferat față de patrulater: orice 3 puncte în 3D formează un plan (triunghi plat garantat)
  • Textura = imagine "lipită" pe suprafața primitivei
  • Sistemul de coordonate world: cartezian, dreptunghiular, axe la scală egală
  • Model/Object coordinate system → World coordinate system (prin transformări: translație, rotație, scalare)
  • Matrici de transformare 4×4 (coordonate omogene) pentru rotație pe fiecare axă (Rx, Ry, Rz) + translație (T)
  • Instancing: mai multe copii ale unui obiect cu transformări diferite (ex.: pădure din copaci)
  • Camera Transformation (View Transformation): scena se transformă ca și cum camera e la origine, privind pe axa Z
  • Projection: transformare view volume → cub normalizat (-1,-1,0) la (1,1,1)
  • Perspective projection: proiecție centrală, frustum (piramidă trunchiată), obiectele îndepărtate par mai mici
  • Orthogonal projection: paralelism păstrat, pentru reprezentări tehnice/hărți
  • Z-buffer (depth buffer): stochează adâncimea fiecărui pixel, rezoluție tipică 16 biți
  • Lighting: iluminarea suprafețelor calculate per-vertex (ambient light + directional); scalar product între direcția luminii și normala suprafeței
  • Clipping: eliminarea primitivelor din afara volumului vizual (frustum culling), decuparea celor parțiale
  • Window-Viewport Transformation: mapare coordonate normalizate → coordonate ecran (pixeli)

4.2.7 — Rasterizarea în pipeline

  • Etapa finală: primitivele continue devin fragmente discrete (fiecare fragment = un pixel în framebuffer)
  • Hidden surface determination: Z-buffer determină care fragment e mai aproape de observator
  • Culoarea fragmentului: depinde de iluminare, textură, proprietăți material; interpolat din valorile vertecșilor triunghiului
  • Fragment shader (Pixel shader): rulat per fragment, calculează culoarea/atributele finale
  • Double buffering: rasterizarea se face într-o zonă de memorie separată, apoi copiată în zona vizibilă

4.2.8 — Vertex shader și transformări

  • Vertex shader: pe hardware modern, execută cel puțin transformarea punctelor și calculul iluminării
  • DirectX 10+: vertex shader custom obligatoriu
  • Projection + view matrix: pre-calculate (rămân constante per imagine)
  • World matrix: diferită per obiect, recalculată la fiecare frame

4.2.9 — Definiție rasterizare

  • Rasterizare = conversia unei imagini descrise în format vector (forme geometrice) într-o imagine raster (pixeli)
  • Etimologie: German "Raster" (grilă, tipar) + Latin "rāstrum" (greblă)
  • Poate referi: desenare modele 3D sau conversie primitive 2D (poligoane, segmente) în format rasterizat
  • Extrem de rapidă comparativ cu ray tracing → folosită în majoritatea motoarelor 3D real-time

4.2.10 — Rasterizare triunghiuri 3D

  • Poligoanele (mesh-uri) = reprezentare comună a modelelor 3D digitale
  • Înainte de rasterizare, poligoanele se descompun în triunghiuri (problema tipică: rasterizarea unui triunghi)
  • Cerințe algoritm: 1) fără goluri între triunghiuri adiacente; 2) niciun pixel rasterizat de două ori (fără overlap)
  • Top-left rule: pixel rasterizat dacă centrul e complet în interior SAU pe marginea top/left
  • Top edge = margine exact orizontală, deasupra celorlalte
  • Left edge = margine non-orizontală pe partea stângă
  • Implementat în Direct3D și multe implementări OpenGL
  • Culoarea fiecărui pixel = determinată de pixel shader (complet programabil pe GPU-uri moderne)
  • Fixed-function hardware: rasterizarea se face de hardware non-programabil (eficiență maximă)
  • Anti-aliasing: îmbunătățește calitatea, creează margini "smooth"
  • Sub-pixel precision: calculează poziții la scară mai fină decât grila de pixeli (PlayStation 1 nu avea sub-pixel precision)

4.2.11 — Definiție și tipuri de shadere

  • Shader = operație programabilă aplicată datelor pe măsură ce traversează rendering pipeline-ul
  • Termenul prima dată public de Pixar (1988) în RenderMan Interface Specification v3.0
  • Shadere moderne rulează pe GPU-uri = hardware dedicat cu execuție masiv paralelă
  • Rendering-ul imaginilor este embarrassingly parallel → pixel/fragment shaders scalează bine pe hardware SIMD
  • Unified Shader Model: pool comun de unități shader, distribuit dinamic între tipuri diferite

4.2.12 — Fragment (Pixel) Shader

  • Fragment/Pixel shader: calculează culoarea și atributele fiecărui "fragment" (unitate de rendering care afectează maximum un pixel de ieșire)
  • Aplicații: bump mapping (textură de profunzime), shadows, specular highlights, translucency, Z-buffering
  • Poate altera adâncimea fragmentului, poate genera mai multe culori (multiple render targets)
  • Post-processing 2D: blur, edge detection, cel shading
  • Primul GPU cu pixel shader programabil: Nvidia GeForce 3 (NV20), 2001
  • ATI Radeon 9700 (2002): primul Direct3D 9.0 accelerator – shadere cu looping și floating point extins

4.2.13 — Vertex Shader

  • Rulat o dată per vertex 3D dat procesorului grafic
  • Transformă poziția 3D a vertexului → coordonată 2D pe ecran + depth value (Z-buffer)
  • Manipulează: position, color, texture coordinates (nu poate crea vertecși noi)
  • Output → geometry shader (dacă există) sau rasterizer

4.2.14 — Alte tipuri de shadere

  • Geometry shader: introdus în Direct3D 10 / OpenGL 3.2
  • Input: primitivă completă (ex. triunghi cu 3 vertecși + adiacență)
  • Poate genera primitive noi (puncte, linii, triunghiuri)
  • Utilizări: point sprites, tessellation, shadow volumes, cube map rendering
  • Tessellation shader: OpenGL 4.0 / Direct3D 11
  • Hull shader + Domain shader: subdivizare mesh-uri la runtime
  • Level-of-detail activ: mai mult detaliu aproape de cameră, mai puțin departe
  • Mesh shader: Nvidia Turing (2018), AMD RDNA 2 (2020), Intel Arc Alchemist
  • Modelat după compute shaders, acces la date de geometrie
  • Crește dramatic numărul de triunghiuri/frame rate
  • Ray-tracing shader: DirectX Raytracing, Vulkan, Metal
  • Nvidia/AMD = "ray tracing cores" (hardware dedicat)
  • Compute shader: calcule generale pe GPU (GPGPU), nu limitat la grafică
  • CUDA, OpenCL, DirectCompute
  • Limbaje shader: GLSL (OpenGL), HLSL (DirectX), Metal Shading Language (Apple), SPIR-V (intermediar)

Legătura Fizică — Informatică

Definiție și componente GPU

  • GPU (Graphics Processing Unit) = circuit electronic specializat pentru procesare de imagine digitală și accelerare grafică
  • GPU modern = capacitate de a rula programe custom numite shadere

Arhitectură și procesare paralelă

  • GPU-urile moderne includ sute sau mii de unități de calcul (embarrassingly parallel)
  • GPU integrat (IGP/UMA): partajează RAM-ul sistemului, bandwidth limitat (~128 GB/s vs. >1000 GB/s la discrete)

GPGPU și evoluție modernă

  • GPGPU = General Purpose computing on GPU
  • GeForce 8 series: primele GPU-uri cu stream processing units generice
  • OpenCL: standard deschis de la Khronos Group pentru dezvoltare cross-platform (CPU + GPU)

Structura pipeline-ului grafic

  • Application stage: rulează pe CPU, gestionează input utilizator, animații, detecția coliziunilor, scene management

Rasterizare triunghiuri 3D

  • Poligoanele (mesh-uri) = reprezentare comună a modelelor 3D digitale
  • Culoarea fiecărui pixel = determinată de pixel shader (complet programabil pe GPU-uri moderne)

Definiție și tipuri de shadere

  • Shadere moderne rulează pe GPU-uri = hardware dedicat cu execuție masiv paralelă

Vertex Shader

  • Rulat o dată per vertex 3D dat procesorului grafic

Alte tipuri de shadere

  • Modelat după compute shaders, acces la date de geometrie
  • Compute shader: calcule generale pe GPU (GPGPU), nu limitat la grafică
  • CUDA, OpenCL, DirectCompute

Aplicare Directă în Console

Definiție și componente GPU

  • Prezent pe plăci grafice discrete, motherboard-uri, telefoane mobile, PC-uri, workstation-uri, console de jocuri
  • Termenul "GPU" folosit prima dată de Sony (1994) pentru PlayStation (GPU proiectat de Toshiba)

Arhitectură și procesare paralelă

  • APU (AMD Accelerated Processing Unit) = CPU + GPU pe același die
  • PS5 și Xbox Series = UMA (Unified Memory Architecture)

Istoria GPU în console

  • Atari 2600 (1977): Television Interface Adaptor – video shifter
  • Namco Galaxian (1979): hardware specializat cu suport RGB color, multi-sprite, tilemap scrolling
  • Sega Model 1 (1993), Namco System 22, Sega Model 2: accelerare 3D în arcade-uri
  • Nintendo 64 (1996): Reality Coprocessor – primul GPU cu hardware T&L (Transform & Lighting) pe console home
  • PlayStation (1994): GPU Sony 32-bit (Toshiba) – prima utilizare a termenului "GPU"
  • PlayStation 4/Xbox One (2013): GPU bazat pe AMD Radeon HD 7850/7790
  • PlayStation 5/Xbox Series X (2020): GPU bazat pe AMD RDNA 2 cu ray tracing hardware
  • PS4/Xbox One = GPU Radeon HD 7000 series; PS5/Xbox Series = RDNA 2

Rasterizare triunghiuri 3D

  • Sub-pixel precision: calculează poziții la scară mai fină decât grila de pixeli (PlayStation 1 nu avea sub-pixel precision)

Exemplu Real de Hardware

Definiție și componente GPU

  • Popularizat de Nvidia (1999) cu GeForce 256 – "primul GPU din lume"

Arhitectură și procesare paralelă

  • Unități de procesare: Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
  • GDDR SDRAM = memorie dedicată GPU-ului (vs. system RAM pentru integrated graphics)
  • GPU dedicat (discrete): RAM propriu (GDDR), performanță mai mare

GPGPU și evoluție modernă

  • CUDA (Nvidia, 2007): prima platformă larg adoptată pentru GPU computing
  • Tensor cores (Nvidia Volta 2017, Turing 2018): deep learning, DLSS (Deep Learning Super Sampling)
  • AMD Matrix Cores (RDNA 3), Intel XMX Cores (Arc Alchemist)

Definiție și tipuri de shadere

  • Termenul prima dată public de Pixar (1988) în RenderMan Interface Specification v3.0

Fragment (Pixel) Shader

  • Primul GPU cu pixel shader programabil: Nvidia GeForce 3 (NV20), 2001

Alte tipuri de shadere

  • Mesh shader: Nvidia Turing (2018), AMD RDNA 2 (2020), Intel Arc Alchemist
  • Nvidia/AMD = "ray tracing cores" (hardware dedicat)

Probleme Frecvente Asociate

⚠️ Rasterizare triunghiuri 3D

Înainte de rasterizare, poligoanele se descompun în triunghiuri (problema tipică: rasterizarea unui triunghi)

Recapitulare

  • Definiție și componente GPU: GPU (Graphics Processing Unit) = circuit electronic specializat pentru procesare de imagine digitală și accelerare grafică
  • Arhitectură și procesare paralelă: Funcțiile grafice sunt în general independente → se pretează la implementare pe motoare de calcul separate
  • Istoria GPU în console: Atari 2600 (1977): Television Interface Adaptor – video shifter
  • GPGPU și evoluție modernă: GPGPU = General Purpose computing on GPU
  • Structura pipeline-ului grafic: Pipeline-ul grafic = framework ce descrie procedurile de transformare a unei scene 3D în reprezentare 2D pe ecran
  • Geometria (procesare vertecși): Vertex = punct în spațiul 3D; mai mulți vertecși definesc suprafețe
  • Rasterizarea în pipeline: Etapa finală: primitivele continue devin fragmente discrete (fiecare fragment = un pixel în framebuffer)
  • Vertex shader și transformări: Vertex shader: pe hardware modern, execută cel puțin transformarea punctelor și calculul iluminării
  • Definiție rasterizare: Rasterizare = conversia unei imagini descrise în format vector (forme geometrice) într-o imagine raster (pixeli)
  • Rasterizare triunghiuri 3D: Poligoanele (mesh-uri) = reprezentare comună a modelelor 3D digitale
  • Definiție și tipuri de shadere: Shader = operație programabilă aplicată datelor pe măsură ce traversează rendering pipeline-ul
  • Fragment (Pixel) Shader: Fragment/Pixel shader: calculează culoarea și atributele fiecărui "fragment" (unitate de rendering care afectează maximum un pixel de ieșire)
  • Vertex Shader: Rulat o dată per vertex 3D dat procesorului grafic
  • Alte tipuri de shadere: Geometry shader: introdus în Direct3D 10 / OpenGL 3.2

Quiz — 5 Întrebări

Întrebarea 1

Care afirmație este corectă despre: GeForce 256?

  • a) single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat
  • b) dimensiunea traseelor semiconductoare, frecvența ceasului, cache-urile on-chip
  • c) GPU modern = capacitate de a rula programe custom numite shadere
  • d) Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
Arată răspunsul

a) — single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat

Întrebarea 2

Care afirmație este corectă despre: Unități de procesare?

  • a) single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat
  • b) GPU modern = capacitate de a rula programe custom numite shadere
  • c) Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
  • d) dimensiunea traseelor semiconductoare, frecvența ceasului, cache-urile on-chip
Arată răspunsul

c) — Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel

Întrebarea 3

Care afirmație este corectă despre: Atari 2600 (1977)?

  • a) Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
  • b) GPU modern = capacitate de a rula programe custom numite shadere
  • c) Television Interface Adaptor – video shifter
  • d) single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat
Arată răspunsul

c) — Television Interface Adaptor – video shifter

Întrebarea 4

Care afirmație este corectă despre: GPGPU și evoluție modernă?

  • a) single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat
  • b) GPGPU = General Purpose computing on GPU
  • c) Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
  • d) GPU modern = capacitate de a rula programe custom numite shadere
Arată răspunsul

b) — GPGPU = General Purpose computing on GPU

Întrebarea 5

Care afirmație este corectă despre: Trei părți principale?

  • a) Application, Geometry, Rasterization
  • b) single-chip processor cu transform, lighting, triangle setup/clipping și rendering integrat
  • c) GPU modern = capacitate de a rula programe custom numite shadere
  • d) Streaming Multiprocessors (SM) la Nvidia, Compute Units (CU) la AMD, Xe Cores la Intel
Arată răspunsul

a) — Application, Geometry, Rasterization

Exercițiu Aplicat de Gândire

🧠 Exercițiu: GPU

Scenariu: Analizezi un sistem hardware care utilizează conceptul de geometrie. Pe baza cunoștințelor din această lecție, răspunde la următoarele întrebări:

  • 1. Defineste pe scurt: geometrie.
  • 2. Ce rol are rasterizare în contextul hardware-ului?
  • 3. Explică relația dintre geometrie și shading.
Arată rezolvarea

1. GPU (Graphics Processing Unit) = circuit electronic specializat pentru procesare de imagine digitală și accelerare grafică

2. Funcțiile grafice sunt în general independente → se pretează la implementare pe motoare de calcul separate

3. Atari 2600 (1977): Television Interface Adaptor – video shifter

Video Recomandat

0:00 / 0:00

Cum funcționează plăcile video? Explorarea arhitecturii GPU cu animații 3D detaliate (Branch Education).