Textur-Mapping-Einheit - Texture mapping unit

Eine Texture Mapping Unit (TMU) ist eine Komponente in modernen Grafikprozessoren (GPUs). In der Vergangenheit war es ein separater physischer Prozessor. Eine TMU ist in der Lage sich zu drehen, skalieren und verzerren ein Bitmap - Bild (performing Textursampling ,) auf einer beliebigen Ebene eines gegebenen platziert werden 3D - Modell als Textur. Dieser Vorgang wird als Texturabbildung bezeichnet . In modernen Grafikkarten wird es als diskrete Stufe in einer Grafikpipeline implementiert , während es bei seiner Einführung als separater Prozessor implementiert wurde, z. B. auf der Voodoo2- Grafikkarte.

Hintergrund und Geschichte

Die TMU entstand aufgrund der Rechenanforderungen beim Abtasten und Transformieren eines flachen Bildes (als Texturkarte) in den richtigen Winkel und die richtige Perspektive, die es im 3D-Raum benötigen würde. Die Rechenoperation ist eine große Matrixmultiplikation , die die damaligen CPUs (frühe Pentiums) bei akzeptabler Leistung nicht bewältigen konnten.

Im Jahr 2013 sind TMUs Teil der Shader-Pipeline und von den Render Output Pipelines (ROPs) entkoppelt . In der Cypress-GPU von AMD verfügt beispielsweise jede Shader-Pipeline (von denen es 20 gibt) über vier TMUs, wodurch die GPU 80 TMUs erhält. Dies wird von Chip-Designern durchgeführt, um Shader und die Textur-Engines, mit denen sie arbeiten werden, eng miteinander zu verbinden.

Geometrie

3D-Szenen bestehen im Allgemeinen aus zwei Dingen: der 3D-Geometrie und den Texturen, die diese Geometrie abdecken. Textureinheiten in einer Grafikkarte nehmen eine Textur und ordnen sie einem Stück Geometrie zu. Das heißt, sie wickeln die Textur um die Geometrie und erzeugen strukturierte Pixel, die dann auf den Bildschirm geschrieben werden können. Texturen können ein tatsächliches Bild, eine Lichtkarte oder sogar normale Karten für erweiterte Oberflächenbeleuchtungseffekte sein.

Texturfüllrate

Um eine 3D-Szene zu rendern, werden Texturen über Polygonnetzen abgebildet . Dies wird als Texturabbildung bezeichnet und durch Texturabbildungseinheiten (TMUs) auf der Videokarte erreicht. Die Texturfüllrate ist ein Maß für die Geschwindigkeit, mit der eine bestimmte Karte eine Texturabbildung durchführen kann.

Obwohl die Pixel-Shader- Verarbeitung immer wichtiger wird, hat diese Zahl immer noch ein gewisses Gewicht. Bestes Beispiel dafür ist der X1600 XT. Diese Karte hat ein Verhältnis von 3 zu 1 von Pixel-Shader-Prozessoren / Textur-Mapping-Einheiten. Infolgedessen erzielt der X1600 XT im Vergleich zu anderen GPUs der gleichen Ära und Klasse (wie dem 7600GT von nVidia) eine geringere Leistung. Im mittleren Bereich kann das Textur-Mapping immer noch ein Engpass sein. Im oberen Preissegment hat der X1900 XTX jedoch das gleiche Verhältnis von 3 zu 1, funktioniert jedoch einwandfrei, da die Bildschirmauflösungen die besten Ergebnisse erzielen und die Texturzuordnungsleistung für jede Anzeige mehr als ausreichend ist.

Einzelheiten

Texture Mapping Units (TMUs)

Texturen müssen adressiert und gefiltert werden. Diese Aufgabe übernehmen TMUs, die in Verbindung mit Pixel- und Vertex-Shader- Einheiten arbeiten. Es ist die Aufgabe der TMU, Texturoperationen auf Pixel anzuwenden. Die Anzahl der Textureinheiten in einem Grafikprozessor wird verwendet, wenn zwei verschiedene Karten für die Texturierungsleistung verglichen werden. Es ist anzunehmen, dass die Karte mit mehr TMUs die Texturinformationen schneller verarbeitet. In modernen GPUs enthalten TMUs Texture Address Units (TA) und Texture Filtering Units (TF). Texturadresseinheiten ordnen Texel Pixel zu und können Texturadressierungsmodi ausführen. Texturfiltereinheiten führen optional eine hardwarebasierte Texturfilterung durch .

Pipelines

Eine Pipeline ist die Architektur der Grafikkarte, die eine allgemein genaue Vorstellung von der Rechenleistung eines Grafikprozessors liefert.

Eine Pipeline wird formal nicht als Fachbegriff akzeptiert. Innerhalb eines Grafikprozessors gibt es verschiedene Pipelines, da zu einem bestimmten Zeitpunkt separate Funktionen ausgeführt werden. In der Vergangenheit wurde es als Pixelprozessor bezeichnet, der an eine dedizierte TMU angeschlossen ist. Eine Geforce 3 hatte vier Pixel-Pipelines, von denen jede zwei TMUs hatte. Der Rest der Pipeline kümmerte sich um Dinge wie Tiefen- und Mischvorgänge.

Die ATI Radeon 9700 war die erste, die diese Form durchbrach, indem sie eine Reihe von Vertex-Shader-Engines unabhängig von den Pixel-Shadern platzierte. Die in der Radeon 9700 verwendete R300-GPU hatte vier globale Vertex-Shader, teilte jedoch den Rest der Rendering-Pipeline in zwei Hälften (es handelte sich sozusagen um einen Dual-Core). Jede Hälfte, Quad genannt, hatte vier Pixel-Shader, vier TMUs und vier ROPs.

Einige Einheiten werden häufiger verwendet als andere. Um die Gesamtleistung des Prozessors zu steigern, wurde versucht, einen "Sweet Spot" in der Anzahl der Einheiten zu finden, die für eine optimale Effizienz erforderlich sind, ohne dass überschüssiges Silizium erforderlich ist. In dieser Architektur verlor die Namenspixel-Pipeline ihre Bedeutung, da Pixelprozessoren nicht mehr an einzelne TMUs angeschlossen waren.

Der Vertex-Shader war seit dem R300 lange Zeit entkoppelt, aber der Pixel-Shader war nicht so einfach durchzuführen, da für die Arbeit Farbdaten (z. B. Texturmuster) erforderlich waren und daher eng an eine TMU gekoppelt werden mussten.

Diese Kopplung bleibt bis heute bestehen, wo die Shader-Engine, die aus Einheiten besteht, die entweder Scheitelpunkt- oder Pixeldaten ausführen können, eng mit einer TMU gekoppelt ist, aber einen Crossbar-Dispatcher zwischen ihrem Ausgang und der Bank von ROPs hat.

Render Output Pipelines (ROPs)

Die Render-Ausgabe-Pipeline ist ein geerbter Begriff und wird häufiger als Render-Ausgabeeinheit bezeichnet . Seine Aufgabe besteht darin, die Abtastung von Pixeln zu steuern (jedes Pixel ist ein dimensionsloser Punkt), sodass das Antialiasing gesteuert wird , wenn mehr als eine Abtastung zu einem Pixel zusammengeführt wird. Alle gerenderten Daten müssen durch die ROP laufen , um in den Framebuffer geschrieben zu werden. Von dort können sie auf das Display übertragen werden.

In der ROP wird daher die Ausgabe der GPU zu einem Bitmap-Bild zusammengesetzt, das zur Anzeige bereit ist.

Verwendung in GPGPU

In der GPGPU können Texturabbildungen in 1,2- oder 3-Dimensionen verwendet werden, um beliebige Daten zu speichern. Durch Bereitstellen einer Interpolation bietet die Texturabbildungseinheit ein bequemes Mittel zum Annähern beliebiger Funktionen mit Datentabellen.

Siehe auch

Verweise

Externe Links