kk Nakai zeig dein wissen.
Okay...
Kannd du mir den unterschied zwischen 5D, 4D und 1D shadern erklären?
Eigentlich bezeichnet das nur die Breite der ALU bzw. der Recheneinheit.
Wie man das erreicht ist sehr unterschiedlich und hier spalten sich die Geister.
Ich geb dir mal ein Beispiel. Eine ALU der R5x0 hat 12 FLOPS, vom R600 aber nur 10 FLOPS.
Erstere ist große 4D-Shader letzterer sogar ein 5D-Shader.
Mit 5D, 4D, 1D oder was weiß ich, wird immer die Breite der ALU festgelegt und daher ist es auch nur ein dummer Wert ohne jeglichen Anhaltspunkten.
Damit will ich sagen, das eine Betrachtung von Recheneinheiten und der theoretischen Leistungswerten nicht so relevant sind.
Nochmal zum R5x0, er hat einen 4D-Shader, welche aber sehr groß ist.
Sie besteht aus einer Vec3 MADD+ADD-ALU und einer Skalaren MADD+ADD ALU. (Skalar kann immer mit 1D bestimmt werden und Vektor-ALUs fast immer mit ihrer Breite, also bei Vec3 also 3D.)
Daher hat der R5x0 4D-ALUs(3+1).
Der G7x hat auch 4D-Shader, aber hier sind sie anders aufgebaut und nicht von der TMU entkoppelt. Hier sind es 2 ALUs, eine Vec4 vor der TMU und ein dahinter. Man könnte jetzt meinen das sie eine 8D-ALU sein, ist sie aber nicht, da sie hintereinandergeschaltet sind. Man kann also sagen, dass es eine Vec4 MADD+MADD ist.
Nun zur GFLOP-Zählerei. Ein MUL und ADD machen je ein FLOP. Eine MADD-ALU macht 2 FLOPs, da sie aus einer MUL und ADD bestehen.
Der R5x0 hat einen Shader pro Pipe der 12 FLOPs leistet.
Vec3 MADD+ADD = 3 FLOPs (für MADD+ADD) x 3 (wegen Vec3) = 9 FLOPs.
Skalar MADD+ADD = 3 FLOPs (für MADD+ADD) x 1 (wegen Skalar) = 3 FLOPs
Gesamt: 12 FLOPs.
Macht 576 FLOPs pro Takt!
Der G7x hat 2 ALUs pro Pipe insgesamt also 16 FLOPs.
Vec4 MADD = 2 FLOPs (für MADD) x 4 (wegen Vec4) x 2 (hintereinandergeschaltet) = 16 FLOPs
Macht 384 FLOPs pro Takt!
G80 hat gut ausgelastete Einheiten. Es sollen marketingtechnisch 128 Shader sein, aber es sieht ganz anders aus.
Der g80 hat 8 TCPs in jedem TCP sind 2 Shaderblöcke enthalten. Jeder Shaderblock wird über MIMD angebunden. Jeder Shaderblock besteht aus einer gut auslastbaren Vec8-Einheit.
Was insgesamt 16 Vec8-Shaderblöcken macht.
Jeder Shader kann MADD+MUL leisten, also 3 FLOPs.
Es sind Vec8-Einheiten also pro Shaderblock 24 FLOPs.
Es sind 16 Shaderblöcke, also 384 FLOPs.
Dies schaffen die Shader theoretisch pro Takt.
Nun habe ich vorher behauptet das eine Vec8-ALU 8D ist. Beim G80 ist das nicht so, 8D-Berechungen kann er nicht auf einen Takt durchführen, sondern 8 8D-Berechungen in 8 Takten.
So ist die Darstellung von 128 1D-Shader zwar etwas falsch, aber immernoch anerkannt.
Was hat nun der R600. Sicher ist das das Ding 5D-ALUs hat.
Nun ja, doch unser Fudo war/ist so ungebildet das er eine andere Darstellung der ALUs nicht annehmen wollte, außer 5D. Da 5D nur ein grober Überbegriff ist, weiß er natürlich nicht.
5D könnte man durch Vec2+Vec2+Skalar erreichen oder gar durch Skalar+Skalar+Skalar+Skalar+Skalar.
Natürlich müssen diese Einheiten dementsprechend aufgebaut sein um dies zu erreichen. Beim g80 hat man ja nicht 128 komplett entkoppelte Einheiten.
Nun ich brech hier ab, das wird zu Offtopic.
mfg Nakai