PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dreiecksdurchsatz??


Gast
2006-06-09, 16:25:55
Hi Community,
hab mal eine Frage bezüglich dem Dreiecksdurchsatz, wie bei allen Füllraten erhält man diesen eigentlich indem man die Anzahl einer Komponente mit dem Coretakt multipliziert.
Bei den Vertexshadern ist das aber etwas anders, da muss man irgendwie nochmal mit 4 teilen, keine Ahnung warum?

Liegt das an der Scalar Alu die im Normalfall immer nur ein 1/4 der Bitzahl der Vec-Alu hat?
Beim R520 hat eine Vertexshader eine 128Bit VecAlu und eine 32Bit ScaAlu, könnte das mir jemand erklären?

Danke im Vorraus.

aths
2006-06-09, 16:40:43
Das liegt daran, dass eine Multiplikation Vec4 mit der 4x4-Transformationsmatrix mit vier Vec4-Multiplikationen realisiert wird.

Gast
2006-06-09, 16:45:33
aths[/POST]']Das liegt daran, dass eine Multiplikation Vec4 mit der 4x4-Transformationsmatrix mit vier Vec4-Multiplikationen realisiert wird.

Aha, also braucht man 4 Takte, und könnte man diesen Aufwand irgendwie senken, indem man die Vertexshader weiter verbessert.

Natürlich limitieren die Vertexshader nicht wirklich.

Neomi
2006-06-09, 16:51:53
Den Dreiecksdurchsatz (bzw. den maximal möglichen) kann man nicht aus der Zahl der Vertexshader berechnen. Vertexshader liefern nur transformierte Vertices als Output, mit Dreiecken hat das zu dem Zeitpunkt noch nichts zu tun. Im Triangle Setup werden dann je drei transformierte Vertices zu einem Dreieck zusammengefaßt. Der Input kann aber auch aus Caches kommen, da Vertices wiederverwertet werden können (dafür gibt es den Indexbuffer). Das Triangle Setup ist dadurch effektiv entkoppelt und unabhängig.

Eine 128 Bit breite Vector4-ALU ist eine Kombination aus vier 32 Bit breiten Scalar-ALUs.

Neomi
2006-06-09, 16:54:08
aths[/POST]']Das liegt daran, dass eine Multiplikation Vec4 mit der 4x4-Transformationsmatrix mit vier Vec4-Multiplikationen realisiert wird.

Multiplikationen alleine reichen nicht, es müssen schon vier Skalarprodukte (Dot4) sein.

Gast
2006-06-09, 17:06:18
Also die Vertexshaders des R300 bestehen aus einer 96Bit VecAlu und einer 28Bit ScalarAlu

Für was benötigt man überhaupt die Solo Scalar ALU?

Wie kann man den nun wirklich den maximalen Dreiecksdurchsatz berechnen?

aths
2006-06-09, 17:28:44
Neomi[/POST]']Multiplikationen alleine reichen nicht, es müssen schon vier Skalarprodukte (Dot4) sein.Ja, ich meine Skalarmultiplikationen.

aths
2006-06-09, 17:29:26
Gast[/POST]']Also die Vertexshaders des R300 bestehen aus einer 96Bit VecAlu und einer 28Bit ScalarAlu

Für was benötigt man überhaupt die Solo Scalar ALU?

Wie kann man den nun wirklich den maximalen Dreiecksdurchsatz berechnen?Die VS haben eine 128-Bit-Vec4-ALU und eine 32-Bit-Scalar-ALU.

Mit der Scalar-ALU kann man in 4 Takten auch ein DP4 berechnen, oder die Special Functions (SFUs) annähern. Inzwischen haben auch Radeon-Karten für SFUs auch dedizierte Units. Eingeführt wurde die skalare ALU für SFUs, aber später beibehalten – warum auch nicht?

Der "Dreiecksdurchsatz" ist insofern uninteressant, da es viele Flaschenhälse geben kann: CPU-Limit, Speicher- oder AGP/PCI-Bandbreite, Triangle Setup, Pixel-Rendering, interne Grafikkarten-Bandbreite, ...