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 –

Documentos relacionados