Co zrobić, żeby GeForce stał się bardziej energooszczędny?
Na początek zajmiemy się modyfikacją BIOS-u Keplera na przykładzie trzech referencyjnych konstrukcji: GeForce GTX 660 Ti, GTX 670 i GTX 680. Zapewne padnie pytanie o to, dlaczego tylko te. To dlatego, że jedynie wymienione modele mają standardowo ustawione napięcie w trybie 2D oraz pozostałych pośrednich na poziomie 0,987 V, co przy taktowaniu GPU na poziomie 324 MHz w trybie 2D jest wartością bardzo wysoką. Karty oparte na układzie GK106 (GeForce GTX 660, GTX 650 Ti, GTX 650 Ti BOOST) mają już obniżone napięcie w trybie 2D i pobierają zdecydowanie mniej energii, więc w zasadzie nie ma z czego schodzić. Przejdźmy do meritum – oto co będzie potrzebne do wykonania modyfikacji:
- HxD, wersja instalacyjna: HxD setup
- Nvflash
- Kepler Golden BIOS Editor
- GPU-Z
- Kepler BIOS Tweaker
HxD to dobry i darmowy hex editor, który posłuży do zmian wartości w pliku BIOS. KGB Editor to prosty edytor, w którym obsługa Keplera na razie raczkuje; działa z poziomu wiersza poleceń i użyjemy go jedynie do modyfikacji sumy kontrolnej zmodyfikowanego BIOS-u. Nvflash to oczywiście oficjalny flasher do kart Nvidii; na razie dostępna jest wyłącznie wersja DOS-owa, która obsługuje Keplery. Z tego względu, aby wgrać BIOS, będzie trzeba się zaopatrzyć najlepiej w bootowalnego pendrive'a (stosowne poradniki bez problemu znajdziecie w internecie). GPU-Z posłuży do zgrania BIOS-u z karty. Kepler BIOS Tweaker (KBT) to pełnoprawny edytor BIOS-ów, który zapewnia obsługę każdego modelu Keplera, nie licząc najnowszego Titana; pozwoli nam edytować BIOS drugą, dużo prostszą metodą.
Uwaga: redakcja nie bierze odpowiedzialności za skutki źle przeprowadzonej modyfikacji!
By zacząć całą zabawę, musimy mieć co zmodyfikować. BIOS z karty zgramy programem GPU-Z, tak jak na zrzucie. Warto zachować kopię zapasową BIOS-u.
Ponieważ pojawił się w zasadzie pełnoprawny edytor BIOS-ów z obsługą Keplerów, zastosowaliśmy także drugą, dużo prostszą metodę obniżenia napięcia w trybie 2D. Posłuży nam do tego program Kepler BIOS Tweaker w wersji 1.25. Ów edytor obsługuje każdy model Keplera.
Edycja BIOS-u jest trywialnie prosta: otwieramy jego plik, który wcześniej zgraliśmy za pomocą GPU-Z, następnie wchodzimy w zakładkę Voltages i zmieniamy napięcia tak jak na zrzucie.
Zapisujemy BIOS przykładowo jako mod.rom i na tym kończymy modyfikacje.
W przypadku trybu pośredniego nie ma sensu zmniejszać napięcia poniżej 887 mV ze względu na to, że sterownik i tak nie poda napięcia mniejszego niż właśnie 0,887 V. Ostatnią czynnością, jaka pozostała do zrobienia, jest wgranie zmodyfikowanego BIOS-u.
Wpisujemy następujące polecenie, już pod DOS-em:
Nvflash -4 -5 -6 mod.rom
Jeżeli BIOS jest zabezpieczony przed zapisem, należy usunąć zabezpieczenie. Służy do tego następujące polecenie:
Nvflash --protectoff
Po modyfikacji napięcie w trybie 2D i pośrednich zostanie zredukowane z 0,987 V do 0,825 V. Napięcie dla pierwszego pośredniego trybu zaraz po 3D nie zostało zmienione, ponieważ w niektórych przypadkach może powodować delikatne zmniejszenie potencjału podkręcania karty. Na jaką redukcję poboru mocy możemy liczyć? Wartość ta jest mocno uzależniona od zasilacza i jego sprawności przy niskich obciążeniach, ale pobór energii powinien spaść o mniej więcej 10% w trybie 2D.
Na platformie z kartą Asus GeForce 680GTX DC2 i 620-watowym zasilaczem Antec HCG pobór energii spadł z 66 W do 61 W. Może to i niewiele, ale ten zasilacz nie grzeszy sprawnością przy tak niskim poborze energii, stąd taka, a nie inna różnica. W trybie pośrednim wyraźnie się powiększy.
Ręczna edycja BIOS-u
By zacząć całą zabawę, musimy mieć co zmodyfikować. BIOS z karty zgramy programem GPU-Z, tak jak opisaliśmy to na poprzedniej stronie. Warto zachować kopię zapasową BIOS-u.
Następnie otwieramy zgrany BIOS za pomocą programu HxD. Trzy poniższe zrzuty ekranu pokazują, które wartości należy zmienić i w jaki sposób.
- GeForce GTX 680
- GeForce GTX 670
- GeForce GTX 660 Ti
Uwaga!
W przypadku kart niereferencyjnych wartości podlegające modyfikacji mogą się znajdować pod innym adresem offset, ale nie będzie większego problemu z ich znalezieniem. Na ogół są tylko w niewielkim stopniu przesunięte względem referencyjnych BIOS-ów. Dla ułatwienia zaznaczyliśmy jasnoniebieskim kolorem początki prawidłowych wpisów przeznaczonych do zmiany, by nikt przypadkiem nie zmodyfikował innego trybu.
Po wprowadzeniu stosownych zmian zapisujemy plik, na przykład jako mod.rom.
Teraz czas na modyfikację sumy kontrolnej. Jak wspominaliśmy, posłuży nam do tego KGB Editor, który otwieramy z wiersza poleceń. Następnie wpisujemy:
kgb mod.rom fix_checksum
Program błyskawicznie poprawi sumę kontrolną i powinien o tym poinformować. Na tym kończą się modyfikacje i plik jest gotowy do wgrania.
Wpisujemy następujące polecenie, już pod DOS-em:
Nvflash -4 -5 -6 mod.rom
Jeżeli BIOS jest zabezpieczony przed zapisem, należy usunąć zabezpieczenie za pomocą tego oto polecenia:
Nvflash --protectoff
Mniejszy pobór energii, np. podczas oglądania filmów
A teraz czas na drugą część poradnika, czyli programowe wymuszenie dowolnego trybu pracy za pomocą programu Nvidia Inspector - Link. Zanim zaczniemy właściwy opis, musimy odpowiedzieć na pytanie o to, czemu ma to służyć. Oczywiście – zmniejszeniu poboru energii! Zmuszają do tego źle działające mechanizmy zarządzania jej zużyciem w sterownikach do kart z serii GeForce. Poniżej znajdziecie zrzuty ekranowe z programu MSI Afterburner, pokazujące działanie funkcji zarządzania energią podczas odtwarzania materiału 1080p z YouTube'a (dwa przykłady) oraz materiału w formacie H.264 i rozdzielczości 1080p w BESTplayerze (tryb evr) i podczas wyświetlania zdjęcia w przeglądarce.
- Film na YouTube
- Film na YouTube, 2. przykład
- Film H.264
Działanie tych funkcji zostało sprawdzone z użyciem sterownika 310.90 WHQL w dwóch systemach operacyjnych: Windows 7 w wersjach 32- i 64-bitowej. W obu przypadkach jest takie samo. Użyta przeglądarka to Mozilla Firefox 18.0 z wtyczką Adobe Flash 11.5.502.146. Akceleracja GPU była wyłączona; po jej włączeniu działanie mechanizmu się nie zmienia.
Jeśli chodzi o YouTube, problem zaczyna się od rozdzielczości 720p, ale przy przewijaniu już wideo 360p wprowadza kartę w pełny tryb 3D, co oznacza wysoki pobór energii. Jak widać na powyższych zrzutach, materiał 1080p po dłuższym czasie potrafi przełączyć kartę na stałe w pełny tryb 3D, co powoduje niemalże trzykrotny wzrost ilości pobieranej przez nią energii.
Wyświetlanie przykładowo materiału w formacie H.264 1080p powoduje cykliczne przechodzenie z trybu 2D do pośrednich lub pełnego 3D, a następnie powrót do 2D. Zdecydowanie nie jest to normalne zjawisko. Sytuacja taka, o dziwo, nie zawsze występuje; czasem wystarczy przewinąć materiał raz czy dwa, aby problem się pojawił. W przypadku plików .mkv oprogramowanie zachowuje się jeszcze inaczej: kilkukrotne przewinięcie powoduje wprowadzenie karty w tryb pośredni i dokładnie po 60 sek. wraca ona do trybu 2D. Za każdym razem efekt jest taki sam.
Włączenie windowsowej przeglądarki zdjęć także powoduje chwilowe wprowadzenie karty w pełny tryb 3D i również tego nie można uznać za prawidłowe działanie mechanizmu zarządzania energią. Należy dodać, że również część stron internetowych potrafi chwilowo wprowadzić kartę w pełny tryb 3D. Trochę dziwi to, że do tej pory Nvidia nie rozwiązała tego problemu. W każdym razie te funkcje obecnie działają źle.
Jest parę rozwiązań. Można nieco zmniejszyć „czułość” sterowników, by kilkuprocentowe skoki obciążenia GPU nie powodowały przechodzenia karty w tryb pośredni lub pełny 3D. Można także wprowadzić możliwość wymuszenia wybranego trybu pracy dla konkretnego programu z poziomu profili; zapewne to najlepszy sposób i raczej nie będzie trudny w zastosowaniu. Zespół zajmujący się w Nvidii sterownikami zdecydowanie powinien się przyjrzeć problemowi z bliska i możliwie szybko z nim uporać, bo występuje on już od bardzo dawna.
My proponujemy na razie ręczne wymuszenie wybranego trybu pracy za pomocą programu Nvidia Inspector. Tę metodę można zastosować do dowolnej karty Nvidii, która ma tryb 2D, włączając w to rozwiązania mobilne. W przypadku takich technik jak Optimus zabieg jest zbędny, ponieważ w każdej chwili możemy wyłączyć samodzielną kartę i użytkować jedynie układ graficzny zintegrowany w CPU. Ta metoda pozwala także cieszyć się trybem 2D w trakcie pracy wielomonitorowej. Karty z serii GeForce 5 i niższych w konfiguracji wielomonitorowej działały stale w pełnym trybie 3D, co było powodem wysokiego poboru energii.
Wymuszenie trybu 2D dla karty graficznej
Na początek opis tego, jak znaleźć oznaczenie trybu 2D właściwe dla użytego GPU. Uruchamiamy program i wchodzimy w zakładkę podkręcania. U góry pojawi się spis trybów pracy. Klikamy na niego tak jak na zrzucie:
Mamy spis trybów pracy :
Performance Level 0 - tryb 2D (P8) Performance Level 1 - tryb pośredni (P5) Performance Level 2 - tryb pośredni(P3) Performance Level 3 - tryb 3D (P0)
Co ciekawe, są to tylko te tryby, które ma BIOS. Począwszy od sterowników z serii 310.xx Nvidia przejęła kontrolę (nvapi.dll) nad trybami pośrednimi (wzrost taktowania) i wprowadziła dodatkowe, które uaktywniają się w pewnych momentach. Nawet gdyby ktoś się pokusił o wyedytowanie parametrów taktowania z poziomu BIOS-u, to i tak nic by to nie wniosło, ponieważ sterownik przejmuje kontrolę. Czemu ma to służyć? Trudno powiedzieć, na pewno nie rozwiązuje ani trochę problemu źle działającego mechanizmu zarządzania energią. Wracając do sedna: podany spis trybów pracy dotyczy Keplera, w przypadku innych GPU może wyglądać nieco inaczej, ale nas interesuje wymuszenie parametru performance level 0, czyli trybu 2D (w każdym układzie graficznym performance level 0 oznacza tryb 2D). W nawiasie znajduje się numer P8 i ten numer będzie nam potrzebny, ponieważ w przypadku Keplera dotyczy trybu 2D. Teraz pozostaje nam utworzyć skrót do programu (lub skróty).
W skrócie wymuszającym tryb 2D należy dopisać do ścieżki:
-forcepstate:0,8
Przykład ścieżki:
X:\nvidiaInspector\nvidiaInspector.exe -forcepstate:0,8
W skrócie przywracającym sterownikowi kontrolę nad działaniem karty należy dopisać do ścieżki:
-forcepstate:0,16
Przykład ścieżki:
X:\nvidiaInspector\nvidiaInspector.exe -forcepstate:0,16
Kontrolę w przypadku wszystkich GPU przywraca się tak samo.
Tak wykonane skróty możemy przykładowo umieścić na pulpicie i w razie potrzeby wymusić tryb 2D lub inny dowolny, ewentualnie przywrócić standardowe ustawienia sterownika. Aby zautomatyzować proces wymuszania trybu 2D podczas uruchamiania systemu, należy skrót umieścić w folderze startowym. Ścieżka do folderu startowego wygląda tak:
X:\Users\Name\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup