Ich lese immer wieder davon, dass der VRAM auf vollem Takt bleibt und die Grafikkarte daher zu viel Strom verbraucht und die Lüfter ggf. aus dem Zero-Fan idle anspringen.
An vielen Stellen habe ich erwähnt, wie sich das lösen lässt, aber einerseits wird es nicht immer verstanden und andererseits wird die Frage immer wieder gestellt. Daher versuche ich hier eine Anlaufstelle inkl. Lösung anzubieten, auf die ggf. verlinkt werden kann.
Vorweg: Meine Erfahrungen und die hier vorgestellte Lösung behandelt kein Multi-Monitor. Bei Multi-Monitor gibt es zahllose Kombinationsmöglichkeiten und da müsst ihr selbst rauskriegen, ob sich eine Lösung finden lässt.
Genutzte Hardware
Ich habe alles mit meinem 3440x1440 @100Hz Samsung C34 Monitor getestet (auch mal mit 2560x1440), sowie mit meinem 4k 120Hz LG B9 Fernseher. Auf beiden Geräten kann ich alle denkbaren Auflösungen und Bildwiederholraten mit niedrigem VRAM idle zum Laufen bekommen. Nur 4k 120Hz noch nicht mangels HDMI 2.1 an meiner Karte.
Angeschlossen über DisplayPort bzw. HDMI 2.0 an meine Radeon 5700 XT. Soweit ich sehe, sollte alles auch für die 6000er Reihe gelten. Vega hingegen hatte HBM-Speicher, für die Karten gilt das nicht.
Was ist überhaupt das Problem?
Das Problem ist eine zu geringe "Blanking Time". Das lässt sich belegen.
Der Rest sind Spekulationen, ich kann kurz versuchen zu umreißen, was ich mir zusammenreime: Die Blanking Time ist "tote Zeit", in der dem Display keine neuen anzuzeigenden Informationen mitgeteilt werden. Das wurde zu Zeiten der CRT-Monitore eingeführt, da der Elektronenstrahl einen Moment brauchte, um zurück zum "Anfang" des Bildes zu gelangen. Das gibt es immer noch in den heutigen Videosignalen.
Offenbar benötigen unsere aktuellen Grafikkarten eine gewisse "Totzeit" / Pause / Blanking Time, damit der Video-RAM heruntertaktet. Möglicherweise würde sonst das Bild instabil werden oder weiß der Geier. Da der Takt bestimmt, wie viele Daten übertragen werden können, reicht mit dem 200MHz idle die Bandbreite ab einem bestimmten Punkt nicht mehr aus - außer die Karte hat noch etwas "Zusatzzeit" für die Übertragung, nämlich die Blanking Time. Die benötigte Pause hängt von der verwendeten Auflösung, sowie der Bildwiederholrate ab. Je höher beide Werte, desto mehr Daten und eine desto längere Pause wird benötigt.
Die Blanking Time wird vom Monitorhersteller in den "Auflösungen" hinterlegt. Ich schreibe "Auflösungen" in Anführungszeichen, da z.B. 2560x1440 in 144 Hz eine andere Auflösung für das System ist als 2560x1440 in 60 Hz. Es wird eine andere Konfiguration verwendet. Daher können sich neben der unterschiedlichen benötigten Bandbreite auch die voreingestellte Blanking Time unterscheiden, wenn ihr die Hz umstellt - und plötzlich wird es möglich, dass der VRAM bei einer niedrigeren Auflösung nicht mehr heruntertaktet, obwohl er es bei einer höheren noch tat.
Warum tragen Monitorhersteller eine "zu niedrige" Blanking Time ein, wenn der Monitor auch mit einer höheren funktioniert?
Gute Frage! Ich weiß es (mal wieder) nicht genau. Vermutung: Mit erhöhter Blanking Time erhöht sich auch der "Pixel clock". Je nach Anschlussart und Standard, gibt es dort ein Maximum. Eventuell möchte der Monitorhersteller, dass Auflösung XY auch noch mit HDMI 1.3 funktioniert und streicht deshalb so viel wie möglich aus dem Signal zusammen. Solange ihr ein halbwegs modernes DisplayPort oder HDMI nutzt, kann euch das aber natürlich egal sein.
Lösung
Zunächst einmal der Beweis, dass es funktioniert. Test durchgeführt mit 3440x1440 @100 Hz.
Der einzige Unterschied: 5 Linien mehr bei "Blanking vertical".
Schritt-für-Schritt, damit ihr das auch hinbekommt
Potenzielle Probleme / Nachteile
Nachteile nach einmal gefundener Konfiguration sind mirkeine wenige bekannt. Hat man einen unpassenden Wert erwischt, hatte ich bisher zwei Szenarien:
Viel Erfolg und ich hoffe geholfen zu haben!
UPDATE: Die Formel hat einen kleinen Fehler, da sich die Zahl der "Total Lines" ändert, je nachdem wie viele Blank Lines ihr angebt, wie völlig richtig von @Murd0c1312 berichtet. Ich habe nochmal nachgedacht, ein paar Dinge umgestellt und heraus kommt das hier: ihr benötigt nur noch die vertikale Auflösung (also z.B. 1440 bei WQHD oder UWQHD) und die Bildwiederholrate.
Habe das als Google doc hochgeladen, ihr könnt euch also auch eine Kopie machen oder es als xlsx runterladen:
https://docs.google.com/spreadsheets/d/1dKyEvXzjnGz0_SsR7xGn-c5meqkApVwBUEkcyEGcrx4/edit?usp=sharing
Ich hoffe damit verringert sich das Herumprobieren, denn so habt ihr den ungefähr richtigen Wert, egal was vorher für blank / total lines angegeben waren.
An vielen Stellen habe ich erwähnt, wie sich das lösen lässt, aber einerseits wird es nicht immer verstanden und andererseits wird die Frage immer wieder gestellt. Daher versuche ich hier eine Anlaufstelle inkl. Lösung anzubieten, auf die ggf. verlinkt werden kann.
Vorweg: Meine Erfahrungen und die hier vorgestellte Lösung behandelt kein Multi-Monitor. Bei Multi-Monitor gibt es zahllose Kombinationsmöglichkeiten und da müsst ihr selbst rauskriegen, ob sich eine Lösung finden lässt.
Genutzte Hardware
Ich habe alles mit meinem 3440x1440 @100Hz Samsung C34 Monitor getestet (auch mal mit 2560x1440), sowie mit meinem 4k 120Hz LG B9 Fernseher. Auf beiden Geräten kann ich alle denkbaren Auflösungen und Bildwiederholraten mit niedrigem VRAM idle zum Laufen bekommen. Nur 4k 120Hz noch nicht mangels HDMI 2.1 an meiner Karte.
Angeschlossen über DisplayPort bzw. HDMI 2.0 an meine Radeon 5700 XT. Soweit ich sehe, sollte alles auch für die 6000er Reihe gelten. Vega hingegen hatte HBM-Speicher, für die Karten gilt das nicht.
Was ist überhaupt das Problem?
Das Problem ist eine zu geringe "Blanking Time". Das lässt sich belegen.
Der Rest sind Spekulationen, ich kann kurz versuchen zu umreißen, was ich mir zusammenreime: Die Blanking Time ist "tote Zeit", in der dem Display keine neuen anzuzeigenden Informationen mitgeteilt werden. Das wurde zu Zeiten der CRT-Monitore eingeführt, da der Elektronenstrahl einen Moment brauchte, um zurück zum "Anfang" des Bildes zu gelangen. Das gibt es immer noch in den heutigen Videosignalen.
Offenbar benötigen unsere aktuellen Grafikkarten eine gewisse "Totzeit" / Pause / Blanking Time, damit der Video-RAM heruntertaktet. Möglicherweise würde sonst das Bild instabil werden oder weiß der Geier. Da der Takt bestimmt, wie viele Daten übertragen werden können, reicht mit dem 200MHz idle die Bandbreite ab einem bestimmten Punkt nicht mehr aus - außer die Karte hat noch etwas "Zusatzzeit" für die Übertragung, nämlich die Blanking Time. Die benötigte Pause hängt von der verwendeten Auflösung, sowie der Bildwiederholrate ab. Je höher beide Werte, desto mehr Daten und eine desto längere Pause wird benötigt.
Die Blanking Time wird vom Monitorhersteller in den "Auflösungen" hinterlegt. Ich schreibe "Auflösungen" in Anführungszeichen, da z.B. 2560x1440 in 144 Hz eine andere Auflösung für das System ist als 2560x1440 in 60 Hz. Es wird eine andere Konfiguration verwendet. Daher können sich neben der unterschiedlichen benötigten Bandbreite auch die voreingestellte Blanking Time unterscheiden, wenn ihr die Hz umstellt - und plötzlich wird es möglich, dass der VRAM bei einer niedrigeren Auflösung nicht mehr heruntertaktet, obwohl er es bei einer höheren noch tat.
Warum tragen Monitorhersteller eine "zu niedrige" Blanking Time ein, wenn der Monitor auch mit einer höheren funktioniert?
Gute Frage! Ich weiß es (mal wieder) nicht genau. Vermutung: Mit erhöhter Blanking Time erhöht sich auch der "Pixel clock". Je nach Anschlussart und Standard, gibt es dort ein Maximum. Eventuell möchte der Monitorhersteller, dass Auflösung XY auch noch mit HDMI 1.3 funktioniert und streicht deshalb so viel wie möglich aus dem Signal zusammen. Solange ihr ein halbwegs modernes DisplayPort oder HDMI nutzt, kann euch das aber natürlich egal sein.
Lösung
Zunächst einmal der Beweis, dass es funktioniert. Test durchgeführt mit 3440x1440 @100 Hz.
Der einzige Unterschied: 5 Linien mehr bei "Blanking vertical".
Schritt-für-Schritt, damit ihr das auch hinbekommt
- Wenn ihr es noch nicht habt, besorgt euch das CustomResolutionUtility by ToastyX, kurz "CRU". Im AMD-Treiber könnt ihr zwar an den Auflösungen schrauben, leider reichen die Möglichkeiten dort aber nicht aus.
- Ihr benötigt die "CRU.exe" sowie später noch die "restart64.exe". Öffnet CRU.exe und wählt aus der oberen Liste den gewünschten Monitor aus. Den mit dem "active"-Flag, wenn er mehrmals vorkommt (die Duplikate könnt ihr übrigens löschen, das löst das Problem, wenn euer Monitor manchmal das Signal beim Wechsel zwischen Programmen verliert).
- Eure Hauptauflösung wird wahrscheinlich eine "Detailed resolution" haben. Sucht sie dort heraus und klickt auf edit. In dem sich öffnenden Fenster seht ihr alle benötigten Informationen und könnt zudem die blanking lines ändern, wenn ihr den Radiobutton betätigt. Hier alle zu klickenden Stellen markiert:
- Nun das Wichtigste: Die Berechnung, wie viele Blanking lines ihr braucht. * UPDATE siehe ganz unten im Post eine genauere Formel * Durch Ausprobieren hat sich herausgestellt, dass mit 200MHz am VRAM ca. 460 Mikrosekunden Blanking Time benötigt werden. Wie vielen Linien das entspricht, berechnet ihr so:
BlankingLines = RefreshRate * TotalVerticalLines * BlankingTime
Die Refresh Rate steht in CRU unten, oder ihr wisst sie eh. Die Total Vertical Lines stehen in CRU, direkt unter den Vertical Blanking Lines. Die BlankingTime ist wie erwähnt etwa 0,00046 Sekunden.
Kann man sich auch kurz ins Excel packen:
Ich brauche also ca. 70 blanking lines. Passt, siehe Beweis-Screenshots oben. Tatsächlich funktioniert es auch mit 69 bei mir, bei einer meiner versuchten Settings brauchte ich hingegen mal ein klein wenig mehr. Wenn es nicht gleich läuft, probiert da etwas herum. - Habt ihr euren Wert gefunden, tragt ihn ein und bestätigt mit OK, ihr könnt die CRU.exe nun schließen.
- Um die Änderung anzuwenden, muss der Treiber neugestartet werden. Dafür könnt ihr den PC neustarten oder ihr führt einfach "restart64.exe" von CRU aus und wählt dort den Treiberneustart.
- Nachschauen, ob es funktioniert hat. Wenn der VRAM noch hochtaktet, erhöht den eingestellten Wert für die Blanking Times leicht.
- Fertig!
- Optional: Ihr könnt in CRU das Profil exportieren, wenn falls sich mal etwas zurücksetzt.
Potenzielle Probleme / Nachteile
Nachteile nach einmal gefundener Konfiguration sind mir
- Der Monitor resettet sich, anschließend sieht man in CRU, dass unsere geänderten Settings nun ein inaktives Duplikat des Bildschirms sind und die defaults geladen wurden. Kein Problem, nochmal mit einem anderen Wert probieren.
- Bei extrem hohen Werten (ich habe meine 70 spaßeshalber einmal auf 140 verdoppelt bei Multi-Monitor-Experimenten) hatte ich mal plötzlich ein "zerwürfeltes" Bild. Mit einem zweiten Monitor ist es natürlich einfach wieder zu fixen (alte Werte wiederherstellen, ggf. neustarten). Wenn ihr keinen habt, versucht "resetAll.exe" im CRU-Verzeichnis auszuführen, um die defaults wiederherzustellen.
- Nach dem Standby wacht der Monitor nicht mehr auf, bis man Win+Strg+Shift+B drückt.
Viel Erfolg und ich hoffe geholfen zu haben!
UPDATE: Die Formel hat einen kleinen Fehler, da sich die Zahl der "Total Lines" ändert, je nachdem wie viele Blank Lines ihr angebt, wie völlig richtig von @Murd0c1312 berichtet. Ich habe nochmal nachgedacht, ein paar Dinge umgestellt und heraus kommt das hier: ihr benötigt nur noch die vertikale Auflösung (also z.B. 1440 bei WQHD oder UWQHD) und die Bildwiederholrate.
Habe das als Google doc hochgeladen, ihr könnt euch also auch eine Kopie machen oder es als xlsx runterladen:
https://docs.google.com/spreadsheets/d/1dKyEvXzjnGz0_SsR7xGn-c5meqkApVwBUEkcyEGcrx4/edit?usp=sharing
Ich hoffe damit verringert sich das Herumprobieren, denn so habt ihr den ungefähr richtigen Wert, egal was vorher für blank / total lines angegeben waren.
Zuletzt bearbeitet: