PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Minimal benötigter Grafik-RAM-Takt


Wildfoot
2016-08-11, 20:54:06
Hallo Leute

In einer kleinen Diskussionsrunde wurde mir gesagt, dass dieses Thema durchaus auch für andere spannend sein könnte und somit was fürs Forum wäre.
Ich selbst bin zwar weit über 90% auf ATi/AMD unterwegs, es würde mich aber auch für das grüne Lager interessieren. ;)

Also die Frage kommt beim OC der GraKa auf. Dass der GPU-Clock direkt die Performance beeinflusst ist wohl jedem klar.
Etwas anders ist es da aber beim RAM. Hier ist ja wichtig, dass dieser in jeder Situation immer mind. so schnell ist, wie die GPU Daten liefern kann. Schneller ist auch kein Problem, bringt zwar nichts, da die GPU nicht scheller "kann", schadet aber auch nicht. Schlecht allerdings ist, wenn der RAM langsamer läuft als die GPU "kann", weil dann muss die GPU auf den RAM warten und man verliert Performance.

So, wie aber bestimmt man nun die minimal benötigte RAM-Frequenz?

Es ist ja so, dass man die Eckdaten der GPU (Anzahl Unified Stream Proc., ROP's, TMU's, Pixel-Fillrate, Core-Clock, Speicherinterface, etc...) immer kennt. Damit müsste es doch möglich sein, genau zu berechnen, welchen minimalen Speichertakt man braucht, damit die GPU nie ausgebremst wird. Das müsste sogar als Funktion vom GPU Core-Clock darstellbar sein. Weil erhöt man den GPU-Clock, wird zwangsläufig auch der minimal benötigte RAM-Clock höher sein müssen.

Klar kann man diese Sache in Experimenten ermitteln gehen, das ist aber langwierig und dennoch ungenau. Daher wäre mir der mathematische Zusammenhang viel lieber. Dann kann man das jeweils ausrechnen und weiss, wo die Grenze liegt. ;)

Vielen Dank schon mals für die Info.

Gruss Wildfoot

rudl
2016-08-11, 23:22:46
das wird nicht so leicht sein.

einerseits gibt technologieen die es möglich machen die benötigte speicherbandbreite zu reduzieren. Andererseits ist das von Anwendung zu Anwendung unterschiedlich.
Nvidia kann da momentan besser umgehen. 480 vs 1060ti...

Hier ist ja wichtig, dass dieser in jeder Situation immer mind. so schnell ist, wie die GPU Daten liefern kann. nein auch wieder nicht.

Es geht da uch um die minfps. Z.B. die alte 9600gt hatte verhältnismäßig bandbreite ende nie... Und stand in avg fps gut da. Aber bei Spielen die in manchen szenen deutlich mehr rechenleistungbrauchen bricht die karte ein.

Wildfoot
2016-08-12, 00:21:58
FPS sind ja auch nichts anderes als das Resultat davon, wieviel Load die GPU abarbeiten kann. Kann sie viel Load abarbeiten (hohe MIPS), sollten auch die FPS hoch sein. Immer natürlich verglichen mit der gleichen Menge Load.

gibt technologieen die es möglich machen die benötigte speicherbandbreite zu reduzieren.
Du meinst HW-Datenkompression? Auch hier hängt es aber wieder an der GPU.
Bildlich gesprochen ist der RAM ja nur der Behälter der Daten. Wieviel Daten nun aber wie schnell in/aus dem Behälter getan werden, bestimmt die Pumpe, also die GPU.

Gruss Wildfoot

Thunder99
2016-08-12, 11:13:15
Interessant ist es auf jeden Fall. Aber du hast in der Formel eine Unbekannte "X" Größe, welches den Kontent beschreibt wie viel Bandbreite optimal ist. Witcher 3 ist z.B. GPU lastig und weniger Bandbreitenlastig.

Das es hier ein mathematischen Zusammenhang gibt glaube ich dennoch. Die Ingenieure müssen es ja auch wissen wie viel Bandbreite X zu GPU Geschwindigkeit Y sinnvoll ist.

Ergo Differentialgleichung aka f(x) = ... oder?

Wildfoot
2016-08-12, 18:15:30
Deine unbekannte Grösse "X" würde ich so setzen, dass für die Berechnung die strengsten Bedingungen an den RAM gestellt werden. Damit sollte dann DIE Frequenz rauskommen, bei welcher auch für die "schlimmste" Last der Speicher immernoch schnell genug eingestellt ist.

Ob Differentialgleichung oder nicht kann ich so nicht sagen, dazu muss man eben die Situation (das System) genau kennen. Es ist aber sehr wahrscheinlich, dass dies eine ist. Ich hätte sogar noch gesagt:

f(Core-Clock)=....?

Nach wie vor ist für das OC das spannende ja auch die Abhängigkeit vom Core-Clock. :-)

Gruss Wildfoot

Gipsel
2016-08-12, 18:38:46
Das Ansinnen ist recht unrealistisch. Im absoluten "worst case" sind die Bandbreitenanforderungen sehr viel höher, als sie das im Mittel in normalen Anwendungen/Spielen sind (wo es sich je nach Fall stark unterscheiden kann, wie ja von rudl schon erwähnt). Man gewinnt ab einem gewissen Punkt (der Übergang ist natürlich fließend) bei weiteren Bandbreitensteigerungen im Normalfall nur noch absolut minimal. Eine Optimierung auf extrem seltene Spezialfälle ist nicht sinnvoll.

Aber wir können ja mal ein grobe Überschlagsrechnung am Beispiel einer AMD-Grafikkarte machen. Jede CU kann über die TMUs auf (bis zu) 64 Byte pro Takt zugreifen. Dazu kommen noch die Speicherzugriffe über die Skalareinheit (>=16 Byte pro Takt) für jede CU. Weiterhin kann jeder ROP bis zu 24 Byte pro Takt erfordern. Nehmen wir mal einen Fiji (64CUs und 64 ROPs) und fangen an zu rechnen.
64 * (64 +16) + 64 * 24 = 6656 Byte (6,5kB) pro Takt erforderliche Bandbreite, so daß das nie, aber auch wirklich nie bremsen kann. Die Latenzen vernachlässigen wir mal, genauso wie möglicher Verschnitt wegen der Cachelines (das alleine ist ein potentieller Faktor 4), ansonsten müßte man noch erheblich Reserven einplanen.

Fiji läuft mit 1,05 GHz, das ergibt also als Maximum knapp 7 TB/s benötigter Bandbreite.

=> Macht man nicht, weil lohnt sich nicht.

kevsti
2016-08-12, 18:51:28
Damit sollte dann DIE Frequenz rauskommen, bei welcher auch für die "schlimmste" Last der Speicher immernoch schnell genug eingestellt ist. Ok, in dem Fall sollte die GPU mit 1MHz takten :freak:
Ich bin fest der Meinung, dass man es nicht ausrechnen kann - da die nötige Bandbreite eben nicht direkt abhängig von der Leistungsfähigkeit der GPU ist. Mal ein Beispiel: du kannst mit so einer GPU sicherlich eine sehr schwere Aufgabe lösen, das Ergebnis ist hierbei nur wenige MB groß, braucht aber verhältnismäßig lange Zeit. In dem Fall ist die RAM Geschwindigkeit fast egal. Du kannst mit einer GPU aber auch eine sehr einfache Aufgabe lösen, die allerdings einen enorme Datenmenge produziert, so das fast jede Bandbreit zu gering wäre.

Wie willst du fest machen, was die GPU so berechnet? Man könnte vielleicht irgend ein Mittel annehmen, aber das wäre keine richtige Berechnung und könnte je nach Spiel in der Realität völlig daneben liegen.

Ganz davon ab, kommt es eben auch auf die Kompression an, hier ist die nächste Baustelle wo du annehmen müsstest, wie gut die Daten zu komprimieren sind - entweder gar nicht oder eben sehr stark.

Vermutlich gibts noch viele weitere Faktoren die angenommen werden müssen, an die ich gerade nicht mal denken...

Ist man fertig mit den ganzen Annahmen, gehts weiter mit der Berechnung des nötigen Taktes des RAMs... aber spätestens da fällt einen auf, dass der Takt beim RAM nicht alles ist, sondern auch die Latenzen sehr wichtig sind. Sieht man ja auch aktuell bei der 1080 die ab einem bestimmten Punkt eher langsamer als schneller mit jedem MHz mehr @ RAM wird. Wie setzt man aber die Latenzen fest? Man braucht also nicht nur DEN optimalen Takt, sondern auch noch DIE optimalen Taktraten für eine gewissen Bereich aus verschiedenen Latenzen.

Du suchst einfach eine Formel mit zu vielen variablen, als dass man sinnvoll was ausrechnen könnte. Vermutlich wird auch nVidia und AMD nur abschätzen wie viel Bandbreite ihre neue GPU braucht und zusätzlich einige Experimente fahren um letztendlich das Optimum aus Preis/Leistung/Politik zu finden.

Loeschzwerg
2016-08-12, 18:59:12
Ich oute mich mal als Teilnehmer dieser "Diskussionsrunde" und hatte genau von dir (Gipsel) eine Antwort dazu erwartet :D Also schon mal ein THX dafür! So ein grundlegendes Thema hat hier einfach gefehlt.

Fiji läuft mit 1,05 GHz, das ergibt also als Maximum knapp 7 TB/s benötigter Bandbreite.

Um wie viel % drücken moderne Kompressionsverfahren diesen theoretischen Worst-Case Bedarf dann?

Der_Korken
2016-08-12, 19:45:46
Um wie viel % drücken moderne Kompressionsverfahren diesen theoretischen Worst-Case Bedarf dann?

Ich vermute mal, dass Kompression im theoretischen Worst-Case gar nichts bringt, weil man ja theoretisch Daten haben kann, die sich mit dem verwendeten Verfahren einfach nicht komprimieren lassen.

Loeschzwerg
2016-08-12, 20:04:40
Da hast du auch wieder recht. Aber wenn wir von Daten ausgehen die sich durchschnittlich gut komprimieren lassen? Man liest zwar z.B. von bis zu 40% durch Delta Color Compression (Tonga), aber es werden ja schon länger Kompressionsverfahren eingesetzt. (ohne vs Kompression)

Ich meine, wie kommen wir jetzt von diesen theoretischen 7 TB/s auf einen gemittelten realen Bedarf? Fiji hat ja "nur" 512GB/s.

Wildfoot
2016-08-12, 20:41:38
@Gipsel

Vielen Dank für dieses Beispiel. Genau sowas habe ich gesucht, allerdings habe ich nicht damit gerechnet, dass die Werte dann so hoch sein werden. Auch werde ich mir das Beispiel noch genauer ansehen müssen, um zu verstehen, was genau du da nun gerechnet hast. ;)

Ich denke schon, dass man mathematisch exakt genau ausrechnen kann, was diese Taktfrequenz sein würde. Immerhin, wie ich schon sagte, kennt man ja die Eckdaten der GPU. Nur, dass man dann im Real-Life soweit von diesen Werten weg ist, hätte ich nicht gedacht. Selbstverständlich hast du recht, dass 7TB/s nicht sinnvoll sind; aber geil wären sie. :D

@kevsti
Auch dein Beispiel ist durch die GPU begrenzt. Wenn es keine Limite beim RAM gibt und die GPU auch diese "voll easy" Aufgabe mit viel Daten erstellt, dann ist eben das Speicherinterface der GPU die Limite. Aber die GPU (der ASIC) bestimmt, was maximal wie schnell gehen kann. Solange man diese als fix gegeben annimmt, was bei einer realen GraKa ja der Fall ist.

Gruss Wildfoot

kevsti
2016-08-13, 10:43:42
Ja natürlich ein absoluter worst case kann man ausrechnen - nur ist der halt so verdammt weit von der Realität weg, dass die Zahl einfach nichts sagt.
Was bringt es dir zu sagen, dass der RAM-Takt (und wie ignorieren immer-noch die Latenzen) um den Faktor 10-100 höher sein müsste, als er typischerweise ist um in jeden Fall nicht zu bremsen? Das ist technisch kaum machbar und nicht bezahlbar. Und bringt eben auch keinen Nutzen. Wichtig ist es doch eigentlich nur zu wissen, wo eine Steigerung der Leistungsfähigkeit des RAMs (um mal irgendwie die Latenzen mit auszudrücken) in der Realität nichts mehr sinnvolles bringt und das geht imho eben nicht über ein Formel, sondern besser über stumpfes experimentieren und Schätzen.
Dann ist aber die nächste Frage was sinnvoll ist. Ist sinnvoll dort, wo 10% mehr "Leistung" (Takt/Latenz) weniger als 1% mehr FPS bringt? Ist sinnvoll dort, wo selbst durch 100% mehr "Leistung" wenigstens noch 0,01% mehr FPS bringen?
Es wird auch in der Realität sehr kurze "Worst Case" Szenarien geben, die durchaus von einer sehr hohen Leistung des RAMs profitieren - nur sind das zu wenige und so kurz, dass sie nicht einmal mehr messbar sind... Sinnvoll?


Ist so ähnlich wie die Frage, ob man errechnen kann wie lang ein Auto für die Strecke von 10km braucht. Man kann die Eckdaten wie Leistung, Beschleunigung, Vmax, etc... leicht benennen. Und dennoch gibt es Momente wo das Auto im optimalen Fall auf einer kerzengeraden Strecke ohne jeglichen Hindernis natürlich in sehr kurzer Zeit die Strecke schafft. Dann gibt es aber auch Strecken die durch eine Stadt führt, die durch den Berufsverkehr komplett dicht ist.

Die Realität ist meist irgendwas zwischen den beiden - nur eben wo? Wenn man ein Mittel nimmt, gibt es genug reale Szenarien die weit von dem Mittel abweichen (Autobahn, normaler Stau) und es somit eher unnütz machen.

Das soll jetzt kein wirkliches Beispiel sein, da man beim Auto nicht irgendwelchen nötigen RAM-Takt oder so berechnen kann und will. Nur zum versinnbildlichen wie variabel die Leistungsfähigkeit des gesamten Systems (Auto) ist, je nach Szenario. Und was man alles annehmen müsste (Verkehrsdichte, Kurven, Ampeln, etc..), weil man es eben nicht einfach als Konstante in eine Formel packen kann.

Wildfoot
2016-08-13, 19:51:18
Hmm...

Nachdem die aktuellen Werte vom theoretischen Maximum ja soweit weg sind, kann man eigentlich getrost sagen, dass eine RAM-Takt Erhöhung immer was bringt, solange der RAM nicht instabil wird.

Das ist auf eine Art und Weise auch schon eine gute Aussage, wenn auch nicht gerade wissenschaftlich.
Und hey, wer weiss, mit HBM kann das vielleicht ja doch noch kommen. Auf einem ASIC ist es einfacher, viele Leitungen zu haben, als auf einem PCB. ;)

Gruss Wildfoot

-/\-CruNcher-/\-
2016-08-13, 20:02:25
Ich vermute mal, dass Kompression im theoretischen Worst-Case gar nichts bringt, weil man ja theoretisch Daten haben kann, die sich mit dem verwendeten Verfahren einfach nicht komprimieren lassen.

Bingo ;)

Siehe vor allem Nvidias Research Daten die zeigen ja auf in welcher Engine noch eingespart werden konnte und wo bessonders viel oder eher weniger, aber das absolute worstcase wie du dir vorstellst kann es nicht geben es sei den die Kompression fällt total aus aus irgend einem Grund ;)

Hier ist der Vulkan Talk von Coda interessant er hat scheinbar diesen DCE ausfall beobachtet bei einem IHV ;)

kevsti
2016-08-14, 10:00:04
Hmm...

Nachdem die aktuellen Werte vom theoretischen Maximum ja soweit weg sind, kann man eigentlich getrost sagen, dass eine RAM-Takt Erhöhung immer was bringt, solange der RAM nicht instabil wird.

Wie schon weiter oben gesagt - dem ist nicht so, siehe die aktuelle 1080.

BlacKi
2016-08-14, 10:55:31
So, wie aber bestimmt man nun die minimal benötigte RAM-Frequenz?

gibts so nicht.

die unterste grenze scheint dann zu sein, wenn das spiel nichtmehr startet. soweit kannst du den speicher garnicht untertakten.

auch gibt es keinen wert ab wann schnellerer speicher nichts mehr bringt!

im prinzip gilt für maximale performance immer noch max gpu und speichertakt.
der minimalst takt ist der, bei dem der treiber nicht abschmiert.

Wie schon weiter oben gesagt - dem ist nicht so, siehe die aktuelle 1080.
das liegt daran das die timings so viel schlechter werden, das die performance durch den mehr takt wieder zunichte gemacht wird. theoretisch stimmt die aussage aber.

Hübie
2016-08-14, 11:06:35
Das Ansinnen ist recht unrealistisch. Im absoluten "worst case" sind die Bandbreitenanforderungen sehr viel höher, als sie das im Mittel in normalen Anwendungen/Spielen sind (wo es sich je nach Fall stark unterscheiden kann, wie ja von rudl schon erwähnt). Man gewinnt ab einem gewissen Punkt (der Übergang ist natürlich fließend) bei weiteren Bandbreitensteigerungen im Normalfall nur noch absolut minimal. Eine Optimierung auf extrem seltene Spezialfälle ist nicht sinnvoll.

Aber wir können ja mal ein grobe Überschlagsrechnung am Beispiel einer AMD-Grafikkarte machen. Jede CU kann über die TMUs auf (bis zu) 64 Byte pro Takt zugreifen. Dazu kommen noch die Speicherzugriffe über die Skalareinheit (>=16 Byte pro Takt) für jede CU. Weiterhin kann jeder ROP bis zu 24 Byte pro Takt erfordern. Nehmen wir mal einen Fiji (64CUs und 64 ROPs) und fangen an zu rechnen.
64 * (64 +16) + 64 * 24 = 6656 Byte (6,5kB) pro Takt erforderliche Bandbreite, so daß das nie, aber auch wirklich nie bremsen kann. Die Latenzen vernachlässigen wir mal, genauso wie möglicher Verschnitt wegen der Cachelines (das alleine ist ein potentieller Faktor 4), ansonsten müßte man noch erheblich Reserven einplanen.

Fiji läuft mit 1,05 GHz, das ergibt also als Maximum knapp 7 TB/s benötigter Bandbreite.

=> Macht man nicht, weil lohnt sich nicht.

Moment mal. Die SkalarALU liest doch nicht aus dem VRAM. :|

kevsti
2016-08-14, 14:37:35
[...]das liegt daran das die timings so viel schlechter werden, das die performance durch den mehr takt wieder zunichte gemacht wird. theoretisch stimmt die aussage aber.
Klar, genau das versuch ich ja mehrfach hier zum Ausdruck zu bringen, dass ganz abgesehen von der allgemeinen nicht Berechenbarkeit, eben nicht NUR der Takt wichtig ist, sondern auch die Latenzen. Es ist daher sinnfrei nur nach dem "minimalen Takt" zu suchen. Ohne jetzt irgendwas auszurechnen, kann eben der eine RAM der mit 10GHz läuft und ultra schlechte Timings hat trotzdem wesentlich langsamer sein, als einer der mit nur 2 GHz läuft aber dafür sehr scharfe Timings hat.

Von daher finde ich auch theoretisch die Aussage nicht wirklich haltbar. Bzw. könnte ich den Spieß eben umdrehen und fragen "Was sind die maximal benötigten Timings?". Da wird jeder erst einmal schreien "??? Kommt doch auf den Takt drauf an!"

KHJ
2016-09-30, 10:30:50
Ich denke,dass die Lead Produkt Designer soviel Erfahrung haben, dass keine Formel nötig ist, sondern sie die Bandbreite ungefähr abschätzen können.
Also in etwas so X GFLOPS = Y GB/s

Dann wird Y noch mit Variablen wie Kompressionsrate (Generation), Architektur (Cachefaktor) nach unten angepasst.
Danach schaut man mit welchen SI und Speichertechnologie man dieses Y erreicht und danach kommt ein Prototyp, wo man die Endanpassung vornimmt.

8K 61 / 220 = 0,28
7,5K 61 / 210= 0,29
7K 60 / 200 = 0,3
6,5K 58 / 185 = 0,31
6K 56 / 160 = 0,35

Da man ja nicht immer nach dem schnellsten Takt geht, wird vielleicht noch ein Wert gesetzt den man erreichen will bei der effektivität zb. 0,3 .
Die Taktrate würde hier also auf 7K gesetzt werden für das Produkt, es sei denn der Konkkurent würde es nötig machen sich Performancemässig über den angesetzten effektiven 0,3 rauszubewegen und 8K fahren zu müssen.

Vielleicht müsste die Überschrift auch lauten : "Minimal benötigte Speichertechnologie" ?

Naja so einfach Stelle ich mir das zumindest vor :biggrin: .