PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertex Shader ATI & c't Artikel


Benja
2003-10-23, 19:54:50
Hi

c't 22/03 - Seite 70 - Radeon 9800 XT

"Das neue Flagschiff verfügt wiesein Vorgänger 9800 pro über vier Geometrie-Einheiten (Vertex Shader), acht Pixel-Pipelines mit DX9 tauglichen Pixel-Shadern und ein Speicherinterface mit 256 Datenleitunge. ..."

Dazu hab ich n zwei Fragen :)

1) Stimmt das ?
2) Sind vier unabhängige Vertex Shader gemeint, die dann jeweils wieder in SIMD Manier vor sich hin eigene Progrämmchen laufen lassen ?

mapel110
2003-10-23, 20:07:38
zu1. die angaben stimmen
zu2. :ratlos:

aths
2003-10-23, 22:09:26
Original geschrieben von Benja
2) Sind vier unabhängige Vertex Shader gemeint, die dann jeweils wieder in SIMD Manier vor sich hin eigene Progrämmchen laufen lassen ? Natürlich SIMD. Macht auch Sinn.

Benja
2003-10-23, 22:13:15
aber die 4 einheiten sind unabhängig ?

damit kann ich dann in einem viertel der zeit dieselbe anzahl punkte berechnen im vgl zu einem einzelnen vertex-shader ...

oder wie werden die benutzt ... ?

Quasar
2003-10-23, 22:41:02
AFAIK sind die "unabhängigen" Vertexshader auch unter DX9 nur als "Vertexeinheit der GPU", als Verbund quasi, ansprechbar.

Aber besonders für längere Shader kann man so prima und für die Applikation transparent, Latenzen etc. verstecken.

aths
2003-10-24, 00:03:34
Original geschrieben von Quasar
Aber besonders für längere Shader kann man so prima und für die Applikation transparent, Latenzen etc. verstecken. Es werden afaik dann gleich 4 Vertices bearbeitet. Latenz-Zeiten werden durch die Pipe versteckt, nicht durch's SIMD. (Wenn Demi diesen Thread entdeckt, kann er bestimmt genauer werden.)

Xmas
2003-10-24, 00:31:10
VS2.0 (und der R3x0) kennt nur Static Flow Control. Alle Einheiten arbeiten denselben Befehl ab, alles andere wäre Ressourcenverschwendung.

Demirug
2003-10-24, 07:26:55
Original geschrieben von Quasar
AFAIK sind die "unabhängigen" Vertexshader auch unter DX9 nur als "Vertexeinheit der GPU", als Verbund quasi, ansprechbar.

Aber besonders für längere Shader kann man so prima und für die Applikation transparent, Latenzen etc. verstecken.

Ja der Programierer sieht immer einen Vertexshader und sagt diesem eben was er mit jedem Vertex machen soll. Wie die arbeit dann intern aufgeteilt wird ist Sache des Treibers/Chips.

Demirug
2003-10-24, 07:32:42
Original geschrieben von aths
Es werden afaik dann gleich 4 Vertices bearbeitet. Latenz-Zeiten werden durch die Pipe versteckt, nicht durch's SIMD. (Wenn Demi diesen Thread entdeckt, kann er bestimmt genauer werden.)

Im Vertexshader gibt es eigentlich keine Latenzen weil dieser nicht dynamisch auf externe Daten zugreifen muss. Mit VS 3.0 ändert sich das aber lassen wir das mal aussen vor. Was es geben kann sind Zugriffskonflikte wenn ein Befehl das Ergebniss des vorhergehenden braucht aber dieser noch nicht durch die Pipeline ist. Bei den Vertexshader lösst man das aber ganz einfach. Man pumpt einfach so viele Verticen in die Pipeline das jeder Pipelinestate an einem anderen Vertex arbeitet. NV25 hat zum Beispiel 3 Pipelinestages und jeweils 2 Einheiten nebeneinader. Daraus ergibt sich das an 6 Verticen gleichzeitig gerechnet wird.

Gast
2003-10-24, 09:21:13
Jetzt wird's interessant.

Können diese 6 Berechnungen in-flight völlig unabhängig voneinander sein, sprich, sechs Vertices mit sechs verschiedenen Befehlen?
Brauchen bestimmte Befehle mehr als einen Takt?
Ist SIMD möglich/erforderlich?

Wie sieht das bei anderen VS aus? Gibt's da auch so große Unterschiede zwischen den Herstellern wie bei PS?
q@w


BTW, wußtet ihr, daß der nV36 den kompletten Vertexshader des nV35 bekommen hat -> dreifache VS-Leistung ggü. nV31...

Aquaschaf
2003-10-24, 11:36:41
Sieht man ja am Gunmetal Benchmark recht deutlich.
Eventuell wären Karten auf Basis des NV36 für CAD und 3D-Anwendungen interessant, wo die Vertexleistung entscheidend ist.

Demirug
2003-10-24, 13:24:09
Original geschrieben von Gast
Jetzt wird's interessant.

Können diese 6 Berechnungen in-flight völlig unabhängig voneinander sein, sprich, sechs Vertices mit sechs verschiedenen Befehlen?
Brauchen bestimmte Befehle mehr als einen Takt?
Ist SIMD möglich/erforderlich?

Ich kann hier nur wiedergeben was mir gesagt wurde.

Die Anordnung der Recheneiheiten soll wie folgt sein


*** ***
*1*-*2*
*** ***
| |
*** ***
*3*-*4*
*** ***
| |
*** ***
*5*-*6*
*** ***


Dabei sind 2 nebeneinaderliegende Einheiten funktional identisch untereinader liegden unterscheiden sich. Jeder Vertex muss zur Ausführung eines Shaderbefehls alle 3 Stufen durchlaufen. Allerdings wird nicht beide jedem Befehl in jeder Stufe auch wirklich etwas getan. Nach dem durchlaufen der letzen Stufe verlässt der Vertex den Shader (Programmende) oder wird wieder an den Anfang zurückgeführt. Für alle 6 Verticen wird das gleiche Programm ausgeführt. Ob das alles aber wirklich so stimmt entzieht sich meiner Kenntniss und so richtig glaube ich inzwischen da auch nicht mehr daran.

Wie sieht das bei anderen VS aus? Gibt's da auch so große Unterschiede zwischen den Herstellern wie bei PS?
q@w

Keine Ahnung ich habe aber in letzer zeit einige Dokumente gesehen in dennen viel von "Multithreading" in Verbindung mit dem Vertexprocessing gesprochen wird. Allerdings reicht mein Verständniss dieser Dokumente noch nicht weit genug um sie mit möglicherweise vorhandenen Chips zu verknüpfen.