Hardware-Zone Schriftzug

Neueste Artikel

Aufbau

Die Grafikkarte ist eine Steckkarte, die sich in einen speziell dafür vorgesehenen Steckplatz auf der Hauptplatine des PCs befindet. Sie besteht im Wesentlichen aus 3 Komponenten: Dem Grafikprozessor (GPU), dem Grafik- oder Videospeicher und einem Signalwandler (TMDS-Transmitter). Der Grafikprozessor führt alle Grafikberechnungen aus und ist der mit Abstand komplexeste Chip in einem PC. Während ein Core-i7-3960X-Prozessor nur aus 774 Millionen Transistoren besteht, verfügt die AMD-Radeon-7970-GPU über 4,3 Milliarden (Quelle).

gpu diagramm

Befehlsprozessor (Command Processor)

 

Der Befehlsprozessor holt die Grafikbefehle via DMA (direkter Speicherzugriff ohne Eingreifen der CPU) aus dem Arbeitsspeicher und analysiert diese, um z.B. vorab einen Ressourcenkonflikt (2 Einheiten greifen gleichzeitig auf denselben Speicherbereich zu) zu vermeiden. Er wandelt Befehle in interne Maschineninstruktionen um, überwacht die anderen Einheiten auf dem Chip und unterbricht ggf. die Befehlsverarbeitung.

Setup-Engine oder Input-Assembler

 

Der Input-Assembler („Eingabe-Sammler“) holt die für die Berechnung benötigten Daten aus dem Speicher:

  • Vertex- und Geometriedaten: Eckpunkt-Eigenschaften (x-, y-, z- bzw. Tiefe-Koordinaten, Texturkoordinaten, Farb- und Transparenzwerte), Koordinatensystem
  • Daten zur Rasterung, z.B. Auflösung, Projektion

Außerdem erzeugt er selbst weitere Daten:

  • durch Interpolation: Bei der Interpolation werden fehlende Punkte zwischen zwei Punkten mithilfe mathematischer Funktionen berechnet.
  • durch Tessellation: Zerlegt komplexe Formen in Dreiecke, damit sie leichter verarbeitet werden können.

Der erzeugte Datenstrom wird an die Dispatch-Einheit weitergeleitet.

Dispatch-Einheit

 

Der Verarbeitungsprozess wird in Teilprozesse (Threads) aufgeteilt, die in Warteschlangen eingereiht und den freien Stream-Prozessoren oder Textur-Einheiten zugeteilt werden. Dadurch erreicht man eine maximale Auslastung der Verarbeitungseinheiten.

Stream-Prozessor (SP)

 

Ein Stream-Prozessor ist ein sehr flexibel einsetzbares Rechenwerk: Für komplexe, mathematische Berechnungen (CUDA – Compute Unified Device Architecture) oder als vielseitiger Shader („Schattierer“).

  • Mit einem Vertex-Shader können Farbe, Position und Beleuchtung eines Eckpunktes im dreidimensionalen Raum verändert werden. Auf diese Weise ist es z.B. möglich, geometrische Formen zu bewegen, zu drehen oder zu vergrößern. Auch besondere Effekte wie Wellen können erzeugt werden.
  • Mit einem Geometrie-Shader können aus den bereits vorhandenen Formen weitere Formen erzeugt werden. So lassen sich auch sehr komplexe, realistische Details wie Haare oder Gras simulieren.
  • Mit einem Pixel-Shader können Attribute eines einzelnen Bildpunktes (Farbe, z-Wert (Tiefe-Wert), Beleuchtung, Schatten usw.) berechnet und verändert werden.

Da Shader-Funktionen für jeden Pixel bzw. Eckpunkt einzeln angewendet werden, müssen sie für ein komplettes Bild vielfach parallel ausgeführt werden. Moderne Grafikprozessoren verfügen deshalb über hunderte solcher Stream-Prozessoren, die zu sogenannten SIMD-Arrays (SIMD = Single Instruction Multiple Data, d.h. dieselbe Funktion auf einen Strom von Daten anwenden) zusammengefasst sind. Je mehr SPs vorhanden sind, desto höher ist die Anzahl der Bilder pro Sekunde.

Textur-Einheit

 

Die Textur-Einheit legt mit Hilfe der interpolierten Texturkoordinaten zweidimensionale Grafiken (Texturen) auf die einzelnen geometrischen Formen (Polygone), um Oberflächen realistischer erscheinen zu lassen. Aufgaben der TMU sind:

  • Perspektivenkorrektur: Damit die Texturen nicht verzerrt dargestellt werden, führt die Textur-Einheit eine Perspektivenkorrektur durch.
  • Textur-Filterung: Betrachtet man eine Textur aus nächster Nähe oder aus großer Entfernung, erscheint sie entweder als sehr grobkörnig („pixelig“, da man jeden Bildpunkt erkennen kann) oder als flimmernd (bekannt auch als Moiré-Effekt). Diese unerwünschten Effekte werden durch MIP-Mapping und Textur-Filterung vermindert. Es gibt 3 verschiede Arten der Filterung: Bilineare, trilineare oder anisotrope Filterung.
  • MIP-Mapping (MIP = lat. Multum In Parvum – „Vieles auf kleinem Platz“): Dabei erzeugt die Textur-Einheit für jede Entfernungs- bzw. Detailstufe eine eigene Version derselben Textur mit jeweils halber Kantenlänge. Es wird dann immer die Detailstufe der Textur aus dem Textur-Cache geladen, bei der ein Texel (texturierter Bildpunkt) mindestens so groß ist wie ein Pixel.

Je mehr TMUs vorhanden sind, desto mehr Texel können pro Takt verarbeitet werden und desto höher ist die Anzahl der Bilder pro Sekunde.

ROP (Raster Operations Processor)

 

Der Raster Operations Processor bereitet die Pixel für die Ausgabe vor und überträgt diese dann in den Framebuffer, den auf dem Bildschirm sichtbaren Bereich des Grafikspeichers. Die Bezeichnung leitet sich von den Schritten in der Render-Pipeline ab, die im Rahmen der Rasterung durchgeführt werden (ROP steht deshalb auch für Raster Operations Pipeline).

  • Verdeckungsberechnung (Z-Buffering): Jedem einzelnen Bildpunkt ist ein Entfernungs- oder Tiefenwert Z zugeordnet, mit dessen Hilfe der ROP feststellen kann, ob sich der Pixel vor oder hinter dem anderen Pixel befindet. Wenn der Pixel „abgedeckt“ wird, schreibt ihn der ROP nicht in den Framebuffer.
  • Schablonenberechnung (Stencil-Buffering): Durch eine Schablone (Stencil) oder Maske können Bereiche definiert werden, die nicht für jedes neue Bild im Framebuffer überschrieben werden sollen. Bei Flugsimulatoren kann so z.B. ein Cockpit simuliert werden.
  • Blending: Unter Blending versteht man das Mischen von Farbwerten zweier Bildpunkte.
  • Alpha-Blending: Jedem Bildpunkt wird zusätzlich ein Transparenzwert zugeordnet, der den Grad der Durchsichtigkeit bestimmt, z.B. um Glas zu simulieren.
  • Fog-Blending: Mit zunehmender Entfernung zum Betrachter werden die Farbwerte der Bildpunkte immer stärker mit einer anderen Farbe vermischt, um eine bessere Tiefenwirkung zu erzielen.
  • Kantenglättung (Anti-Aliasing): Durch Rasterung entsteht vor allem an schrägen Kanten ein hässlicher Treppeneffekt. Dieser Effekt kann mit verschiedenen Anti-Aliasing-Verfahren verringert werden. Meistens wird das gesamte Bild vergrößert, zu jedem Bildpunkt ein Durchschnittswert aus den Farbwerten benachbarter Bildpunkte (die sogenannten Sub-Samples) erzeugt und dann wieder verkleinert (Supersampling). Die Pixel mit den neuen Farbwerten werden in den Framebuffer geschrieben.