PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : G80-Architektur - wie flexibel im Vergleich?


Gast_leo
2008-05-13, 17:46:47
Mir kam letztens so die Frage, wie flexibel eigentlich der G80 im Vergleich zur GeForce 6 bzw 7 wirklich ist. Laut NVIDIA hat der Chip 128 unabhängige Skalar-ALUs. In Wirklichkeit sind es bekanntlich acht 16-fach SIMD Einheiten (oder 8 mal Vec16). Man hat also quasi eine 8-fach MIMD-Architektur die jeweils in 16-Fach SIMD unterteilt ist.

Die GF6/7-Reihe hatte 4-fach SIMD (Vec4, zumindest im PS) für jeweils vier Pixel. Könnte man das ganze dann bei 32 Pixelshadern als 8-Fach MIMD unterteilt in 4-fach SIMD (Vec4, 4 Pixel) die jewils nochmal in 4-Fach SIMD unterteilt sind beschreiben?

Nach meinem Verständnis wird das ganze beim G80 jetzt so verwendet, dass für jeweils 16 Pixel eine Komponente berechnet wird. Aus Sicht eines einzelnen Pixels also ein Skalar. Jetzt stellt sich mir als Laie unweigerlich die Frage wie sinnvoll denn sowas ist? Braucht man den so oft die gleiche Instruktion auf eine Komponente von 16 verschiedenen Pixeln? Der Ansatz von G7x erscheint mir da (als Laie) irgendwie logischer, für jeden Pixel mit einer Vec4-Einheit alle Komponenten zu berechnen.

Um aber auf das eigentliche Thema zurückzukommen: Was hindert einen daran die 4-fach SIMD Einheiten eines G7x auch einfach jeweils nur eine Komponente von vier verschiedenen Pixeln berechnen zu lassen? Dann hätte man doch quasi das gleiche Design wie beim G80 nur eben anstelle von Vec16 mit Vec4. Von daher müsste der G7x ja irgendwie sogar flexibler sein, als der G80. Alles sehr verwirrend ;).

Danke schonmal für informative Antworten!

Coda
2008-05-13, 17:50:26
G7x verwendet für alle Pipelines die gleichen Instruktionen, die Granularität ist noch viel schlechter. Und ja, es ist wirklich so dass wenn ein Pixel einen anderen Branch nimmt dass dann für alle anderen Pixel in diesem Block ein NOP in der Pipeline ist.

Dadurch haben GPUs aber auch einen so hohen Durchsatz, weil viel Kontrollogik gespart wird.

Gast_leo
2008-05-18, 09:43:26
G7x verwendet für alle Pipelines die gleichen Instruktionen, die Granularität ist noch viel schlechter.


Für alle Pipelines die gleiche Instruktion? Bei GF6/7 mit 32 PS quasi ein 8-fach SIMD unterteilt in ein 4-fach SIMD? Irgendwie kann mir das nicht richtig vorstellen. Das hieße ja dann, wenn ich jetzt beispielsweise irgendeinen Vektor mit der Zahl 2 (skalar) multiplizieren wollte, könnten alle anderen Einheiten auch nur eben diese Instruktion ausführen (SIMD), und ebenfalls nur einen Vektor mit 2 multiplizieren? Oder bin ich jetzt auf dem ganz falschen Weg? Kann mir bei Leibe nicht vorstellen, dass sowas effizient ist.

Schon beim G80 wundert mich das, dass sich sowas mit einem 16-fach SIMD lohnt. Wan hatt man schon 16 mal die gleichen Instruktionen? Anscheinend wohl öfters als ich denke ...

Aquaschaf
2008-05-18, 14:48:49
Wann hatt man schon 16 mal die gleichen Instruktionen?

Man hat ja nicht wild von fragment zu fragment unterschiedliche Programme die ablaufen. Da gibt es viel räumliche Lokalität.

deekey777
2008-05-18, 15:03:34
...

Schon beim G80 wundert mich das, dass sich sowas mit einem 16-fach SIMD lohnt. Wann hat man schon 16 mal die gleichen Instruktionen? Anscheinend wohl öfters als ich denke ...
Beim G80 ist jedes SIMD eine Vec16-ALU. Die Pixel-Threads bestehen aus 32 Pixeln, somit 32mal die gleiche Instruktion.
Natürlich wäre eine Granularität von einem Quad am besten, aber das wäre zuviel des Guten (irgendwo im R600-Spekuthread wurde das angesprochen).
Die Threads des R600 (und des Xenos) sind 64 Pixel/Vertices groß, die Pixelthreads des R580 waren 48 Pixel groß, des R520 16.