architektur und programmierung von grafik- und...
TRANSCRIPT
![Page 1: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/1.jpg)
Architektur und Programmierung von Grafik- undKoprozessorenDie Grafik Pipeline
Stefan Zellmann
Lehrstuhl fur Informatik, Universitat zu Koln
SS2018
![Page 2: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/2.jpg)
Vertex Shader
Einfacher Vertex Shader (lose basierend auf OpenGL ShadingLanguage (GLSL)) . Applikation verwaltet ViewingTransformationsmatrix und perspektivische Transformationsmatrixund ubergibt sie an alle Vertex Shader Instanzen.
in vec3 position;
in mat4 view_mat;
in mat4 proj_mat;
void main() {
gl_Position = view_mat * proj_mat * vec4(position , 1.0);
}
Vertex Position aus Vertex Buffer bekannt. Vertex Shader fuhrtTransformation durch.
![Page 3: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/3.jpg)
Vertex Shader
Benutzerspezifische Vertex Attribute:
in vec3 position;
in mat4 view_mat;
in mat4 proj_mat;
in float time;
void main() {
position.x += cos(time);
position.y += sin(time);
gl_Position = view_mat * proj_mat * vec4(position , 1.0);
}
![Page 4: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/4.jpg)
Vertex Shader
Benutzerdefinierte per Vertex Attribute:
in vec3 position;
in mat4 view_mat;
in mat4 proj_mat;
attribute vec3 normal;
void main() {
...
transform(normal );
...
}
![Page 5: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/5.jpg)
Vertex Shader
Vertex Output geht spater durch Raster Engines ⇒benutzerdefinierte Attribute werden wahrend ScanKonvertierung interpoliert!
varying: interpolierte Attribute stehen spater in Fragment Phasezur Verfugung.
in vec3 position;
in mat4 view_mat;
in mat4 proj_mat;
varying vec3 normal;
varying vec2 uv;
void main() {
...
}
![Page 6: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/6.jpg)
Fragment Shader
Einfacher Fragment Shader mit diffusem Beleuchtungsmodell.varying Attribute aus Vertex Shader. Fragment-spezifischer Input(z. B. light dir).
// Simple diffuse shader
in sampler2D tex;
in vec3 light_dir;
varying vec3 normal;
varying vec2 uv;
out vec4 frag_color;
void main() {
// 2-D texture access
vec3 diff = tex2D(tex , uv);
// Simple (single -sided) Lambert shading
diff *= max(0.0, dot(light_dir , normal ));
// Write result
frag_color = vec4(diff , 1.0);
}
![Page 7: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/7.jpg)
Shader Programme
I Neue APIs: mehr programmierbare Pipeline Stages.I Geometrie Shader: folgen auf Vertex Stage. Programmatisch
Erzeugung weiterer Polygone.I Tesselation Shader: niedrig aufgeloste Geometrie kann durch
Tesselierung verfeinert werden, z. B. mit Bezier Patches(Subdivision Surface Algorithmen).
I Weitere programmierbase Stages z. B. im Zusammenhang mitMultisampling.
I Wir gehen vereinfachend nur von Vertex und FragmentShadern aus.
![Page 8: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/8.jpg)
Shader Programme
Shader werden zur Programmlaufzeit kompiliert und gelinkt.
GLuint vs = glCreateShader(GL_VERTEX_SHADER );
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER );
glShaderSource(vs, strlen(vert_shader_str),
vert_shader_str , 0);
glCompileShader(vs);
glShaderSource(fs, strlen(frag_shader_str),
frag_shader_str , 0);
glCompileShader(fs);
GLuint prog = glCreateProgram ();
glAttachShader(prog , vs);
glAttachShader(prog , fs);
glLinkProgram(prog);
glUseProgram(prog);
![Page 9: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/9.jpg)
Shader Programme
I Laufzeitkompilation und Linking.I Laufzeit Overhead (wegen Caching meistens nur erster
Programmlauf).I OpenGL Runtime muss Compiler integrieren.I Traditionell sehr fehleranfallig - IHVs (Independent Hardware
Vendors) legen Sprachstandard unterschiedlich aus.I Treiber muss Compiler-generierten Intermediarcode in
Maschinencode ubersetzen.I Shader Programme stehen im Klartext im Binary, konnen
einfach mit Hex-Editor ausgelesen werden.
I Vulkan API: Shader werden zur Compile Zeit in optimiertenIntermediarcode (SPIR-V) ubersetzt.
![Page 10: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/10.jpg)
Hierarchische Pipeline
Alte Versionen von Direct3D und OpenGL hatten hierarchischePipelines:
I Stack fur Transformationsmatrizen.
I Stack fur generellen State.
I Wende Transformationen / Materialien etc. auf Teile derGeometrie an, indem State / Transformationen auf Stackgepushed werden. Wenn entsprechende Teile der Geometriegezeichnet, poppe vom Stack
![Page 11: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/11.jpg)
Hierarchische Pipeline
Neue APIs gehen davon aus, dass die Applikation denhierarchischen State samt Transformationen verwaltet (z. B.Szenengraph Bibliothek), und dass Transformationen als uniformeVariablen an Shader Instanzen ubergeben werden.
Kompletter Matrix Stack in OpenGL deprecated. VieleBetriebssystemhersteller (insb. Microsoft, Apple) unterstutzen nursehr alte OpenGL Versionen, daher noch viel legacy Code, der aufalten OpenGL Konzepten aufbaut.
![Page 12: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/12.jpg)
API Erweiterungen
I Unterschiedliche Dynamik:
I Direct3D: Microsoft entscheidet im wesentlichen, schnelleDeprecation Mechanismen, schnelle Assimilation neuerFeatures.
I OpenGL (Khronos Group API): API unterstutzt Extensions.Lade Extension per Function Pointer aus Treiber (wenn nichtvorhanden, ist FP nach laden NULL).
I OpenGL Extension Review Mechanismus:I erst Vendor: NV shader thread group,
AMD multi draw indirect etc.I dann Extension (z. B. wegen Konsens mehrerer Vendors:
EXT sparse texture2.I im Verlauf entscheidet ggf. Architecture Review Board (ARB),
ob Extension sinnvoll: ARB bindless texture.I Zum Schluss wird Extension ggf. Teil des Core Profils.
I Deprecation bei OpenGL ahnlich langwierig.
![Page 13: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/13.jpg)
Historische Entwicklung von Grafikprozessoren
![Page 14: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/14.jpg)
Grafikbeschleuniger
I 1993 - SGI Grafik Workstations.I 1996–1998 - Grafikprozessoren:
I 3dfx Voodoo & Voodoo2.I Nvidia Riva TNT & TNT2.
I 1999 - Nvidia GeForce 256 (“GPU”).I 2006 - Nvidia GeForce 8800 GTX
I “Unified Shader Architecture”.I 2007 - CUDA, G80 Chip erste CUDA-fahige GPU.
I 2007 - Nvidia Tesla (vermarktet als “GPU ohneGrafikausgang, basiert auf G80 Chipsatz, zielte auf HighPerformance Computing Markt ab).
I 2009 - Nvidia Fermi Architektur: double-precisionBerechnungen, single-precision fused multiply-add.
![Page 15: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/15.jpg)
Grafik Pipeline
Vertex Specification
Vertex Processing
Primitive Assembly
Rasterization
Fragment Processing
Per-Sample Operations
I High-level und generisch, je nachSpezifikation, Architektur oderHersteller ggf. anders.
I Per-Sample vs. per-Pixel:Multi-Sampling.
I Rasterization: manchmal derAlgorithmus Rasterisierung,manchmal nur Scan Konvertierung.Bei Diskussion der HardwarePipeline Begriff Rasterizationgebrauchlicher, meint hier: nurScan Konvertierung.
![Page 16: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/16.jpg)
Grafikprozessoren um 1993
Vertex Specification
Vertex Processing
Primitive Assembly
Rasterization
Fragment Processing
Per-Sample Operations
CPU
PCI
Framebuffermemory
Texture memory
Bruce
RAMDACFramebuffer Interface
Bruce
Chuck
Texture managementunits
SLI
Abbildung: vgl. VOODOO2 Graphics High Performance Graphics EngineFor 3D Game Acceleration (Rev. 1.16, Dec 1, 1999), 3Dfx Interactive
![Page 17: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/17.jpg)
“GPU” um 1999
Vertex Specification
Vertex Processing
Primitive Assembly
Rasterization
Fragment Processing
Per-Sample Operations
CPUAGP x4
GPU
SLI
Abbildung: z. B. Nvidia GeForce 256, vermarktet als Graphics ProcessingUnit (GPU). Erster Koprozessor, der Vertex Verarbeitung und PixelOperationen abbildete. OpenGL 1.2, DirectX 7.
![Page 18: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/18.jpg)
GPUs um 2003
Vertex Specification
Vertex Processing
Primitive Assembly
Rasterization
Fragment Processing
Per-Sample Operations
CPUAGP x8
VP VP VP VP VP
Cull/Clip/Setup
RasterizationEarly-Z
FP FP FP FP FP FPFragment Crossbar
z-Test & Blending
Abbildung: vgl. GPU Gems 2: The GeForce 6 Series GPU Architecture.Erste Generation von GPUs mit frei programmierbaren Vertex undFragment Stages, dedizierten Vertex- und Fragmentprozessoren mitBranching Units, breiter 256-bit Memory Bus etc.
![Page 19: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/19.jpg)
GPUs um 2003
VP VP VP VP VP
Cull/Clip/Setup
RasterizationEarly-Z
FP FP FP FP FP FPFragment Crossbar
z-Test & Blending
fp32 Shader Unit
vec4 Shader Unit
Branch Unit
Vertex Texture Fetch
Cull/Clip/Setup
Vertex Input
Primitive Assembly
Viewport Processing
Texture Cache
Abbildung: vgl. GPU Gems 2: The GeForce 6 Series GPU Architecture.
![Page 20: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/20.jpg)
GPUs um 2003
VP VP VP VP VP
Cull/Clip/Setup
RasterizationEarly-Z
FP FP FP FP FP FPFragment Crossbar
z-Test & Blending
fp32 Shader Unit 1
fp32 Shader Unit 2
Branch Processor
Fog ALU
fp Texture Processor
Texture Cache
Shaded Fragment
Fragment InputTexture Input
Abbildung: vgl. GPU Gems 2: The GeForce 6 Series GPU Architecture.FP verarbeitet vier Pixel auf ein Mal (fur Texture Derivatives). SIMDFragment Verarbeitung hunderter Fragmente, versteckt Latenz furTexture Fetch.
![Page 21: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/21.jpg)
Traditionelle GPU Pipeline
Traditionelle Architekturen hatten separate Vertex und FragmentProzessorkerne. Dies fuhrte zu Lastimbalanzen, falls die Anzahl anDreiecken und Fragmenten nicht gleich verteilt war.
Vertex Processor Fragment Processor
![Page 22: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/22.jpg)
Moderne GPU Pipeline
Moderne GPUs verfugen uber sog. Unified Shader Kerne, diegenereller als die alten Vertex und Fragment Kerne sind und beideAufgaben ubernehmen konnen.
General Purpose Processor ("Unified Shader")
![Page 23: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/23.jpg)
Moderne GPU Pipeline
I Ausgehend davon (State Machine + Unified ShaderArchitektur) wollen wir uns spater anschauen, wie moderneArchitekturen den Weg vom Dreieck zum Bildschirmpixelhardwareseitig implementieren.
I Dabei betrachten wir den Weg vom CPU Programm (z. B.C/C++ API) uber das Betriebssystem, den Grafikbus und dieGPU bis zur Anzeige.
![Page 24: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/24.jpg)
Unified Shader GPUs um 2007
Vertex Specification
Vertex Processing
Primitive Assembly
Rasterization
Fragment Processing
Per-Sample Operations
CPUPCIe
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
FB FB FBFB
L2 L2 L2 L2
Abbildung: vgl. Technical Brief: NVIDIA GeForce 8800 GPU ArchitectureOverview, November 2006 TB-02787-001 v0.9. Streaming Architektur,Shader Cores ubernehmen diverse Aufgaben, u. a. auch Geometry Shader(neu).
![Page 25: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/25.jpg)
Unified Shader GPUs um 2007
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
SP
TA TA TA TA
TF TF TF TF
L1 Cache
I Unified Shader Core:I Streaming Prozessoren
(SP).I Texture Address Units
(TA).I Texture Filtering Units
(TF).
I Volliges Uberlappen vonTexture Fetch und MathInstructions ⇒ ExtremesVerstecken vonSpeicherzugriffslatenz.
![Page 26: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/26.jpg)
2009: Double Precision Berechnungen
Register File
Core
INTALU
FPALU
Result Queue
Instruction Cache
Scheduler Scheduler
Interconnect
L1/Shared Mem
SFU
SFU
SFU
SFU
Nvidia’s Fermi Architektur: “Special Function Units” furTrigonometrie etc.; Hardware double-precision Support; Supportfur 32-bit IEEE-754 compliant fused multiply-add (a * b + c ineiner Instruktion).1
1vgl. Whitepaper: NVIDIA’s Next Generation CUDA Compute Architecture:Fermi
![Page 27: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/27.jpg)
Skalierbarkeit von GPU Architekturen
![Page 28: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/28.jpg)
CPUs vs. GPUs
CPU
I Hohe Taktfrequenz
I Moderat viele Cores
I Moderat tiefe Pipelines
I Große Caches, BranchPrediction Units,Out-of-Order Execution
GPU
I Niedrige Taktfrequenz
I Viele Cores
I Sehr tiefe Pipelines
I Fur hohen Durchsatzoptimiert, Speicher- undsonstige Interfaces mit hoherBandbreite und hoherLatenz. “Latency Hiding”uber Durchsatz
![Page 29: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/29.jpg)
CPUs vs. GPUs
ControlALUALU ALUALU
ALUALU ALUALU
Cache
DRAM DRAM
CPU GPU
Abbildung: vgl. Modern GPU Architecture, Roger Crawfis, Game Designand Project.
![Page 30: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/30.jpg)
Anforderungen an Skalierbarkeit
I GPUs sind hochparallele Architekturen. Dies außert sichjedoch nicht bloß darin, dass GPUs extrem viele Kerne aufeinem Die unterbringen.
I Anforderungen an Skalierbarkeit entlang der gesamtenPipeline. Skaliert eine Pipeline Stage nicht mit zunehmenderEingabedatenmenge, beeinflusst das die gesamte Pipeline.
I GPUs haben programmierbare Funktionseinheiten (ShaderProzessoren / Shader Cores) und nicht-programmierbareFunktionseinheiten (Textureinheiten, Raster Engines, RenderOutput Units (ROPs)).
I Außerdem “Host Interface”: Treiber, Command Prozessoren,etc.
I GPU Architektur muss Skalierbarkeit bzgl. all dieser Einheitengewahrleisten.
![Page 31: Architektur und Programmierung von Grafik- und ...vis.uni-koeln.de/fileadmin/sites/VIS/apgk/2018-05-18.pdf · Architektur und Programmierung von Gra k- und Koprozessoren Die Gra k](https://reader030.vdokument.com/reader030/viewer/2022040217/5d5c34e288c993d2318bca71/html5/thumbnails/31.jpg)
Anforderungen an Skalierbarkeit
Insb. muss Skalierbarkeit bzgl. der folgenden Schlusselmetriken 2
gewahrleistet sein:
I Eingabedatenrate: Rate, mit der Kommandos und Geometriean die GPU geschickt werden konnen.
I Dreiecksrate: Rate, mit der Geometrie transformiert, geclippedund als Dreiecke an Raster Engines geschickt wird.
I Pixelrate: Rate, mit der Raster Engines Dreiecke zuFragmenten rastern, diese texturiert und zusammensetzen(Compositing).
I Texturspeicher: Große der maximal nutzbaren Texturen.
I Display Bandbreite: Bandbreite, mit der Pixel ausGrafikspeicher an Displays verteilt werden konnen.
2vgl. Pomegranate: A Fully Scalable Graphics Architecture, Eldridge et al.Siggraph 2000