|
Community Links |
Interessengemeinschaften |
Benutzerliste |
Foren durchsuchen |
Stichwortsuche |
Erweiterte Suche |
Uns unterstützen |
Shoppen bei Amazon |
Spende per Patreon |
Spende per PayPal |
Spende per Steady |
alle Möglichkeiten |
Gehe zu... |
![]() |
|
Themen-Optionen
![]() |
Ansicht
![]() |
![]() |
#1 (im Thread / einzeln) |
3DCenter Crew & 3D-Guru
|
Eine andere Betrachtungsweise des winkelabhängien AF bei ATI.
Eine Frage die mich schon länge beschäftigt ist warum die AF Implemntierung von ATI Winkelabhängig ist?
Die spontane Anwort dafür ist natürlich "Performancegründen". Aber irgendwie hat mich diese Antwort nie richtig zufrieden gestellt. Denn wenn es nur darum ginge hätte man ja wie nvidia auch eben mehr als 2 Modies anbieten können. Wenn man so etwas nicht tut muss es also IMHO eine Limitierung in der Hardware sein. Das wirft dann natürlich die nächste Frage auf. Warum limitiert man sich selbst die Hardware? Hier gibt es IMO nur zwei Antworten - Unfähigkeit die wir ATI hier nicht unterstellen wollen - Einsparen von Transitoren. Da ich zur zweiten Alternative tendiere habe ich mich gefragt welche Einsparungen zu einem Winkelabhängigen AF führen können. Dabei kamm ich zu folgendem Ergbeniss. Zur Wahl des richtigen AF-Levels muss von einem Vektor die Länge ermittelt werden. Die übliche Vorgehensweise dazu ist es die Deltas zwischen dem Start und Endpunkt zu ermitteln und dann durch eine Wurzel aus a²+b² die Länge zu berechnen. Nun weiss jeder der sich etwas mit der Materie auseinader gesetzt hat das eine Wurzelberechnung nicht gerade zu den einfachen Dingen gehört. Läst sich die Rechnung also zu lasten der Genauigkeit vereinfachen? Ja das geht. Benutzt man nicht Wurzel aus a²+b² sondern immer den Maximalwert von a und b so entsteht als Graph der Funktion eine Kurve welche bei 0, 90, 180 und 270 Grad die richtige länge ermittelt und bei 45, 135, 225 und 315 Grad die grösste Abweichung hat. Das sollte bekannt vorkommen. Aber wie besetigt man nun die 45 Grad Schwäche dieses Verfahrens? Auch dafür habe ich dann letzen Endes eine Lösung gefunden. Man benutzt Max (a, b, (a+b)*0,707). Damit bekommt man auch die 45, 135, 225 und 315 Grad Winkel annähernd richtig. Nun hat man 8 Winkel für die man relative genau die Länge bestimmen kann. Dazwischen aber nach wie vor eine Abweichung. Wer sich nun Fragt wie das (a+b)*0,707 zustanden gekommen ist: Bei 45 Grad ist die Summe aus a+b um das 1.41 fache grösser als die Wurzel aus a²+b². Um also auf die richtige länge zu kommen müsste man durch 1,41 teilen. Eine Divsion durch 1,41 ist aber identisch mit einer Multiplikation mit 0,707 und da Multiplikationen einerfacher zu realisieren sind nimmt man eben diese. Als Konsequenz könnte sich auch noch ergeben das ATI dann auch in den Texturen nur entlang dieser 3 Linien (0, 45, 90 Grad) sampelt was den AF-Rechner nocheinmal vereinfachen würde. Das alles ist natürlich nur meinen Meinung und ich kann auch nichts davon wirklich beweisen (ausser ein paar der Mathematischen gegeben heiten). EDIT: Klammern hinzugefügt Geändert von Demirug (2003-06-12 um 22:20:29 Uhr) |
![]() |
![]() ![]() |
![]() |
#2 (im Thread / einzeln) |
3DCenter Crew & 3D-Guru
Registriert: 2001-07-27
Beiträge: 43.720
|
Re: Eine andere Betrachtungsweise des winkelabhängien AF bei ATI.
Ich hoffe, diesen Ansatz in einem möglichen zukünftigem Artikel benutzen zu dürfen
![]() Meine Idee war bisher immer, dass man "längs" und "quer" (0°, 90°) einfacher aus der Textur samplen könnte. . |
![]() |
![]() ![]() |
![]() |
#3 (im Thread / einzeln) |
3DCenter Crew & 3D-Guru
Threadstarter |
Re: Re: Eine andere Betrachtungsweise des winkelabhängien AF bei ATI.
Original geschrieben von aths Das mit dem einfacher samplen sehe ich nicht unbedingt weil wenn man ja kein AF benutzt muss man ja auch ständig von einer anderen stelle samplen muss. Was aber einfacher sein sollte ist das Berechnen der Samplelinie wenn diese nun genau auf 0° oder 90° (beim R300 kommt dann ja noch 45° hinzu) liegt. Die Cachehits könnte auch besser werden. Ob das aber wirklich der Fall ist konnte ich bisher nicht ohne restzweifel nachweisen. |
![]() |
![]() ![]() |
![]() |
#4 (im Thread / einzeln) |
Admiral Member
Registriert: 2002-08-14
Beiträge: 2.744
|
vielleicht liegt es daran, dass ATI RipMaps anstatt MipMaps nutzt (hab ich irgendwo in nem paper (von ATI?)gelesen, vorher wuste ich nicht, dass es sowat gibt,also hoffe ich das stimmt
![]() dabei gibt es nicht nur texturgrößen von sizex|sizey, sizex/2|sizey/2, sizex/4|sizey/4... sondern auch sizex/2|sizey,sizex/4|sizey... und äquivalent für sizey. damit hat man quasi die texturen optimiert vorliegen für jeweils 45% unterschied. MfG micki ps. damit ihr net denk ik denk mir dat nur aus http://www.cs.tut.fi/~tgraf/2003/luennot/T296-311.pdf http://www.ugrad.cs.ubc.ca/~cs535/notes/535b03.pdf Geändert von micki (2003-06-13 um 09:56:16 Uhr) |
![]() |
![]() ![]() |
![]() |
#5 (im Thread / einzeln) |
Ultimate Member
Registriert: 2001-03-29
Beiträge: 61.756
|
Original geschrieben von micki ![]() Die Radeons nutzen eigentlich kein RIP Mapping, das war ein Irrtum von aths, da Ripmapping diverse Macken hat, die eine Radeon eigentlich nicht hat... |
![]() ![]() |
![]() ![]() |
![]() |
#8 (im Thread / einzeln) |
3DCenter Crew & 3D-Guru
Threadstarter |
Original geschrieben von seahawk Gehen wir nun aber davon aus das die NV3X Rheie und die R3XX Rheie in Abhängigkeit der TMU Anzahl die gleiche AF-Berechnungsleistung (Berechnen nicht samplen) bringen bringt das vereinfache Verfahren (meine Theorie) keine zusätzliche Performance. Das vereinfachte Verfahren sollte aber mit wesentlich weniger Transitoren als das "korrekte" Verfahren auskommen und jeder gesparte Transitor kann Gold wert sein. PS: Beim Max (a,b) Verfahren beträgt der maximale Fehler (bei 45°) 29,3%. Bei Max (a,b,(a+b)*0,707) sind es 7,6% (bei 67,5°). |
![]() |
![]() ![]() |
![]() |
#9 (im Thread / einzeln) |
CPU-Guru
Registriert: 2002-09-16
Beiträge: 6.301
|
Demirug,
interessante Überlegung, aber ob ATI auf diese Weise Transistoren/Waferfläche sparen möchte? Kann ich mir nicht vorstellen. Da wäre sicher an anderen Stellen mehr möglich und was IMHO viel wichtiger ist: dieses Verfahren senkt ja letzten Endes die Qualität zu Gunsten der Leistung. Wenn man aber wirklich mal den Punkt höhere Leistung aussen vor lässt verbleibt ja nur eine geminderte Qualität, die sich ja auch von Testredakteuren nachweisen lässt. Warum sollte ATI also für minimal weniger Transistoren und eine vielleicht 2 nm² geringere Waferfläche Qualität opfern, oder anders gedacht: warum sollte ATI für so wenig Ersparnis der Konkurrenz einen Vorteil zuschieben? Der Rechenweg macht sicher Sinn, aber die Begründung dafür (um Waferfläche zu sparen) sicher nicht. Edit: Ausserdem ist noch fraglich, ob solche Logiksparmassnahmen wirklich zu einem kleineren Die führen, wenn es sich um solche Kleinigkeiten handelt. Es könnte auch sein, dass einfach nur der Verschnitt von nicht genutzter Fläche auf dem Die grösser wird. Die Einheiten sind ja nicht alle eine Die-Kantenlänge breit und nur unterschiedlich lang, sondern sitzen verschachtelt auf dem Die. Wenn man irgendwo Logik einsparen kann entsteht also zuerst einmal nur eins: ein leerer Zwischenraum. Dann muss man diesen mit geeigneter Umstrukturierung erst wieder wegoptimieren. Ob sich dieser Aufwand für solche Kleinigkeiten lohnt, wo doch sicher an anderen Stellen mit dem gleichen Aufwand mehr gespart werden kann? :grübel: Edit #2: Ist natürlich Quark, wenn man die Optimierung schon in die ersten Entwürfe als bewusste Designentscheidung mit einfliessen lässt. Die Frage ob ATI aber für so wenig Gewinn gleich einen so deutlichen Qualitätsnachteil gegenüber der Konkurrenz in Kauf nimmt bleibt aber bestehen (wir wollen die Leistungsfrage ja mal aussen vor lassen). Rechner-Konfig | Server-Konfig | Lenovo Thinkpad X61 Tablet << mit X6 Tablet UltraBase Testbericht ViewSonic VP201s 20"-TFT Monitor Geändert von Endorphine (2003-06-14 um 16:49:16 Uhr) |
![]() ![]() |
![]() ![]() |
![]() |
#10 (im Thread / einzeln) |
3DCenter Crew & 3D-Guru
Threadstarter |
Endorphine, ein guter Chipcompiler presst den Verschnitt aus dem DIE schon heraus da mache ich mir keine Sorgen. Zudem wäre der von dir befürchtet Fall (Einheit wird kleiner) ja gar nicht eingetreten da der R300 AF-Rechner ja komplexer (Keine 45° Grad schwäche und tri-AF möglich) ist als der des R200.
Wenn der Transitorcount nicht die Begründung ist was dann? ATI hätte sonst ja auch einen AF-Rechner ohne Winkelabhängkeit einbauen können. Und wenn man bedenke das ein sqrt zu den aufwendigsten Operationen in einer FPU gehört ergibt sich da durchaus potenial. Bei einer GPU hat man ja nicht den Luxus wie bei einer CPU aufwendinge operationen einfach mehr Takte benötigen zu lassen. Bei 2xbi AF muss man spätetens nach 2 Takten die wirklich benötigte AF Stufe habe. |
![]() |
![]() ![]() |
![]() |
#11 (im Thread / einzeln) |
CPU-Guru
Registriert: 2002-09-16
Beiträge: 6.301
|
Original geschrieben von Demirug Ich geh schon mal in Deckung vor der Flamewelle der AA-Fetischismusfraktion ![]() |
![]() ![]() |
![]() ![]() |
![]() |
#12 (im Thread / einzeln) |
3D-Guru
Registriert: 2001-08-08
Beiträge: 10.068
|
Original geschrieben von Endorphine |
![]() |
![]() ![]() |
![]() |
#13 (im Thread / einzeln) |
3DCenter Crew & 3D-Guru
Threadstarter |
Der AF-Rechner des R300 und der Vorgängermodele macht sicherlich genau das was geplannt war.
Zur Komplexität einer sqrt Einheit habe ich hier zwei schöne Bilder. Eine parallel 8 Bit Integer sqrt Einheit: ![]() Die Sm Einheiten (subtractor-multiplexor) in diesem Diagram sind im Detail folgendermassen aufgebaut: ![]() EDIT: Wer VHDL lesen kann findet hier das Programm dazu: http://www.csee.umbc.edu/help/VHDL/samples/sqrt8m.vhdl Geändert von Demirug (2003-06-14 um 18:23:53 Uhr) |
![]() |
![]() ![]() |
![]() |
#14 (im Thread / einzeln) |
Avantgarde Member
Registriert: 2002-03-29
Beiträge: 5.459
|
Original geschrieben von Endorphine Original geschrieben von Endorphine
"Violence in the streets, aimed at the wealthy. That’s what I worry about."
-- Anonymer Milliardär aus Kalifornien (Wall Street Journal: The Wealth Blog: Why the Rich fear Violence in the Streets) Geändert von Ikon (2003-06-14 um 22:28:23 Uhr) |
![]() |
![]() ![]() |
![]() |
Lesezeichen |
Ansicht |
![]() |
![]() |
![]() |
|
|