RST LaborFertigAE_CE - Weblearn
Transcrição
RST LaborFertigAE_CE - Weblearn
Hochschule Bremen Rechnerstrukturen Labor WS 04/05 I7I Thema: Grafikkarten Datum 18.01.2005 Carsten Eckert(83912) Arne Ehrhardt (72497) RST-Labor Graphikkarten WS 04/05 Inhaltsverzeichnis 1 2 3 4 5 6 7 8 9 Allgemeine Einführung .........................................................................................................3 Historie ..................................................................................................................................4 2.1 Grafik Modie:................................................................................................................4 Architektur einer Grafikkarte................................................................................................6 3.1 Grafikspeicher ...............................................................................................................7 3.2 Speicherorganisation.....................................................................................................9 3.2.1 Text Modus ...........................................................................................................9 3.2.2 Grafik Modus ......................................................................................................10 3.2.3 3D Grafik .............................................................................................................12 3.3 CRT – Controller.........................................................................................................13 3.4 Video- DAC ................................................................................................................13 3.5 Grafik BIOS ................................................................................................................13 3.6 Architektur der GPU ...................................................................................................15 3.6.1 Die erste GPU (GeForce 256) .............................................................................15 3.6.2 Moderne Grafikkarten.........................................................................................17 3.6.3 Aufbau einer modernen GPU..............................................................................18 Grafikschnittstellen .............................................................................................................20 4.1 OpenGL.......................................................................................................................20 4.2 Direct3D......................................................................................................................20 AGP 8x und PCI Express....................................................................................................21 5.1 AGP -Accelerated Graphics Port ................................................................................21 5.2 PCI Express.................................................................................................................22 Moderne Bildeffekte ...........................................................................................................23 6.1 Antialiasing .................................................................................................................23 6.2 Anisotrope Filterung ...................................................................................................24 6.3 Shader ..........................................................................................................................24 6.4 Bump Mapping............................................................................................................25 Zusammenarbeit von CPU und GPU..................................................................................25 Praxis: Lastenverteilung zwischen CPU und GPU.............................................................26 Quellen................................................................................................................................27 Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -2– RST-Labor Graphikkarten WS 04/05 1 Allgemeine Einführung Die heutigen Grafikkarten sind nicht mehr an eine Auflösung gebunden. Allerdings wird der VGA- und SVGA- Standard durchgängig eingehalten. Die Größe der Auflösung, die Anzahl der Farben und die 3D-Leistung sind von der Größe des Bildspeichers und der Architektur des Grafikprozessors abhängig. Aufgrund des hohen Datenaufkommens zwischen Prozessor und Grafikkarte, werden Grafikkarten mit einem eigenen Prozessor ausgestattet, der speziell auf die Berechnung von grafischen Objekten zugeschnitten ist. In diesem Zusammenhang spricht man auch von Accelerator- Karten, so genannte Beschleunigerkarten, die den Prozessor mit parallel ablaufenden Rechenoperationen entlasten sollen. Aufgrund ihrer enormen Verbreitung und somit stark gefallenen Preisen werden heute durchgängig 3D-Grafikkarten eingesetzt. Während mit einer Accelerator Karte das Zeichnen von Kreisen und Rechtecken und das Verschieben und Kopieren von Bildschirmausschnitten möglich war, geht eine 3D-Grafikkarte einige Schritte weiter. Die räumliche Darstellung von Gegenständen mit Schatten und bewegten Szenen ist das Anwendungsgebiet einer 3D-Grafikkarte. Um die dabei aufkommenden Datenmengen zwischen Prozessor, Arbeitsspeicher und Grafikkarte bewältigen zu können, hat Intel einen Steckplatz nur für eine Grafikkarte auf dem Motherboard eingeführt. Es handelt sich dabei um den AGP (Accelerated Graphics Port). Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -3– RST-Labor Graphikkarten WS 04/05 2 Historie 2.1 Grafik Modi: Bezeichnung Auflösung/ASCII Auflösung/Grafik Einf. MDA – Monochrome Display Adapter 80 Zeichen auf 25 Zeilen keine 1981 80 Zeichen auf 25 Zeilen 320x200(4 Farben), 640x200(monochrom) 1981 wie CGA 640*350(16 Farben) 640*480(16 Farben), 320*200(256 Farben) 1985 800*600(16 Farben) 1989 1024*768(256 Farben), 640*480(16Bit) 1990 CGA - Color Graphics Adapter EGA – Enhanced Graphics Adapter VGA - Video Graphics Array SVGA – Super Video Graphics Array Textmodus(720*400) XGA - Extended Graphics Array 1987 MDA – Monochrome Display Adapter Die ersten richtigen Grafikkarten kamen als Monochrome-Karten in die Personal Computer. Diese Grafikkarten konnten lediglich Text in Schwarz/Weiß darstellen. Die maximale Auflösung betrug 720 x 350 Pixel und ein einzelnes Zeichen aus 9x14 Pixeln, so dass man mit einer Monochrome-Grafikkarte 80 Zeichen in jeder der 25 Zeilen darstellen konnte. Da man nur Zeichen darstellen konnte, waren Rechner mit einer MDA-Grafikkarte lediglich digitale Schreibmaschinen, mit denen man Daten verwalten konnte. CGA - Color Graphics Adapter CGA steht für Color Graphics Adapter und war die erste Grafikkarte, welche ein Farbbild auf den Monitor zeichnete. Dieses kostete natürlich Rechenleistung , so dass man bei einer Darstellung des Monitorbildes mit vier Farben nur eine Auflösung von 320x200 darstellen konnte. Im Schwarz/Modus konnte man dann die Auflösung wieder auf 640x400 einstellen. Maximal konnte man mit einer CGA -Grafikkarte 16 Farben darstellen, wobei hier die Auflösung gerade einmal 160x100 betrug! Zwar war diese Grafikkarte in der Lage, Farbe darzustellen, trotzdem war sie noch weit von der Leistung moderner Grafikkarten entfernt. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -4– RST-Labor Graphikkarten WS 04/05 EGA – Enhanced Graphics Adapter Die EGA - Grafikkarten waren, wie man aus dem Namen schließen kann, erweiterte CGA -Grafikkarten. Mit diesen Grafikkarten war es möglich, bei 16 Farben eine Auflösung von 320x200 oder 640x400 einzustellen, was ein deutlicher Fortschritt im Vergleich zum Vorgänger CGA war, der bei dieser Farbanzahl gerade mal 160x100 Pixel darstellen konnte. EGA Grafikkarten sind abwärtskompatibel zum CGA -Standard. Auch diese Grafikkarten habe nur wenig mit heutigen Grafikkarten gemeinsam. VGA - Video Graphics Array Die Standard-VGA-Grafikkarten unterstützten in der Regel eine Auflösung von 640 x 480 Pixel mit 16 Farben. War der Grafikspeicher üppig bemessen, so konnten auch mehr Farben (256) dargestellt werden. Die meisten VGA-Grafikkarten besaßen einen Grafikspeicher von 64 KB. Mit VGA waren erstmals einfache Animationen möglich. SVGA – Super Video Graphics Array SVGA ist eine Weiterentwicklung des VGA-Standards, mit dem eine Auflösung von 800 x 600 Pixel bei 256(Standard), 65536(HiColor) oder 16,7 Mio. (TrueColor) Farben möglich ist. [PC-ERFAHRUNG] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -5– RST-Labor Graphikkarten WS 04/05 3 Architektur einer Grafikkarte Blockdiagramm einer Grafikkarte [PC INTERN] Video RAM: Der Video RAM speichert die Bildinformationen. Er kann extern im Hautspeicher des Systems organisiert werden, oder direkt auf der Grafikkarte. CRT Controller (Cathode Ray Tube Controller): Der CRTC (Cathode Ray Tube Controller) ist für die Generierung der horizontalen und vertikalen Synchronsignale und für den Refresh des dynamischen Video- RAMs zuständig, weiterhin erzeugt er den Cursor und das Underline- Attribut. Character Generator / Character pattern: Der Zeichengenerator greift ebenfalls im Textmodus direkt auf den Video- RAM und zerlegt die Zeichen in einzelne Punkte. Hinzu bedient er sich eines ROM-Bausteines, in dem die Zeichenmuster aller ASCI-Zeichen gespeichert sind. Über das Schieberegister wird das Pixelmuster an den Signalgenerator weitergeleitet. Attribut Controller: Der Attribute Controller liest im Textmodus aus dem Video-RAM die Attributbytes und ermittelt anhand dieser Information die Farbe des Zeichens und leitet diese an den Signalgenerator weiter. (Grafikmodus wie Textmodus, jedoch andere Struktur des Video-RAMs) Signal Controller: Das Schiebregister gibt einfach die Bildpunkte in korrekter Reihenfolge an den Signalgenerator weiter. Dieser erzeugt aus dem Bitstrom des Schieberegisters, den Attributinfos und den Synchronisationssignalen vom CRTC die analogen Signale für den Monitor. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -6– RST-Labor Graphikkarten WS 04/05 3.1 Grafikspeicher Die Anforderungen an den Speicher sind bei Grafikkarten anders als beim Arbeitsspeicher (z.B. DRAM*) eines Computers. Um den Anforderungen zu entsprechen, wurden einige Speichertypen nur für den Grafikkarteneinsatz entwickelt. VRAM (Video- RAM): Video-RAM wird oft als allgemeine Bezeichnung für Videospeicher benutzt. Der fundamentale Unterschied zwischen VRAM und DRAM ist, dass VRAM parallel beschrieben und ausgelesen werden kann (dual-port), dadurch bieten sie mehr Bandbreite als DRAM. Die Daten werden in größeren Blöcken adressiert. So können hohe Auflösungen mit sehr großen Bildwiederholungsraten erreicht werden Zugriffszeit FPM – Zykluszeit EDO – Zykluszeit Taktfrequenz Spannung 60-70 ns 30-40 ns 20-30 ns 50-66 MHz 3.3-5 V Daten Zu Video RAM [2COOL] WRAM (Window- RAM): Das Window-RAM ist eine seltene Abart des VRAM und wird auf der Grafikkarte Millenium von Matrox eingesetzt. WRAM hat dieselbe Funktion wie VRAM, der Speicher hat aber ca. 25% - 50% me hr Bandbreite als VRAM und ist dabei in der Produktion (20%) billiger. 3DRAM: RAM-Entwicklung von Mitsubishi. 3DRAM's sind RAM-Bausteine mit integrierter Logik, die einige gebräuchliche OpelGL-3D-Operationen (z-Buffervergleich, Blendig von Texturen) direkt im Speicher ausführen. Auf dem Chip befindet sich eine spezielle ALU, ein Extra - Pixelspeicher sowie ein interner Bus, welcher 4 - DRAM - Chips miteinander verbindet. Durch die enorm hohe Bandbreite im Innern des Speichers (bis 100GB/s) sind enorm sc hnelle 3D-Berechnungen möglich. Dual Port Speicher Architektur [2COOL] [PCGUIDE] * DRAM = Dynamik Random Access Memory Carsten Eckert(83912) Arne Ehrhardt(72497) -7– Semester: I7I RST-Labor Graphikkarten WS 04/05 MDRAM (Multibank DRAM): Das Multibank DRAM ist von der Firma MoSys speziell für Grafikanwendungen entwickelt worden. Der Speicher wird in mehrere 32KB Bänke aufgeteilt, auf die unabhängig zugegriffen werden kann. Das bietet folgende Vorteile: • Verschränkung: Die einzelnen Bänke können für den Zugriff verschränkt werden, dadurch wird die Performance erhöht. • Flexible Speichergröße: Beim konventionellen Speicher ist die Speichergröße auf „ganze“ Megabytes beschränkt, diese Beschränkung gilt nicht für den MDRAM, hier kann der Speicher flexibel dimensioniert werden. (z.B. Eine Darstellung in 1024x768 Pixel mit 24 Bit Farbtiefe benötigt 2,25MB des Speichers für den Framebuffer) SGRAM (Synchronous Graphics RAM): Synchronous Graphics RAM ist eine für Grafikanwendungen optimierte SDRAMVariante. Im Gegensatz zu VRAM bzw. WRAM kann SGRAM nicht dual schreiben und lesen, diesen Nachteil kompensiert der Speicher aber mit einer hohen Taktfrequenz. SGRAM bietet ferner zusätzliche Block-, Mask- und Write- Schreibbefehle an. Taktfrequenz Zugriffszeit Spannung 100-166 MHz 6-10 ns 2,5-3,3 V Daten Zu SGRAM [2COOL] [PCGUIDE] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -8– RST-Labor Graphikkarten WS 04/05 3.2 Speicherorganisation 3.2.1 Text Modus Im Text Modus ist jede Bildposition durch 2 Bytes repräsentiert. Die Zeichen können direkt in den Videospeicher geschrieben, da die Organisation des Speichers der Organisation der Bildschirmdarstellung entspricht. Das erste Zeichen auf dem Bildschirm ist also auch das erste Zeichen im Videospeicher, an der offset Position 0000H. Das nächste Zeichen befindet sich dann an der offset Position 0002H usw. Das Attribut Byte definiert das Aussehen des Zeichens (siehe auch Attribute Controller). Standart RAM Struktur im Text Modus Hercules Graphics Card [PC INTERN] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I -9– RST-Labor Graphikkarten WS 04/05 3.2.2 Grafik Modus Im Grafik Modus repräsentiert jedes Bit im Video RAM ein Pixel des Bildschirmes. Die Organisation des Speichers wird durch folgende Grafik verdeutlicht. Die Zeilen werden in zwei verschiedene Blöcke des Speichers gespeichert, der erste Block beinhaltet die geraden, der Zweite die ungeraden Zeilen. Der Grund für diese Unterteilung liegt im Zeilensprungverfahren (Interlaced-Modus). Dadurch wird die Zeilenfrequenz und somit auch die Videobandbreite halbiert, die Bildfrequenz (Anzahl der Vertikalrückläufe) bleibt aber gleich. Organisation des Video RAM im Grafik Modus ((IBM CGA card Auflösung: 320 x 200) [PC INTERN] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 10 – RST-Labor Graphikkarten WS 04/05 Jede Zeile benötigt bei einer Auflösung von 320 x 200 Pixel 80 Byte. Es werden also pro Byte 4 Pixel codiert. Die Bits 7 und 8 repräsentieren hier die Farbinformationen des 1. Pixels, die Bits 1 und 2 enthalten somit die Informationen des 4. Pixels. Eine Zeile des Video RAM (IBM CGA card Auflösung: 320 x 200) [PC INTERN] Bei einer Auflösung von 640x200 Pixel ist der Speiche auch wie oben beschrieben organisiert. Durch die verdoppelte Auflösung steht jedoch nur noch ein Bit je Pixel zur Verfügung, wodurch die darzustellenden Farben auf zwei limitiert werden. Eine Zeile des Video RAM (IBM CGA card Auflösung: 640 x 200) [PC INTERN] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 11 – RST-Labor Graphikkarten WS 04/05 3.2.3 3D Grafik Front-Buffer: Der Front-Buffer enthält genau ein Bild und zwar das gerade sichtbare Bild, das vom CRTC für die Erzeug ung des Monitorsignals ausgelesen wird. Er ist ungefähr drei MByte groß. Pro Pixel sind – entsprechend der 16, 24 oder 32 Bit Farbtiefe – zwei, drei oder vier Byte reserviert. Back-Buffer: Der Back-Buffer ist identisch mit dem Front-Buffer. Im Back-Buffer wird die nächste Szene aufgebaut. Ist diese fertig, wechseln beide Speicherbereiche ihre Funktion: Der Back-Buffer wird zum Front-Buffer und umgekehrt (Buffer-Flipping). Der Umschaltvorgang wird vom Graphikkartentreiber versteckt, indem er das BufferFlipping mit dem Bildwechsel des Monitors synchronisiert (VSync on). Damit der Graphikchip mit höchstmöglicher Geschwindigkeit arbeitet, wird bei Leistungsmessungen(Benchmarks) diese Synchronisation abgeschaltet(VSync off). Nun kann der Monitor nicht mehr die Grafikkarte ausbremsen und jeder kann zu Hause seine Grafikleistung messen. Z-Buffer: Im Z-Buffer werden Tiefeninformationen (Z-Koordinaten) oder die Entfernung zum Benutzer als Ganzzahlwerte (32Bit) abgelegt. Bevor ein Bildpunkt tatsächlich auf dem Bildschirm dargestellt wird, wird dessen Tiefenwert mit dem an der Stelle befindlichen Wert des Z-Buffers verglichen. Ist nun der Wert kleiner als der im Z-Buffer, so ist der neue Pixel näher am Betrachter: seine Farbe wird angezeigt, seine Z-Koordinate in den Z -Buffer geschrieben. Dies ist eine sehr einfache Möglichkeit, Tiefeninformationen zu vergleichen und damit nur die wirklich sichtbaren Dinge anzuzeigen. Textur-Cache: Der Texture-Cache enthält lokal gespeicherte Texturen, 3D- Daten (Vertex-Cache) und anderes (Mauszeiger). Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 12 – RST-Labor Graphikkarten WS 04/05 3.3 CRT – Controller Der wichtigste Bestandteil einer Grafikkarte ist der CRT- Controller (Cathode-RayTube-Controller; zu deutsch: Kathodenstrahlröhrensteuerungskontroller). Der CRTC erzeugt und synchronisiert die Steuersignale für den Elektronenstrahl des Monitors. Bei älteren Grafikkarten hat er sogar die gesamte Bildschirmsteuerung übernommen. Er liest die Daten aus dem Bildschirmspeicher und bestimmt anhand der Information die Anzahl der zu zeichnenden Zeilen und Spalten. Um einen schnellen Bildschirmaufbau zu gewährleisten wird der Zugriff auf den Video-RAM während des Auslesens für andere gesperrt. Des Weiteren hat er Einfluss auf die Steuerung der anderen Komponenten der Grafikkarte und überwacht deren Funktionen. 3.4 Video- DAC Zur Farb-Generierung verfügt die VGA- Karte über einen Video-DAC (DAC steht für `Digital/Analog Converter´), der pro Grundfarbe (also Rot, Grün und Blau) ein 6 Bit breites Teilregister eines 18-Bit-Registers zur Verfügung stellt. Aus diesen drei Teilregistern setzen sich die Mischfarben zusammen; daraus ergibt sich die maximale Anzahl von 64 × 64 × 64 = 262 144 darstellbaren Farben. Von dieser Farbenvielfalt sind jedoch nur maximal 256 Farben gleichzeitig darstellbar, da sich das Video-RAM auf eine maximale Tiefe von 8 Bit pro Bildpunkt einstellen lässt und der Video-DAC nur eine Color-Look-Up-Table (CLUT) von 256 Farbindizes verwaltet. [c’t 04/1991] 3.5 Grafik BIOS Das PC-BIOS steuert viele verschiedene Funktionen der Bilddarstellung. Diese Funktionen sind gruppiert zu einer Interruptfunktion 10H (video interrupt functions). Der Tabelle auf der nächsten Seite sind die Video BIOS Funktionen zu entnehmen. Im Text Modus wird bei jeder Grafikkarte ein blinkender Cursor angezeigt, er zeigt die aktuelle Eingabe- oder Ausgabeposition. Das BIOS kontrolliert die Position und das Erscheinungsbild des Cursors. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 13 – RST-Labor Graphikkarten WS 04/05 BIOS Funktionen [PC INTERN] Die Funktion 02H ist für die Cursor Position zuständig, Sie arbeitet hier mit den beiden Registern 0AH „Cursor Start“ und 0BH „Cursor End“ des CRTC zusammen. Textcursor und die dazugehörigen Register des CRTC [PC INTERN] Bei Einführung hochauflösender Grafikkarten mit 1 MByte Bildspeicher standen DOSProgrammierer vor einem äußerst lästigen Problem. Bei den interessanten Modi mit 800 × 600 oder mehr Bildpunkten in mindestens 256 Farben kochte jeder Hersteller sein eigenes Süppchen - jede Grafikkarte wollte auf eine andere Weise angesprochen werden. So liefen Programme entweder nur auf einer bestimmten Grafikhardware oder mussten mit einer ganzen Palette unterschiedlicher Grafiktreiber ausgestattet sein. Um dem abzuhelfen, definierte die VESA-Gruppe (Video Electronics Standard Association) eine Software-Schnittstelle (VGA Standard BIOS Extensions, kurz VBE), über die DOS-Anwendungen die Super-VGA-Auflösungen auf einheitliche Weise ansprechen können. Mit den VBE-Funktionen lassen sich in DOS-Programmen auch die Hi- und TrueColor-Modi problemlos nutzen. [c’t 6/1995] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 14 – RST-Labor Graphikkarten WS 04/05 3.6 Architektur der GPU 3.6.1 Die erste GPU (GeForce 256) Von Nvidia wurde 1999 der Begriff GPU „Graphics Processing Unit“ eingeführt. Dieser Name wurde gewählt, um ihm die entsprechende Ehre im Vergleich zur CPU zu erteilen. Heutige Graphikchips sind in ihrer Komplexität mit modernen Prozessoren vergleichbar. Damals war der Graphikchip mit ähnlich vielen Transistoren (23 Mio.) ausgestattet wie der Pentium oder der Athlon. Ein großer Teil des Chips ist für die Transform & Lighting Engine (T&L) reserviert. Diese neue Einheit war auch der Grund für die Bezeichnung GPU. Nun rechnet die Graphikkarte aus den Dreiecken, Texturen und Umgebungen die Pixel und schreibt diese in den Frame Buffer, woraus dann das Bild erzeugt wird. Dies wird allerdings nur von Echtzeit 3D Spielen verwendet, da zum Erzeugen eines Film der Prozessor die gesamte Umrechnung übernimmt. Die CPU kann im Gegensatz zur GPU, die auf ihre Hardware beschränkt ist, alle Effekte erzeugen. NVidia stellte die neue Verteilung der Rechenlast zwischen CPU und GPU wie folgt vor. Leider haben wir keine genaueren Informatione n über die GeForce 256 zu finden können. CPU Graphics Processor Current Generation 1 Frame (1/60 sec) AI, Physics, Game Play Transform & Lighting Rendering 1 Frame (1/60 sec) CPU Graphics Processor CPU and GPU 256 Übersicht [NVidia] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 15 – RST-Labor Graphikkarten WS 04/05 Nun wird die komplette Umrechnung des 3D Modells, über Schatten bis zum Pixelbild von der Grafikkarte übernommen. Heute ist diese grobe Einteilung in viele Untereinheiten eingeteilt. Von nun an wurden die Graphikkarten immer weiter entwickelt, um möglichst realistische Umgebungen zu schaffen. Da die Graphikkarte für diese Umrechnungen vor allem Floating Point Operationen durchführen muss, haben heutige Grafikkarten im diesem Bereich eine höhere Leistung als Desktop CPUs. Nicht zuletzt durch die Film- und Spielindustrie sind die Preise für moderne Grafikprozessoren relativ gering. Floating Point Operationen verschiedener Prozessoren [INTERAKTIVES RAYTRAYCING] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 16 – RST-Labor Graphikkarten WS 04/05 3.6.2 Moderne Grafikkarten Moderne Graphikkarten sind über ein Bussystem mit dem Hauptspeicher und der CPU verbunden. Dies kann der APG oder der PCI Expressbus sein. Ansonsten hat sich das Grundprinzip nicht wirklich verändert. Statt neue Methoden zu entwickeln, werden die Taktraten erhöht bzw. die Busse verbreitert. Um die komplexen Rechnungen für realistische 3D Spiele leisten zu können, wird die Abarbeitung in einer Pipeline organisiert. Es gibt diverse verschiedene Grafikpipeline Darstellungen. So werden bei den Softwareschnittstellen OpenGL und DirectX verschiedene Pipeline-Abarbeitungen durchgeführt. Hier werden dann Unterschiede in der Abarbeitung, die nicht immer nur durch die Hardware der Grafikkarte geschieht, sichtbar. Nun wird die schematische Abarbeitung in einer OpenGL Pipeline aufgezeigt. Ein Objekt wird durch Vertices und deren Anordnung (Dreieck) modelliert. Die erste Stufe besteht aus der Vertex Einheit, die die Punkte der 3D Welt in Bildschirmkoordinaten und Tiefenwerte(Entferning vom Benutzer) umrechnet. Weiterhin werden auch die Texturdaten mit auf das Bildschirmsystem umgerechnet. Die Primitive Assembly Stufe sorgt für die Zusammenführung der Punkte zu der vorher definierten Figur (Dreieck). Dies ist für die nächste Stufe wichtig, da bei der Rasterization nun das genaue Pixelraster erzeugt wird. So können die Pixelgruppen dann zu so genannte n Fragmenten zusammengefügt werden. Die Farbe, die Tiefenwerte und die Texturkoordinate n für das Fragment werden dabei durch die Interpolation der Punk te der Dreiecke während der Prefragmentierung vorgenommen. Als letztes wird dann der Tiefentest (Depth Buffering) durchgeführt. Hierbei wird geprüft, ob das Objekt OpenGL Pipeline [INTERAKTIVES RAYTRAYCING] nicht durch ein anderes verdeckt und dadurch ausgeblendet werden muss. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 17 – RST-Labor Graphikkarten WS 04/05 3.6.3 Aufbau einer modernen GPU Ein moderner Graphikchip kann durch die folgenden Komponenten schematisch dargestellt werden. Aufbau eines Graphikchips [ct-08/2000] Eine moderne Grafikkarte besteht aus der Pixel-Pipeline (rot) und zwei Textureinheiten (grün) , die mit dem Speicher verbunden sind . Der Speicher ist in den Front -Puffer für das momentan dargestellte Bild und den Back-Puffer, um das nächste Bild abzulegen, aufgeteilt. So muss die GPU während des Bildaufbaus nicht auf den Monitor warten. Weiterhin wird ein großer Bereich des Speichers für Texturen und andere Daten verwendet. Der Z-Buffer enthält die Tiefeninformationen der aktuellen Objekte. Weitere Informationen finden sich im Kapitel 3.2.2 3D Grafik. Das größte Problem ist es, die einzelnen Einheiten so zu schalten, dass pro Taktzyklus ein Pixel berechnet werden kann. Textureinheit Es werden die Texturdaten aus dem Speicher über den Textur -Cache in die Textur Filter geladen. Mit Hilfe der errechneten Tiefeninformationen aus dem Rasterizer kann nun in den beiden Texturfiltern parallel die Farbinformation der Texturen berechnet werden. Dies ist nötig, da die Texturen nicht direkt übernommen werden dürfen. Sonst würde eine Textur, die nah am Betrachter liegt, schachbrettartig aussehen, wohingegen eine weit entfernte Textur durch Überlappung der Elemente ein Farbchaos erzeugt. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 18 – RST-Labor Graphikkarten WS 04/05 Um diese Effekte zu vermeiden, werden die Texturelemente(Texel) durch Interpolation zusammengefasst. Eine bilineare Filterung fasst so vier Texel zusammen. Noch bessere Ergebnisse können mit einer anisotropischen Filterung erzeugt werden. Hier werden dann noch mehr Textel zusammengefasst. Wenn nun die einzelnen Texturen errechnet worden sind, kann der Textur -Combiner mit Hilfe von arithmetischen und logischen Verknüpfungen eine Endtextur erzeugen. Das folgende Bild illustriert diesen Vorgang. Kombinierte Texturen[ct-08/2000] Pixel-Pipeline Die Pixelpipeline sorgt für die Berechnungen der Figuren. Die über den AGP-Bus angelieferten Punkte und Figurinformationen werden in der Transform & Lighting Engine in die richtige Position verschoben und skaliert. Zusätzlich erzeugt sie die ersten Beleuchtungen, indem sie die Helligkeit der Eckpunkte berechnet. Die Triangle Setup Engine erzeugt dann die geometrischen Figuren, die dann vom Rasterizor weiter verarbeitet werden. Die Transform & Lighting Engine wird heute durch einen programmierbaren Vertex Shader ersetzt. Dieser kann noch zusätzliche Effekte wie Wellen oder Falten erzeugen. Der Rasterizor bestimmt mit Hilfe des Z-Interpolators und des Z-Buffers die Sichtbarkeit eines Pixels. Um die Texturen richtig berechnen zu können, werden hier die Tiefeninformationen errechnet und an die Textureinheit weitergegeben. Die Adresse des zu speichernden Pixels im Back-Buffer wird hier ebenfalls bestimmt. Nachdem der Textur-Combiner die Texturen berechnet hat, werden dann in einer letzten Stufe die zusätzlichen Komplettbildeffekten hinzugefügt. Mit Hilfe des Alpha Blendings werden Transparenzen erzeugt. Dazu ist eine vierte Farbinformation nötig (RGBA). Anschließend kann das Color-Blending Farbinformation vermischen, dies sorgt für eine realistische Darstellung von durchsichtigen Oberflächen. Hier können dann auch Nebeleffekte hinzugefügt werden. Dazu werden die Pixel ja nach Betrachtungsabstand immer weiter in weiß oder grau umgeblendet. Das ColorDithering sorgt dafür, dass die Grafikkarte auch Bilder von minderer Qualität darstellen kann. Heute wird die Einheit, die diese Effekte erzeugt, durch einen Programmierbaren Pixel Shader ersetzt. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 19 – RST-Labor Graphikkarten WS 04/05 4 Grafikschnittstellen 4.1 OpenGL Open GL (Open Graphics Library) ist eine Hardware- und Betriebssystem unabhängige Grafikschnittstelle mit 3D Unterstützung. Diese Schnittstelle ist der Standard für professionelle 3D-Anwendungen und wird von mehreren Firmen stetig weiter entwickelt. OpenGL ist "keine" 3D-API im eigentlichen Sinn, da OpenGL auch 2D in Film-sequenzen umrechnen kann. 4.2 Direct3D Direct3D ist ein Bestandteil von DirectX, Microsofts Sammlung von Multimedia-APIs. Unter Windows ist sie die am weitesten verbreitete Schnittstelle für 3D-Spiele. Weiterhin läuft sie ausschließlich unter Windows und dessen Derivaten. Direct3D besitzt den Ruf, komplizierter zu programmieren zu sein, da hier der Standard keine offene Architektur bietet. Der Vorteil bei Direkt3D im Gegensatz zu OpenGL ist, dass hier Treiber für günstigere Hardware besser verfügbar sind. [OPENGL-VS-DIECT3D] Die Treiberstruktur von Direct3D und OpenGL unter Windows [c’t 19/1999] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 20 – RST-Labor Graphikkarten WS 04/05 5 AGP 8x und PCI Express 5.1 AGP -Accelerated Graphics Port Der Accelerated Graphics Port, welcher auf jeder moderneren PC-Hauptplatine zu finden ist, stellt einen speziellen Steckplatz exklusiv für Grafikkarten dar. Gegenüber dem PCI-Bus bietet der AGP-Bus einige Vor- und Nachteile für Grafikkarten: + Höhere Geschwindigkeit durch höheren Takt und verdichteter Datenübertragung + Schneller Zugriff auf Hauptspeicher möglich - Schlechte physikalische Umsetzung (übereinanderliegende Kontaktreihen sorgen regelmäßig für Wackelkontakte. Manchmal funktionieren Grafikkarten nach einem Transport erst nach Neueinsetzen in den Steckplatz wieder.) Normalbetrieb. AGP 1x ; 66MHz x 32bit Bus = 266 MByte/s (theoretisches Maximum) Aufsteigende und abfa llende Taktflanke des Transportsignals werden für die Datenübertragung genutzt. AGP 2x ; 2x 66MHz x 32bit Bus = 533 MByte/s (theoretisches Maximum) Weiteres Multiplexing des Kanals. AGP 4x; 4x 66MHz x 32bit Bus = 1066 MByte/s (theoretisches Maximum) AGP 8x; 8x 66MHz x 32bit Bus = 2132 MB yte/s (theoretisches Maximum) Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 21 – RST-Labor Graphikkarten WS 04/05 5.2 PCI Express Da der PCI-Express in den laufenden Veranstaltungen schon reichlich besprochen und vorgestellt wurde, wird hier nur noch einmal eine Gegenüberstellung zu dem herkömmlichen AGP-Bus aufgezeigt. Weiterhin sind die heutigen Grafikkarten, bis auf wenige A usnahmen, durch den PCI-Express Bus nicht messbar schneller geworden. Interface AGP 8x PCI Express x16 Max. Busbreite 32 Bit 32 serielle Leitungspaare Max. Taktrate 266 MHz (66 MHz) 2,5 GHz Max. Bandbreite uni-/bidirektional (GByte/s) 1,99 / 1,99 3,73 / 7,46 Bandbreite pro Pin ~18 Mbit/s ~100 Mbit/s Max. Tiefe der Request- Pipeline 32 256 Datenlänge des Request 8 - 64 Byte 4 - 4096 Byte Unabhängige Daten-Streams bis zu 3: PCI, LP (linear programmiert), ISOC (isochron) bis zu 8 (VC0-7) Art der isochronen Übertragung partiell voll Shared Memory ja (GART) ja (OS/Treiber) Physikalische Schnittstelle Punkt-zu-Punkt-Verbindung differenzielle Verbindung Taktgeber externer synchroner Takt interner Takt Max. Verlustleistung 25 W (50/110 W bei AGP Pro) 25 W, 75 W, Pro-Variante in Vorbereitung Anzahl der Pins 132 164 Einführung (Jahr) 2002 2004 Kurzübersicht AGP 8x und PCI Express 16x [TECCHANNEL ] Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 22 – RST-Labor Graphikkarten WS 04/05 6 Moderne Bildeffekte Um die heutigen 3D Anforderungen zu erfüllen, ist eine große Rechenleistung der Graphikkarten nötig. Moderne Bildeffekte sorgen für realistische dreidimensionale Darstellungen. Diese Effekte werden in bestimmten Stufen der Abarbeitung erzeugt. Einige werden sogar durch zusätzliche Hardware unterstützt. Hier werden nun nur die bekanntesten Effekte beschrieben. Es gibt ständig neue bzw. verbesserte Effekte. 6.1 Antialiasing Grundprinzip: Antialialising(links ohne, rechts mit) Unter Anitialiasing oder Treppenglättung versteht man das Beseitigen des Treppeneffekts, die bei der Rasterung einer Form (Linie, Kreis, Schrift, usw.) entstehen. Funktionsweise: Beim Antialiasing durch Grafikkarten wird nicht nur einmal in der Mitte eines Pixel geprüft wird, welchen Farbwert dieses hat, sondern mehrmals und an verschiedenen Stellen ("mehrere Samples"). Antialiasing Methoden: Supersampling Antialiasing(SSAA): Supersampling ist eine Technik, bei der man das Bild in einer höheren Auflösung berechnet und dann herunterrechnet, womit Farbmittelwerte entstehen. Z.B.: 4-faches AA. Das Bild wird in der Auflösung 800*600 angezeigt, aber in der 4-fachen Auflösung von 1600*1200 berechnet und dann auf 800*600 heruntergerechnet. Dadurch werden also indirekt 4 Samples pro Pixel berechnet. Dieses nennt man auch 2*2 Supersampling. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 23 – RST-Labor Graphikkarten WS 04/05 Multisampling (SSAA): Bei dieser Technik werden nur die Farbwerte an den Kanten mehrmals überprüft und nicht die Texturen. Das kostet weniger Leistung, muss aber per Hardware unterstützt werden, da diese Effekte bei Spielanwendungen nicht während der Bildberechnung auf die CPU ausgelagert werden können. Fragment Anti-Aliasing (FAA): Auch diese Technik glättet nur die Polygonkanten. Es ist aber möglich, dass nicht die Kanten an den Polygone nschnittkanten geglättet werden, sondern das später entstandene Fragment. Diese Technik kostet sehr wenig Leistung, muss aber auch per Hardware unterstützt werden. OrderedGrid und RotatedGrid Anti-Aliasing (OGAA und RGAA): Bei OrderedGrid AA sind die Samples innerhalb des Pixels in geordneter Reihenfolge angeordnet, so wie der Anordnung von mehreren ganzen Pixeln auf einem Bild (z.B. wie bei dem angeführten Beispiel von Supersampling). Bei RotatedGrid sind die Samplepositionen gedreht (um eine bestimmte Gradzahl (z.B.: 27,5° beim VSA-100). Dies wirkt dem normalen Pixelmuster entgegen und erhöht so die interne Auflösung des Pixels, so dass ein qualitativ deutlich hochwertigeres Anti-Aliasing entsteht. Beide Methoden sind bei allen drei derzeitigen Tec hniken möglich. Bei Supersampling wird dies mit einer Verzerrung des Pixelmusters herbeigeführt. 6.2 Anisotrope Filterung Ist eigentlich kein Filterung sondern ein Mapping. Es handelt sich hier um ein Textur Mapping zur Vermeidung von Verzerrungen bei schräg nach hinten oder nach vorne verlaufende Texturen. 6.3 Shader Shader sind Computerprogramme, die einzig und allein für die Berechnung von 3DGrafik zuständig sind. Da wären einerseits die "Vertex Shader". Diese Programme steuern die Positionsverschiebungen eines Dreieckseckpunkts im Raum (Transformation) und führen erste Beleuchtungsberechnungen ("Lighting") durch. Nach den Vertex Shadern übernehmen "Pixel Shader"-Programme die Kontrolle. Sie sind für die individuelle Farbwert-Berechnung innerhalb der Dreiecksfläche zuständig. Texturen kommen zwar auch künftig zum Einsatz. Welche Werte der Textur für ein bestimmtes Pixel zum Einsatz kommen sollen, bestimmt aber ebenfalls ein "Shader". Bei Grafikkarten der DirectX-9-Generation können diese Programme bereits über 100 Berechnungsanweisungen beinhalten. Neben einfachen mathematischen Berechnungen (Mal, Plus, Modulo) gehören mittlerweile auch komplexe trigonometrische Anweisungen (Sinus, Kosinus) zum Repertoire. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 24 – RST-Labor Graphikkarten WS 04/05 6.4 Bump Mapping Darstellung von Oberflächen mit sichtbaren Vertiefungen. Erzeugt eine Art ReliefEffekt und verleiht 2D-Texturen einen 3D-Touch. Es we rden hier zwei Texturen übereinander gelegt und dann anschließend je nach Blickwinkel zueinander verschoben. 7 Zusammenarbeit von CPU und GPU Es ist wichtig, dass Grafikkarten mit der nötigen Hardware ausgestattet sind, damit bestimmte Effekte des Renderns nicht vom Treiber(Software) emuliert werden muss, da dieses zu Lasten der Verarbeitungsgeschwindigkeit und damit der Darstellungsqualität geht. 3D-Grafikkarten überlassen die Festlegung, wo die einzelnen Bildelemente zum Liegen kommen sollen (also die Szenerie), der CPU des PCs. Dieses wird als Dreieck-Setup bezeichnet, weil die Objekte in eine Vielzahl von einzelnen Dreiecken (Polygonen) zerlegt werden, die nachfolgend vom Rasterizor mit den entsprechenden Farbwerten aufzufüllen sind. Durch eine Triangle Setup Engine der GPU kann diese bis zu 4 Mio. Polygone verarbeiten. Dieses entlastet die CPU von dieser Aufgabe. Die mathematische Aufgabenbewältigung der CPU kann durch entsprechende Befehls satzerweiterungen wie MMX (Multi Media Extentions) verbessert werden. MMX beschleunigt allerdings nur Ganzzahlberechnungen, während die Befehls satzerweiterung 3DNOW! der Firma AMD auch Gleitkommaoperationen beschleunigen kann, wie in der Folge auch Intels SSE, SSE2 und SSE3. Da die CPU heute einen großen Rechenaufwand für moderne künstliche Intelli genz und das physikalische Verhalten verbraucht, muss eine Graphikkarte den größten Teil der Bildberechnung eben selber übernehmen. Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 25 – RST-Labor Graphikkarten WS 04/05 8 Praxis: Lastenverteilung zwischen CPU und GPU Um die Leistungsfähigkeit von einer aktuellen mittelklasse Grafikkarte und einer Desktop CPU zu zeigen, wurden zwei verschiedene Ansätze verfolgt. Zum einen wurde mit Hilfe eines Grafikkartenbenchmarks (3DMark03) gezeigt, wie eine CPU und die Grafikkarte eine 3D Sequenz rendert. Es wurde der Benchmark „Wings of Fury“ ausgewählt, da hier die gleiche Szene einmal vom Prozessor und zum anderen nur vom Prozessor erzeugt wird. Hier war auffällig, dass die CPU selbst beim Grafikbenchmark auf 100% Auslastung lief. Dies ist durch die Art des Benchmarks zu erklären. Es wird versucht die maximale Grafikleistung aus dem Rechner herauszuholen. Hierfür wird auch die CPU voll eingespannt. Da bei den beiden Benchmarks die gleiche Sequenz gerendert wird, konnten Unterschiede doch deutlich gemacht werden. So erzeugte der Prozessor die Szene mit durchschnittlichen 30 Bildern pro Sekunde, wohingegen das Gesamtsystem mit Unterstützung der Grafikkarte nie unter 100 Bildern pro Sekunde fiel. Weiterhin ist deutlich ein besseres Bild erzeugt worden. Treppenförmige Kanten waren während des CPU Tests noch deutlich zu sehen, während die Grafikkarte hier durch die spezielle Architektur eine wesentlich höhere Qualität abliefert. Der Zweite Teil bestand im rendern eines 3D Bildes auf der Grafikkarte und der CPU. Hierfür wurde mehrere Objekte mit dem Programm Maya 6 modelliert. Da dieses Programm die Möglichkeit biete t verschiedene Hardware für das rendern zu verwenden, konnte hier vor allem die Berechnungsdauer veranschaulicht werden. So brauchte die Grafikkarte für das Bild nicht mal eine Sekunde wohingegen die CPU mindestens die doppelte Zeit benötigte. Bei dieser Veranschaulichung ist darauf zu achten, dass die Objekte nicht zu komplexe Texturen oder Oberflächen Effekte aufweisen, da sonst die Ergebnisse in ihrer Qualität stark voneinander abweichen und somit nicht Vergleichbar sind. Dies ist darauf zurückzuführen, dass bei dem zu Filmzwecken entwickelte Programm Maya 6 die Texturen und diversen Effekte auf dem aktuellsten Stand sind . Dies kann eine Grafikkarte der Mittelkasse nicht schaffen, da hier die Schwerpunkte in der Echtzeitdarstellung von 3D Spielen ist. Leider war es uns nicht möglich die Auslastung von CPU und der Grafikkarte klar getrennt zu veranschaulichen. Heute ist es kaum noch möglich die Effekte der Grafikkarte anschaulich auf der CPU zu emulieren. Verwendete Software: Maya 6: http://www.alias.com/eng/community/downloads/bonus_tools/index.jhtml 3DMark03: http://www.futuremark.com/download/?3dmark03.shtml Verwendetes System: Prozessor: Athlon XP 2600+ 166MHz FSB Speicher: 1024MByte 200MHz FSB Mainboard: Asus A7N8X-E Deluxe (nForce2 Chipsatz) Grafikbus: AGP 8x Graphikkarte: GeForce FX 6500 Carsten Eckert(83912) Arne Ehrhardt(72497) - 26 – Semester: I7I RST-Labor Graphikkarten WS 04/05 9 Quellen [Toms Hardware] http://www.tomshardware.de/graphic/19991012/geforce256-01.html [IntorductionToGPU.ppt] cglab.snu.ac.kr/lectures/04-2/ graphics/lecturenote/IntroductionToGPU.ppt [c’t 04/1991] „Schöne bunte Welt“ von Peer Meier [c’t 6/1995] „Pixel- Fenster für DOS“ von Mark Stehr [c’t 19/1999] „Durchblick in 3D“ von Stefan Schulze [c’t 08/2000] “Polygonfabriken” von Manfred Bertuch [TECCHANNEL] http://www.tecchannel.de/hardware/1182/1.html [INTERAKTIVES RAYTRAYCING] www.uni-weimar.de/~lessig/thesis_lessig.pdf [NVIDIA] http://developer.nvidia.com [K-HARDWARE] http://www.k-hardware.de/ [PC-ERFAHRUNG] http://www.pc-erfahrung.de/Index.html?GrafikkarteAufbauGeschichte.html [OPENGL-VS-DIREKT3D] www.mweissmann.de/downloads/Direct3D_vs._OpenGL.pdf [PCGUIDE] http://www.pcguide.com/ref/video/tech.htm [PC-INTERN] PC Intern (5. ed.),Michael Tischer, 1995, Data Becker Verlag, ISBN: 1-557-55282-7 [PC-HARDWAREBUCH] PC Hardwarebuch (6. ed.), Hans-Peter Mesmer, 2000, Addison-Wesley Verlag, ISBN: 3-8273-1461-5 [2COOL] http://www.2cool4u.ch/basics/speicherbausteine/speicherbausteine.htm#_Toc42082306 Carsten Eckert(83912) Arne Ehrhardt(72497) Semester: I7I - 27 –