AssassinWarlord
Lt. Commander
- Registriert
- Okt. 2008
- Beiträge
- 1.184
Hallo zusammen, ich hab mal wieder ein kleines Projekt umgesetzt was ich schon lange mal machen wollte.
Diesmal ging es mir darum, eine RTX 3070 mit 16GB Videospeicher genauer zu analysieren.
Als Basis diente eine Gigabyte RTX3070 Gaming OC welche ja wie jede andere RTX3070 nur 8GB gDDR6 Speicher hat, genauer gesagt waren 8 St. Samsung K4Z80325BC-HC14 verbaut.
Da ich noch eine AMD RX6900XT rumliegen hatte wo – wie leider bei den meisten defekten RX6800/6900 - der Core defekt war aber der Speicher zum Glück noch heile war, war sie der ideale Spender. Verbaut waren auf der RX6900 Chips von Samsung, die K4ZAF325BM-HC16, davon 8 Stück – in Summe also 16GB.
Das HC14 oder HC16 gibt die Speichergeschwindigkeit an, also 14Gbps (1750Mhz) und HC16 sind demzufolge für 16Gbps Spezifiziert (2000Mhz), gibt auch langsamere oder noch schnellere.
Da ich schon das ein oder andere gelötet habe, habe ich schon etwas Erfahrung würde ich vorsichtig behaupten wollen und ein bisschen Equipment habe ich auch da. Also kurzerhand die Speicher beider Karten runter genommen und neu reballed. Da ich knausrig bin, habe ich über Aliexpress nur eine 6-fach gDDR6 Stencil (Schablone) gekauft – ohne die Halterung dazu. Diese habe ich mir mit etwas ausmessen selber konstruiert und 3D gedruckt. Und passte sogar direkt beim 1. Versuch

Speicherchips also vorher entzinnt, gereinigt und hauchdünn Flussmittel aufgetragen und die 0,45mm Lötkugeln über das Stencil verteilt. Damit liegen die Lötkugeln auf den Lötaugen der RamChips und werden nur durch das Flussmittel an Ort und stelle gehalten wenn man die RamChips vorsichtig mit der Pinzette aus der Halterung nimmt. Anschließend die RamChips auf eine Heizplatte und auf rund 190°C erhitzt sodass die bleihaltigen Aliexpress Lötkugeln schmelzen und eine Verbindung mit den Lötaugen eingehen. Auf das PCB auflöten geht dann ähnlich, also mit Unterhitze und Heißluft - eigentlich gar nicht so schwer das ganze.

Durch meine Knausrigkeit war natürlich die Grafikkarte vorher auch defekt, weil der Vorbesitzer wie auch immer einige SMD Widerstände und Keramik-Kondensatoren auf der Rückseite incl. der Lötaugen weggerissen hat – dafür war die Karte für mich günstig in der Anschaffung
War aber keine große Sache und konnte ich schnell reparieren.

Natürlich hatte ich die Karte vorher mit ihren 8GB getestet bevor ich den umbau gemacht habe ;-)
Nach dem Speicherumbau habe ich die Karte ebenfalls noch einmal getestet um zu schauen ob Bild kommt, und ob die Speicher ohne Fehler liefen – MATS Test (spezielles nVidia Test-Tool) lief fehlerfrei durch. Die Karte wurde noch mit 8GB erkannt, da es nicht damit getan ist, nur die Speicher zu tauschen.
Zum glück gibt es zu der Gigabyte Karte ein paar geleakte Servicedokumente, worin auch beschrieben ist, welche Strap-Widerstände man wie ändern muss, damit die Karte auch mit anderem Speicher läuft, wie Hynix, Micron oder Samsung Ram, aber auch 16Gb Samsung Speicher (also 2 GB Chips). Nvidia hatte scheinbar intern mit 16GB Ausstattung experimentiert, aber das ganze nicht umgesetzt. Die sogenannte Strap-Konfiguration wird beim Start der GPU ausgelesen und somit die entsprechende Timing-Tabelle im Grafikkarten-Bios ausgewählt.

Also Strap-Widerstände auf der Karte um gelötet und nochmal getestet. Karte liefert Bild, aber sobald der Treiber geladen wurde, war sie sehr instabil. Wenn sie einmal hoch getaktet hat und dann wieder in den Idle-State wechseln soll, gab es ein Blackscreen oder eine vollflächige Farbe wie Rot, Grün oder Blau.
Davon hatte ich schon gelesen im Netz von anderen Moddern, die ebenfalls so ein Mod durchgeführt haben, bei ihnen hatte es aber geholfen im nVidia Treiber bei der Energieverwaltung auf Maximale Performance umzustellen. Leider half das bei mir nicht. Mir ist aufgefallen, dass unter 4K Auflösung die Karte deutlich instabiler lief, als bei FullHD. Aber dennoch gab’s auch dabei öfter mal ein GreenScreen oder BlackScreen. Dann ging die suche los, wie man das Ding Stabil bekommt, also erst einmal raus finden wann die Karte Stabiler oder instabiler lief. Ich konnte problemlos ein Benchmark laufen lassen wenn es bis dahin kein Blackscreen gab. Unter Last also lief die Karte problemlos, auch 1h Furmark war kein Problem. Aber sobald man das Bench-Programm geschlossen hat, gab’s ein Crash. Auch Speicher Übertakten oder stark Untertakten änderte rein gar nichts.
Es gab also ein Problem wenn die Karte runter takten soll.
Mit dem Tool ThermSpy konnte ich die Karte in ein PowerState zwingen, wobei der P0 State der Hochleistungs-Modus ist wo die Karte mit Maximalen Takt läuft, und P5 der Energiespar-State wo sie am niedrigsten taktet. Ich fand heraus, dass die Karte in allen P-States Stabil lief, außer dem P3 State, da gab es sofort den BlackScreen .
Also geschaut, wie die Speichertaktraten der einzelnen P-States sind, das ganze geht mittels Command (geht sobald der nVidia Treiber installiert ist):
C:\Windows\System32>nvidia-smi --query-supported-clocks mem
memory [MHz]
7001 MHz
6801 MHz
5001 MHz
810 MHz
405 MHz
wobei P4 und P5 den gleichen niedrigen Speichertakt haben, nur dass beim P5 die GPU noch weiter runter taktet.
Der Blackscreen kam also, wenn der Speicher auf 5000Mhz runter taktete (bzw. 1250Mhz x 4)
Ich dachte mir gut – fixier ich den Speichertakt halt einfach, dass zumindest der Speicher immer mit maximalen Speichertakt lief, auch mittels Befehl:
C:\Windows\System32>nvidia-smi --lock-memory-clocks=7001
und startete den Befehl bei Systemstart über den Aufgabenplaner. Damit lief die Karte endlich Stabil
Durch diesen Trick zieht die Karte im Idle aber 47W statt 33W wenn auch der Speicher ganz runter takten kann. 6801Mhz änderte kaum was, glaube 46,5W waren es dann.
Aber: Schnell merkte ich, dass irgendwas noch nicht mit der Performance der Karte stimmte – sie war 10-15% Langsamer, als vergleichbare RTX3070 Karten, obwohl die Stromaufnahme und auch der Takt stimme :-/
Ich versuchte es mit übertakten, was die Karte etwas schneller machte, aber immer noch 10-15% langsamer war, als ebenfalls ähnlich stark übertaktete 3070er Karten.
Ich hab den memory clock-lock wieder raus genommen, damit lief die Karte wieder instabil – aber die Performance stimmte auf einmal wieder wenn ich es mal bis zu einem Benchmark schaffte.
Das ist schon das erste interessante – warum die Karte so deutlich langsamer war, obwohl doch der gleiche Stromverbrauch und Speichertakt anlag. Ich weiß es nicht warum es so war, aber so nützte mir das ganze nichts. Ich vermute, dass durch den memory-clock-lock eine simulierte Last auf die Karte gegeben wird, was dafür sorgt, dass der Speicher zumindest mit dem angegebenen Takt läuft. Oder aber sie arbeitet da mit einer anderen Timing-Tabelle, ich kann es nicht sagen.
Da die Karte aber auch mit der 8GB Strap-Konfiguration lief, habe ich mir einen kleinen Schalter dran gebaut, der die beiden Strap-Widerstände welche auf HighLevel gelegt werden mussten, auf Masse zieht wenn man es will. Damit kann ich also zwischen der 8GB und 16GB Strap-Konfiguration umschalten (natürlich muss die Karte dazu einmal Ausgeschaltet werden damit sie sich neu initialisiert und die Strap-Konfiguration einliest)

Ein intensiver Test im 8GB Modus zeigt – die Karte lief Stabil auch wenn der Speichertakt rauf und runter geht, also liegt es nicht an den Speicherchips, sondern muss etwas mit den Timings im Bios zu tun haben.
Dies wiederum brachte mich dazu, mir das BIOS mal genauer anzuschauen, mittels ImHex Editor.
Und mithilfe des durch den User „StViolenceDay“ im Techpowerup-Forum entwickelten Pattern-File, um das ganze besser Visuell darzustellen (Quelle: https://www.techpowerup.com/forums/...nsource-pattern-for-imhex.322299/post-5611841)
Interessanterweise fand ich so heraus, dass es noch mehr Strap-Konfigurationen im Bios gab, als in dem Servicedokument:

Jetzt wird es sehr trocken aber vielleicht interessiert es den ein oder anderen 😆 Hier mal ein direkter vergleich zur 8Gb StrapConfig 0 (Links) und der StrapConfig 6 (Rechts). Bei Density sieht man dass wohl die 5 eine Speicherkonfiguration mit 8GB angibt und eine 6 mit 16GB:

Wenn man die Zahl der jeweiligen StrapConfig kennt (hier also 0 für 8GB Samsung, und 6 für 16GB Samsung) kann man damit in die "mem_clock_frequency_ranges" Tabelle gehen.

Darin gibt es mehrere Schlüssel von 0-9 - diese stehen für verschiedene Taktstufen des Speichers, Schlüssel 0 z.B. für 0-540Mhz, Schlüssel 1 für 541-1249Mhz, Schlüssel 2 für 2005-4699Mhz und wie hier im Beispiel jetzt Schlüssel 3 für 4700Mhz-5250Mhz (zu sehen jeweils beim Eintrag "FreqMinimum" und "FreqMaximum". Das geht bis Schlüssel 6 wo der Takt mit 6301-16383Mz angegeben ist, die restlichen Schlüssel sind mit 0Mhz angegeben, werden also nicht genutzt.
Wenn man jetzt die Timings für den Speichertakt-Bereich wissen will, gibt es weitere Unterschlüssel, 0-13, diese stehen jetzt für die StrapConfig (die letzten paar sind ebenfalls leer bzw. Platzhalter).
Darin gibt es jetzt ein paar Basic-Timings, und wie man hier schon im Bild sieht, gibt es bereits unterschiede zwischen der 8GB Version und der 16GB Version (Flag4). Aber es gibt hier auch einen Eintrag "tweak_timings_index" - dieser Wert gibt den Eintrag in der eigentlichen großen Timing-Tabelle an, die "mem_tweak_timings". Mit der Indexnummer kann man sich jetzt den entsprechenden Eintrag raussuchen und sich die Timings anschauen, aber hier weiß wohl nur Nvidia was welcher Eintrag genau ist. Auch hier gibt es in jeder TaktStufe leichte unterschiede zw. dem 8GB und dem 16GB StrapConfig

StrapConfig 9 z.B. ist auch für 16Gb Samsung Chips, die 9 ist Binär die 1001. In einem Servicedokument zu einer RTX2080TI war die Strap-Liste etwas weiter ausgeführt, worin beschrieben ist, wie die Widerstände da angepasst werden müssen.

Dies habe ich auch getestet, aber damit startete die Karte gar nicht erst. Es waren auch hier unterschiedliche Timing-Einstellungen im Bios zu sehen, auch in den "Basic" Timings.
Also weiter mit den zuvor gesetzten StrapConfig 6 und im Bios geschaut was da anders ist. Bei einigen Taktstufen sind beim Strap6 die Speicher-Timings anders als beim Originalen Strap0. Im Vergleich zu einer RTX3060-12GB waren die 16GB Timings im RTX3070 Bios auch hier und da anders.
Das erklärte, warum bei bestimmten Taktraten die Karte instabil lief.
Nvidia hatte hier scheinbar nicht weiterentwickelt und die Karte nie Stabil gemacht.
Übrigens – auch in allen anderen RTX3070 Bios Versionen der anderen Hersteller ist exakt die selbe Strap-Konfiguration mit den gleichen Speichertimings hinterlegt – ich vermute mal, dass die Hersteller sich an die nVidia vorgaben halten müssen und nur hier und da etwas am Takt ändern dürfen und ihr Namen ins Bios schreiben dürfen.
Heutzutage darf ja auch kein Hersteller mehr von sich aus die Doppelte Speichermenge verbauen wie es früher mal war.
Tja, aber die Information dass die Timings anders waren bzw. noch falsch waren, brachte mir effektiv auch nichts weiter, da man seit Pascal das Bios nicht mehr in der Richtung bearbeiten kann, weil dann die Signatur des Bios Files nicht mehr stimmt. Die nVidia Falcon Security Engine in der GPU der Karte bricht den Start ab wenn das Bios manipuliert wurde, zumindest mehr als der "Header" im Bios weil dann die große 32Bit Checksumme nicht mehr stimmt. Auch ein manuelles Flashen via SPI Flasher brache nix. Hier ein Bild vom Arbeitsplatz wo schon etwas Verzweiflung aufkam

Auch die beiden Flash-Tools (nvflashk und omgvflash) welche "Bios Modding" ermöglichen helfen da nicht - die sind nur dafür da ein CrossFlash zu machen, also z.B. ein Asus Strix 3070 auf die Gigabyte 3070 zu Flashen ohne das es einen Bluescreen beim Treiberladen gibt
Auch ein anheben oder absenken der GPU oder Speicherspannung (jeweils +0,1V) - was ich ebenfalls testweise in Hardware machte über in Spindel-Trimmer an den VrefIn Pins der jeweiligen PWM Controller - änderte leider nichts.
Ich könnte hier also auch ein VCore und VMem mod machen bei der karte, aber ich denke, da wäre Taktmäßig nicht mehr soviel rauszuholen.
Also ging es weiter auf die Suche, wie ich die Karte auf Maximaltakt halten kann. Auf Hardware-Ebene geht das leider auch nicht, weil die Logik-Einheit in der GPU (Silizium) den Takt des Speichers vorgibt.
Ich fand dann noch ein Registry Wert, der die Dynamische P-States deaktivierte, aber der Wert muss je nach System und eventuell vorher installierter Grafikkarten woanders eingeschrieben werden. Basis-Schlüssel ist der: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}
darin gibt es Unterschlüssel wie 0000 oder 0001 oder auch 0020.
Und in dem Unterschlüssel wo in der DriverDesc etwas mit RTX 3070 steht, muss man den Reg_DWORD „DisableDynamicPstate“ einschreiben und auf 1 setzen.
Ich habe dazu ein kleines Script erstellt welches automatisch alle Unterschlüssel sucht wo 3070 drin steht und da den entsprechenden Eintrag einschreibt.
[Script im Anhang]
Damit wird läuft die Karte immer im P0 State – ich denke mal das sollte eigentlich auch die Einstellung „Maximale Performance“ im Nvidia Treiber machen – aber gefühlt macht diese Einstellung im Treiber rein gar nix.
Der Registry Eintrag macht aber schon etwas – die Karte läuft endlich Stabil mit den 16GB
Leider aber verbraucht die Karte damit auch gut 70W im Idle. Aber ein Helden tot muss man wohl sterben wenn man solch ein Schändlich Werk vollbringt
Da die Karte jetzt endlich lief, wollte ich aber noch etwas Extra-Performance aus ihr herauskitzeln, und machte noch kurzerhand ein Shunt-Mod. Auf beide PCIe 6/8-Pin Eingangsseitige Shunts habe ich huckepack die gleiche Shunt-Widerstandsgröße noch einmal aufgelötet, damit sieht die Karte also recht genau die Hälfte des Stroms, PCIe Slot Seitig wollte ich das aber nicht machen, weil sie sonst deutlich mehr Strom aus dem Slot ziehen würde was dem Mainboard sicherlich nicht gefallen würde auf dauer. Also habe ich in den Servicedokument etwas rumgeschaut und gesehen, wie ich die PowerStage Mosfets um brücken konnte, dass Sie ihren Strom nicht über den PCIe Slot ziehen, sondern über den 8 Pin Stromanschluss – der ja eh nur die hälfet des Stroms sieht durch den ShuntMod. Damit hingen am ende nur noch die Nebenspannungen am PCIe Slot was ihn mit rund 33W belastete. Das ganze ging recht einfach mit einem niederohmigen Widerstand der nur unversetzt werden musste.
Die Karte konnte jetzt unter Furmark bis zu 370W ziehen (extern gemessen) – wird also nicht mehr Power-Limitieret. Die Mosfets auf der Karte sind rechnerisch bis rund 450W zugelassen.

Btw. Im GPUz Screenshot da oben hatte ich noch einfache Wärmeleitpaste verwendet und den Kühler schon zichmal neu aufgesetzt ohne die WLP zu wechseln – jetzt ist sie final zusammengebaut mit guter neuer Wärmeleitpaste, und auch die Speicher und Mosfets haben jetzt Thermal Putty (Halnziye HY2610) spendiert bekommen (Performt wie TG Putty Pro). Die Karte läuft also final etwas Kühler als im GPUz Screenshot zu sehen.

Ich konnte jetzt also „in ruhe“ Testen ohne dass etwas abstürzt, und auch mit dem Übertakten rumprobieren wie es zwischen der 8GB und 16GB Konfiguration ausschaute.
Und Tatsächlich: Die GPU konnte ich mit beiden Speichervarianten um 170Mhz übertakten, aber der Speicher kann im 8GB Modus nur um 1100Mhz übertaktet werden, aber im 16GB Modus direkt um 2000Mhz übertaktet werden
Zusätzlich bemerkte ich, dass die Karte im 8GB Modus mit Standard-Takt minimal schneller war, als im 16GB Modus mit Standard-Takt.
Das bestätigte umso mehr, dass die Timings im BIOS für die 16GB Konfiguration nicht final sind und Nvidia das einfach so stehen lassen hat im Bios.
Hier die Benchmarks im 8GB Modus
einmal mit Default-Takt:

und übertaktet:

und jetzt nochmal im 16GB Modus
auch einmal mit Default-Takt:

und übertaktet:

wie man sieht, ist sie hier durch den deutlich höheren Takt trotz etwas schlechteren Timings etwas schneller als wenn es eine übertaktete 8GB Karte wäre
Aber so Richtig merkt man es, wenn man Spiele hat, die mit 8GB Videospeicher nicht mehr klar kommen.
Wie z.B. Spiderman 2 - hier gibt es fast eine Verdoppelung der Framerate, auch die Frametimes sprechen für sich. Im 8GB Modus ruckelt es nur so vor sich hin, eben weil die Karte die ganze Zeit über den PCIe Bus Daten transferieren muss was Zeit kostet.
(Sys: B850i Lightning, Ryzen 9950X, 64GB 6000-CL30; 4K Auflösung, Preset: "Sehr Hoch")
Hier mit 8GB (Grafikspeicher mit 7,9GB belegt)

und hier mit 16GB (Grafikspeicher mit 13,3GB belegt)

Klar, zur damaligen zeit reichten die 8GB gerade noch so zu, aber es war absehbar, dass sie schnell an zuwenig GRafikspeicher verhungern wird obwohl sie mehr liefern könnte. 16GB hätten der Karte deutlich besser zugestanden als nur 8GB. Die Nvidia Entwickler/Ingenieure wollten das scheinbar auch so, sonst hätten diese nicht mit 16GB herumexperimentiert und das so im BIOS stehen lassen. Aber wie auch in der Autobranche - die Entwickler wollen gerne, dürfen aber nicht weil sie von ganz oben ein Riegel vorgeschoben bekommen
Für mich was es ein Spannendes, aber auch ein etwas nerven raubendes Projekt, da ich gehofft hatte, das Stabilitätsproblem irgendwie anders lösen zu können. Aber das haben große Modder wie Vik-On auch schon versucht.
Wieder ein „Prototyp“ mehr, der mit dem 8GB/16GB Schalter sicherlich noch ein bisschen mehr ermöglicht beim rumprobieren in zukünftigen Spielen

Ich sollte aber vielleicht auch Roman-Schreiber werden 😆
Diesmal ging es mir darum, eine RTX 3070 mit 16GB Videospeicher genauer zu analysieren.
Als Basis diente eine Gigabyte RTX3070 Gaming OC welche ja wie jede andere RTX3070 nur 8GB gDDR6 Speicher hat, genauer gesagt waren 8 St. Samsung K4Z80325BC-HC14 verbaut.
Da ich noch eine AMD RX6900XT rumliegen hatte wo – wie leider bei den meisten defekten RX6800/6900 - der Core defekt war aber der Speicher zum Glück noch heile war, war sie der ideale Spender. Verbaut waren auf der RX6900 Chips von Samsung, die K4ZAF325BM-HC16, davon 8 Stück – in Summe also 16GB.
Das HC14 oder HC16 gibt die Speichergeschwindigkeit an, also 14Gbps (1750Mhz) und HC16 sind demzufolge für 16Gbps Spezifiziert (2000Mhz), gibt auch langsamere oder noch schnellere.
Da ich schon das ein oder andere gelötet habe, habe ich schon etwas Erfahrung würde ich vorsichtig behaupten wollen und ein bisschen Equipment habe ich auch da. Also kurzerhand die Speicher beider Karten runter genommen und neu reballed. Da ich knausrig bin, habe ich über Aliexpress nur eine 6-fach gDDR6 Stencil (Schablone) gekauft – ohne die Halterung dazu. Diese habe ich mir mit etwas ausmessen selber konstruiert und 3D gedruckt. Und passte sogar direkt beim 1. Versuch

Speicherchips also vorher entzinnt, gereinigt und hauchdünn Flussmittel aufgetragen und die 0,45mm Lötkugeln über das Stencil verteilt. Damit liegen die Lötkugeln auf den Lötaugen der RamChips und werden nur durch das Flussmittel an Ort und stelle gehalten wenn man die RamChips vorsichtig mit der Pinzette aus der Halterung nimmt. Anschließend die RamChips auf eine Heizplatte und auf rund 190°C erhitzt sodass die bleihaltigen Aliexpress Lötkugeln schmelzen und eine Verbindung mit den Lötaugen eingehen. Auf das PCB auflöten geht dann ähnlich, also mit Unterhitze und Heißluft - eigentlich gar nicht so schwer das ganze.

Durch meine Knausrigkeit war natürlich die Grafikkarte vorher auch defekt, weil der Vorbesitzer wie auch immer einige SMD Widerstände und Keramik-Kondensatoren auf der Rückseite incl. der Lötaugen weggerissen hat – dafür war die Karte für mich günstig in der Anschaffung
War aber keine große Sache und konnte ich schnell reparieren.

Natürlich hatte ich die Karte vorher mit ihren 8GB getestet bevor ich den umbau gemacht habe ;-)
Nach dem Speicherumbau habe ich die Karte ebenfalls noch einmal getestet um zu schauen ob Bild kommt, und ob die Speicher ohne Fehler liefen – MATS Test (spezielles nVidia Test-Tool) lief fehlerfrei durch. Die Karte wurde noch mit 8GB erkannt, da es nicht damit getan ist, nur die Speicher zu tauschen.
Zum glück gibt es zu der Gigabyte Karte ein paar geleakte Servicedokumente, worin auch beschrieben ist, welche Strap-Widerstände man wie ändern muss, damit die Karte auch mit anderem Speicher läuft, wie Hynix, Micron oder Samsung Ram, aber auch 16Gb Samsung Speicher (also 2 GB Chips). Nvidia hatte scheinbar intern mit 16GB Ausstattung experimentiert, aber das ganze nicht umgesetzt. Die sogenannte Strap-Konfiguration wird beim Start der GPU ausgelesen und somit die entsprechende Timing-Tabelle im Grafikkarten-Bios ausgewählt.

Also Strap-Widerstände auf der Karte um gelötet und nochmal getestet. Karte liefert Bild, aber sobald der Treiber geladen wurde, war sie sehr instabil. Wenn sie einmal hoch getaktet hat und dann wieder in den Idle-State wechseln soll, gab es ein Blackscreen oder eine vollflächige Farbe wie Rot, Grün oder Blau.
Davon hatte ich schon gelesen im Netz von anderen Moddern, die ebenfalls so ein Mod durchgeführt haben, bei ihnen hatte es aber geholfen im nVidia Treiber bei der Energieverwaltung auf Maximale Performance umzustellen. Leider half das bei mir nicht. Mir ist aufgefallen, dass unter 4K Auflösung die Karte deutlich instabiler lief, als bei FullHD. Aber dennoch gab’s auch dabei öfter mal ein GreenScreen oder BlackScreen. Dann ging die suche los, wie man das Ding Stabil bekommt, also erst einmal raus finden wann die Karte Stabiler oder instabiler lief. Ich konnte problemlos ein Benchmark laufen lassen wenn es bis dahin kein Blackscreen gab. Unter Last also lief die Karte problemlos, auch 1h Furmark war kein Problem. Aber sobald man das Bench-Programm geschlossen hat, gab’s ein Crash. Auch Speicher Übertakten oder stark Untertakten änderte rein gar nichts.
Es gab also ein Problem wenn die Karte runter takten soll.
Mit dem Tool ThermSpy konnte ich die Karte in ein PowerState zwingen, wobei der P0 State der Hochleistungs-Modus ist wo die Karte mit Maximalen Takt läuft, und P5 der Energiespar-State wo sie am niedrigsten taktet. Ich fand heraus, dass die Karte in allen P-States Stabil lief, außer dem P3 State, da gab es sofort den BlackScreen .
Also geschaut, wie die Speichertaktraten der einzelnen P-States sind, das ganze geht mittels Command (geht sobald der nVidia Treiber installiert ist):
C:\Windows\System32>nvidia-smi --query-supported-clocks mem
memory [MHz]
7001 MHz
6801 MHz
5001 MHz
810 MHz
405 MHz
wobei P4 und P5 den gleichen niedrigen Speichertakt haben, nur dass beim P5 die GPU noch weiter runter taktet.
Der Blackscreen kam also, wenn der Speicher auf 5000Mhz runter taktete (bzw. 1250Mhz x 4)
Ich dachte mir gut – fixier ich den Speichertakt halt einfach, dass zumindest der Speicher immer mit maximalen Speichertakt lief, auch mittels Befehl:
C:\Windows\System32>nvidia-smi --lock-memory-clocks=7001
und startete den Befehl bei Systemstart über den Aufgabenplaner. Damit lief die Karte endlich Stabil
Durch diesen Trick zieht die Karte im Idle aber 47W statt 33W wenn auch der Speicher ganz runter takten kann. 6801Mhz änderte kaum was, glaube 46,5W waren es dann.
Aber: Schnell merkte ich, dass irgendwas noch nicht mit der Performance der Karte stimmte – sie war 10-15% Langsamer, als vergleichbare RTX3070 Karten, obwohl die Stromaufnahme und auch der Takt stimme :-/
Ich versuchte es mit übertakten, was die Karte etwas schneller machte, aber immer noch 10-15% langsamer war, als ebenfalls ähnlich stark übertaktete 3070er Karten.
Ich hab den memory clock-lock wieder raus genommen, damit lief die Karte wieder instabil – aber die Performance stimmte auf einmal wieder wenn ich es mal bis zu einem Benchmark schaffte.
Das ist schon das erste interessante – warum die Karte so deutlich langsamer war, obwohl doch der gleiche Stromverbrauch und Speichertakt anlag. Ich weiß es nicht warum es so war, aber so nützte mir das ganze nichts. Ich vermute, dass durch den memory-clock-lock eine simulierte Last auf die Karte gegeben wird, was dafür sorgt, dass der Speicher zumindest mit dem angegebenen Takt läuft. Oder aber sie arbeitet da mit einer anderen Timing-Tabelle, ich kann es nicht sagen.
Da die Karte aber auch mit der 8GB Strap-Konfiguration lief, habe ich mir einen kleinen Schalter dran gebaut, der die beiden Strap-Widerstände welche auf HighLevel gelegt werden mussten, auf Masse zieht wenn man es will. Damit kann ich also zwischen der 8GB und 16GB Strap-Konfiguration umschalten (natürlich muss die Karte dazu einmal Ausgeschaltet werden damit sie sich neu initialisiert und die Strap-Konfiguration einliest)

Ein intensiver Test im 8GB Modus zeigt – die Karte lief Stabil auch wenn der Speichertakt rauf und runter geht, also liegt es nicht an den Speicherchips, sondern muss etwas mit den Timings im Bios zu tun haben.
Dies wiederum brachte mich dazu, mir das BIOS mal genauer anzuschauen, mittels ImHex Editor.
Und mithilfe des durch den User „StViolenceDay“ im Techpowerup-Forum entwickelten Pattern-File, um das ganze besser Visuell darzustellen (Quelle: https://www.techpowerup.com/forums/...nsource-pattern-for-imhex.322299/post-5611841)
Interessanterweise fand ich so heraus, dass es noch mehr Strap-Konfigurationen im Bios gab, als in dem Servicedokument:

Jetzt wird es sehr trocken aber vielleicht interessiert es den ein oder anderen 😆 Hier mal ein direkter vergleich zur 8Gb StrapConfig 0 (Links) und der StrapConfig 6 (Rechts). Bei Density sieht man dass wohl die 5 eine Speicherkonfiguration mit 8GB angibt und eine 6 mit 16GB:

Wenn man die Zahl der jeweiligen StrapConfig kennt (hier also 0 für 8GB Samsung, und 6 für 16GB Samsung) kann man damit in die "mem_clock_frequency_ranges" Tabelle gehen.

Darin gibt es mehrere Schlüssel von 0-9 - diese stehen für verschiedene Taktstufen des Speichers, Schlüssel 0 z.B. für 0-540Mhz, Schlüssel 1 für 541-1249Mhz, Schlüssel 2 für 2005-4699Mhz und wie hier im Beispiel jetzt Schlüssel 3 für 4700Mhz-5250Mhz (zu sehen jeweils beim Eintrag "FreqMinimum" und "FreqMaximum". Das geht bis Schlüssel 6 wo der Takt mit 6301-16383Mz angegeben ist, die restlichen Schlüssel sind mit 0Mhz angegeben, werden also nicht genutzt.
Wenn man jetzt die Timings für den Speichertakt-Bereich wissen will, gibt es weitere Unterschlüssel, 0-13, diese stehen jetzt für die StrapConfig (die letzten paar sind ebenfalls leer bzw. Platzhalter).
Darin gibt es jetzt ein paar Basic-Timings, und wie man hier schon im Bild sieht, gibt es bereits unterschiede zwischen der 8GB Version und der 16GB Version (Flag4). Aber es gibt hier auch einen Eintrag "tweak_timings_index" - dieser Wert gibt den Eintrag in der eigentlichen großen Timing-Tabelle an, die "mem_tweak_timings". Mit der Indexnummer kann man sich jetzt den entsprechenden Eintrag raussuchen und sich die Timings anschauen, aber hier weiß wohl nur Nvidia was welcher Eintrag genau ist. Auch hier gibt es in jeder TaktStufe leichte unterschiede zw. dem 8GB und dem 16GB StrapConfig

StrapConfig 9 z.B. ist auch für 16Gb Samsung Chips, die 9 ist Binär die 1001. In einem Servicedokument zu einer RTX2080TI war die Strap-Liste etwas weiter ausgeführt, worin beschrieben ist, wie die Widerstände da angepasst werden müssen.

Dies habe ich auch getestet, aber damit startete die Karte gar nicht erst. Es waren auch hier unterschiedliche Timing-Einstellungen im Bios zu sehen, auch in den "Basic" Timings.
Also weiter mit den zuvor gesetzten StrapConfig 6 und im Bios geschaut was da anders ist. Bei einigen Taktstufen sind beim Strap6 die Speicher-Timings anders als beim Originalen Strap0. Im Vergleich zu einer RTX3060-12GB waren die 16GB Timings im RTX3070 Bios auch hier und da anders.
Das erklärte, warum bei bestimmten Taktraten die Karte instabil lief.
Nvidia hatte hier scheinbar nicht weiterentwickelt und die Karte nie Stabil gemacht.
Übrigens – auch in allen anderen RTX3070 Bios Versionen der anderen Hersteller ist exakt die selbe Strap-Konfiguration mit den gleichen Speichertimings hinterlegt – ich vermute mal, dass die Hersteller sich an die nVidia vorgaben halten müssen und nur hier und da etwas am Takt ändern dürfen und ihr Namen ins Bios schreiben dürfen.
Heutzutage darf ja auch kein Hersteller mehr von sich aus die Doppelte Speichermenge verbauen wie es früher mal war.
Tja, aber die Information dass die Timings anders waren bzw. noch falsch waren, brachte mir effektiv auch nichts weiter, da man seit Pascal das Bios nicht mehr in der Richtung bearbeiten kann, weil dann die Signatur des Bios Files nicht mehr stimmt. Die nVidia Falcon Security Engine in der GPU der Karte bricht den Start ab wenn das Bios manipuliert wurde, zumindest mehr als der "Header" im Bios weil dann die große 32Bit Checksumme nicht mehr stimmt. Auch ein manuelles Flashen via SPI Flasher brache nix. Hier ein Bild vom Arbeitsplatz wo schon etwas Verzweiflung aufkam

Auch die beiden Flash-Tools (nvflashk und omgvflash) welche "Bios Modding" ermöglichen helfen da nicht - die sind nur dafür da ein CrossFlash zu machen, also z.B. ein Asus Strix 3070 auf die Gigabyte 3070 zu Flashen ohne das es einen Bluescreen beim Treiberladen gibt
Auch ein anheben oder absenken der GPU oder Speicherspannung (jeweils +0,1V) - was ich ebenfalls testweise in Hardware machte über in Spindel-Trimmer an den VrefIn Pins der jeweiligen PWM Controller - änderte leider nichts.
Ich könnte hier also auch ein VCore und VMem mod machen bei der karte, aber ich denke, da wäre Taktmäßig nicht mehr soviel rauszuholen.
Also ging es weiter auf die Suche, wie ich die Karte auf Maximaltakt halten kann. Auf Hardware-Ebene geht das leider auch nicht, weil die Logik-Einheit in der GPU (Silizium) den Takt des Speichers vorgibt.
Ich fand dann noch ein Registry Wert, der die Dynamische P-States deaktivierte, aber der Wert muss je nach System und eventuell vorher installierter Grafikkarten woanders eingeschrieben werden. Basis-Schlüssel ist der: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}
darin gibt es Unterschlüssel wie 0000 oder 0001 oder auch 0020.
Und in dem Unterschlüssel wo in der DriverDesc etwas mit RTX 3070 steht, muss man den Reg_DWORD „DisableDynamicPstate“ einschreiben und auf 1 setzen.
Ich habe dazu ein kleines Script erstellt welches automatisch alle Unterschlüssel sucht wo 3070 drin steht und da den entsprechenden Eintrag einschreibt.
[Script im Anhang]
Damit wird läuft die Karte immer im P0 State – ich denke mal das sollte eigentlich auch die Einstellung „Maximale Performance“ im Nvidia Treiber machen – aber gefühlt macht diese Einstellung im Treiber rein gar nix.
Der Registry Eintrag macht aber schon etwas – die Karte läuft endlich Stabil mit den 16GB
Leider aber verbraucht die Karte damit auch gut 70W im Idle. Aber ein Helden tot muss man wohl sterben wenn man solch ein Schändlich Werk vollbringt
Da die Karte jetzt endlich lief, wollte ich aber noch etwas Extra-Performance aus ihr herauskitzeln, und machte noch kurzerhand ein Shunt-Mod. Auf beide PCIe 6/8-Pin Eingangsseitige Shunts habe ich huckepack die gleiche Shunt-Widerstandsgröße noch einmal aufgelötet, damit sieht die Karte also recht genau die Hälfte des Stroms, PCIe Slot Seitig wollte ich das aber nicht machen, weil sie sonst deutlich mehr Strom aus dem Slot ziehen würde was dem Mainboard sicherlich nicht gefallen würde auf dauer. Also habe ich in den Servicedokument etwas rumgeschaut und gesehen, wie ich die PowerStage Mosfets um brücken konnte, dass Sie ihren Strom nicht über den PCIe Slot ziehen, sondern über den 8 Pin Stromanschluss – der ja eh nur die hälfet des Stroms sieht durch den ShuntMod. Damit hingen am ende nur noch die Nebenspannungen am PCIe Slot was ihn mit rund 33W belastete. Das ganze ging recht einfach mit einem niederohmigen Widerstand der nur unversetzt werden musste.
Die Karte konnte jetzt unter Furmark bis zu 370W ziehen (extern gemessen) – wird also nicht mehr Power-Limitieret. Die Mosfets auf der Karte sind rechnerisch bis rund 450W zugelassen.

Btw. Im GPUz Screenshot da oben hatte ich noch einfache Wärmeleitpaste verwendet und den Kühler schon zichmal neu aufgesetzt ohne die WLP zu wechseln – jetzt ist sie final zusammengebaut mit guter neuer Wärmeleitpaste, und auch die Speicher und Mosfets haben jetzt Thermal Putty (Halnziye HY2610) spendiert bekommen (Performt wie TG Putty Pro). Die Karte läuft also final etwas Kühler als im GPUz Screenshot zu sehen.

Ich konnte jetzt also „in ruhe“ Testen ohne dass etwas abstürzt, und auch mit dem Übertakten rumprobieren wie es zwischen der 8GB und 16GB Konfiguration ausschaute.
Und Tatsächlich: Die GPU konnte ich mit beiden Speichervarianten um 170Mhz übertakten, aber der Speicher kann im 8GB Modus nur um 1100Mhz übertaktet werden, aber im 16GB Modus direkt um 2000Mhz übertaktet werden
Zusätzlich bemerkte ich, dass die Karte im 8GB Modus mit Standard-Takt minimal schneller war, als im 16GB Modus mit Standard-Takt.
Das bestätigte umso mehr, dass die Timings im BIOS für die 16GB Konfiguration nicht final sind und Nvidia das einfach so stehen lassen hat im Bios.
Hier die Benchmarks im 8GB Modus
einmal mit Default-Takt:

und übertaktet:

und jetzt nochmal im 16GB Modus
auch einmal mit Default-Takt:

und übertaktet:

wie man sieht, ist sie hier durch den deutlich höheren Takt trotz etwas schlechteren Timings etwas schneller als wenn es eine übertaktete 8GB Karte wäre
Aber so Richtig merkt man es, wenn man Spiele hat, die mit 8GB Videospeicher nicht mehr klar kommen.
Wie z.B. Spiderman 2 - hier gibt es fast eine Verdoppelung der Framerate, auch die Frametimes sprechen für sich. Im 8GB Modus ruckelt es nur so vor sich hin, eben weil die Karte die ganze Zeit über den PCIe Bus Daten transferieren muss was Zeit kostet.
(Sys: B850i Lightning, Ryzen 9950X, 64GB 6000-CL30; 4K Auflösung, Preset: "Sehr Hoch")
Hier mit 8GB (Grafikspeicher mit 7,9GB belegt)

YouTube
An dieser Stelle steht ein externer Inhalt von YouTube, der den Forumbeitrag ergänzt. Er kann mit einem Klick geladen und auch wieder ausgeblendet werden.
Ich bin damit einverstanden, dass YouTube-Embeds geladen werden. Dabei können personenbezogene Daten an YouTube übermittelt werden. Mehr dazu in der Datenschutzerklärung.
und hier mit 16GB (Grafikspeicher mit 13,3GB belegt)

YouTube
An dieser Stelle steht ein externer Inhalt von YouTube, der den Forumbeitrag ergänzt. Er kann mit einem Klick geladen und auch wieder ausgeblendet werden.
Ich bin damit einverstanden, dass YouTube-Embeds geladen werden. Dabei können personenbezogene Daten an YouTube übermittelt werden. Mehr dazu in der Datenschutzerklärung.
Klar, zur damaligen zeit reichten die 8GB gerade noch so zu, aber es war absehbar, dass sie schnell an zuwenig GRafikspeicher verhungern wird obwohl sie mehr liefern könnte. 16GB hätten der Karte deutlich besser zugestanden als nur 8GB. Die Nvidia Entwickler/Ingenieure wollten das scheinbar auch so, sonst hätten diese nicht mit 16GB herumexperimentiert und das so im BIOS stehen lassen. Aber wie auch in der Autobranche - die Entwickler wollen gerne, dürfen aber nicht weil sie von ganz oben ein Riegel vorgeschoben bekommen
Für mich was es ein Spannendes, aber auch ein etwas nerven raubendes Projekt, da ich gehofft hatte, das Stabilitätsproblem irgendwie anders lösen zu können. Aber das haben große Modder wie Vik-On auch schon versucht.
Wieder ein „Prototyp“ mehr, der mit dem 8GB/16GB Schalter sicherlich noch ein bisschen mehr ermöglicht beim rumprobieren in zukünftigen Spielen

Ich sollte aber vielleicht auch Roman-Schreiber werden 😆
Anhänge
Zuletzt bearbeitet:
