W przypadku tych kart możemy również w miarę dowolnie modyfikować ich konfigurację, z tą tylko różnicą, że edytory BIOS-ów są znacznie bardziej skomplikowane z racji ewolucji w mechanizmach PowerTune i ZeroCore wprowadzanych przez AMD w nowymi generacjami produktów. W tym przypadku mamy do czynienia ze zmianą z 3 lub 4 stanów zasilania w Tahiti (desktop, low 3D, performance 3D + ewentualnie Boost) na 8 stanów, w których napięcie rdzenia jest determinowane przez jego częstotliwość i jest ustawiane na bieżąco, stosownie do obciążenia. Powoduje to skomplikowanie całej operacji – zmianę napięcia rdzenia trzeba wprowadzić w kilku tabelach naraz.
Jak zauważyliśmy w poprzedniej części, karty te cierpią na chorobliwą prądożerność, czemu można zaradzić przez modyfikację wartości TDP (Total Design Power – całkowite zużycie energii przez układ) i TDC (Total Design Current – całkowity ładunek elektryczny, wyrażany jako natężenie prądu w amperach), co połączone z późniejszym zmianami power limitu już na poziomie sterownika pozwoli na obniżenie poboru energii z 250 W do okolic 150-160 W w przypadku 390-ki, a dla Fury nawet do 130 W. Dodatkowo warto zauważyć, że z racji wykorzystania 512-bitowej magistrali pamięci 290/390-ki nie są tak pokrzywdzone jak Tahiti przy podkręcaniu pamięci i strata na wydajności jest na granicy błędu pomiarowego. Fury z kolei z ich nowatorskimi pamięciami HBM zyskują nieznacznie na modyfikacji strapów, jednocześnie nie będąc narażone na spadki wydajności po OC.
... karty te cierpią na chorobliwą prądożerność, czemu można zaradzić przez modyfikację wartości TDP i TDC
Kompletny poradnik odnośnie tego, co i w jaki sposób można zmienić w BIOS-ie 290/390-ki jest na forum overclock.net (https://www.overclock.net/t/1561372/hawaii-bios-editing-290-290x-295x2-390-390x - po angielsku), tutaj zamieszczę jedynie skróconą wersję poświęconą dostrajaniu napięć i limitów sekcji zasilania. Procedura dla Fury jest podobna i opiera się na podobnych założeniu z tą różnicą, że edytor BIOS-u jest nieco inny (prostszy):
- Dla 290/390 – Hawaii BIOS Editor - https://github.com/OneB1t/HawaiiBiosReader/blob/a7792d5da69b9a7794cc3b4e4e87164e7f81a07a/ReleaseBin/HawaiiBiosReader.exe (ostatni build jest identyfikowany jako wirus, więc zamieszczam link do poprzedniego)
- Dla Fury/Nano – Fiji BIOS Editor - https://drive.google.com/file/d/0B6ybetYJ0wwMWWo1aklZRXBPNGM/view
Jak zwykle, jedyna słuszna metoda testowania to zmiana pojedynczego parametru, flash i sprawdzenie stabilności. Przystąpmy więc do dzieła biorąc pod nóż model PowerColor R9 390 PCS+. Po ściągnięciu BIOS-u i otwarciu go dostajemy podsumowanie:
Najbardziej interesujące dla nas są zakładki PowerPlay i Limit Tables. Zakładka PowerPlay zawiera informacje o limitach sekcji zasilania (TDP/TDC/Power limit) oraz główne ustawienia zegarów GPU/VRAM dla każdego z ośmiu stanów zasilania. Wszystkie zmiany w tabeli napięć muszą zostać zreplikowane do tabel na zakładce Limit Tables, w przeciwnym wypadku karta nie będzie działać poprawnie pod obciążeniem. Z racji jednak tego, że karty na rdzeniu Hawaii/Grenada mają wystarczającą wydajność podsystemu pamięci (dzięki 512-bitowej magistrali), tak naprawdę potrzebujemy się skoncentrować jedynie na rdzeniu GPU:
Wyjaśnienia wymaga jeszcze format zapisu liczb reprezentujących wartości napięcia w poszczególnych stanach energetycznych. Jest to tak zwana wartość EVV (Electronic Voltage Value), która zależy ściśle od jakości układu (ASIC Quality - do sprawdzenia np. w GPU-Z). Im wyższa wartość ASIC Quality, tym niższe napięcia karta przyjmuje, a dokładne wartości napięć w każdym ze stanów energetycznych można sprawdzić w AIDA64. Dodatkowym czynnikiem komplikującym pracę jest fakt, że niektóre BIOS-y mają zaszyty offset, który powoduje zmianę efektywnego napięcia o stałą wartość (w górę lub w dół). Wielkość tego przesunięcia można sprawdzić na jeden z dwóch sposobów:
- Jeżeli offset dotyczy wyłącznie napięcia rdzenia (VDDC), to będzie widoczny po instalacji karty w Afterburnerze
- Jeżeli po instalacji w Afterburnerze jednak nie widać offsetu, to albo go nie ma, albo dotyczy obydwu napięć rdzenia i Aux 0.95 (VDDC i VDDCI). Weryfikujemy to poprzez porównanie napięcia w trakcie spoczynku z tym z BIOS-u odpowiadającym stanowi energetycznemu DPM 0 – różnica między napięciem odczytanym a BIOS-owym to wartość offsetu.
Należy jeszcze tutaj pamiętać o dwóch konwencjach odnośnie zapisu napięć – kontroler napięć ustawia napięcia zgodne z formatem SVI2, który z grubsza polega na zaokrągleniu wartości do 0.00625 V (6.25 mV), a zapisywane wartości są bez kropki dziesiętnej i ostatnich dwóch cyfr (np. 0.85625 V jest reprezentowane przez 856, a 1.07500 V – 1075). Poniżej pełna lista napięć SVI2:
Po tym długim wprowadzeniu wróćmy do modyfikacji BIOS-u na naszej karcie. Sama modyfikacja polega na zastąpieniu napięć EVV zaczynających się na 65 wartościami rzeczywistych napięć. Możemy do tego podejść dwojako – albo odczytać wielkości napięć, znaleźć offset i na tej podstawie ustawić nowe wartości, albo odczytać wartości z GPU-Z/Afterburnera pod obciążeniem i takie wartości wstawić do nowego BIOS-u. Istotne jest, aby zachować zasadę, że napięcie i zegar rosną przy przechodzeniu od niższego do wyższego stanu energetycznego.
Istotne jest, aby zachować zasadę, że napięcie i zegar rosną przy przechodzeniu od niższego do wyższego stanu energetycznego.
Dla mojej testowej karty napięcie rdzenia pod obciążeniem wynosi 1.1875 V, ale mimo to karta stabilnie pracuje z offsetem -100 mV w Afterburnerze. Dlatego mogę przygotować następujący zestaw napięć, który pozwoli mi na dalsze testy (być może będę w stanie zejść jeszcze niżej z napięciem):
Tak przygotowany BIOS wgrywamy do karty i przystępujemy do testowania (w przypadku 290/390 flashowanie BIOS-u trwa nieznośnie długo, czasem nawet ok. 2 minut). W tym wypadku zaobserwowałem obniżenie napięcia z 1.075 V do 0.96 V, co przekłada się na prawie 20 W mniej poboru prądu w gniazdku (ze 180 na 160 W).
Z takimi informacjami mogę przystąpić do modyfikacji TDP – wartość VDDC Current Out jest ograniczana od góry przez TDC, a VDDC Power In przez TDP. Zamieńmy więc wartości 208 W na 160 W, a TDC limit na 145 A:
Flashujemy kartę nowym BIOS-em i przystępujemy do testu – zmienione TDP i power limit skutkują tym, że ustawienie -35% dla power limitu w AB nie jest już dłużej stabilne i powoduje throttling, podniesienie do -25% przywraca stabliną pracę. Odczyt z gniazdka wskazuje, że karta pobiera pomiędzy 145 a 150 W.
Tak przygotowana 390 może udać się do kopalni i stabilnie kopać przez najbliższe miesiące. Obniżenie napięć i temperatury pracy pozwoli uniknąć takich niespodzianek (R9 390 od Vertex3D – referencyjna karta z autorskim chłodzeniem, po kopaniu przez całe upalne lato):
Przejdźmy zatem do Fury; pełny poradnik po angielsku jest również dostępny na forum overclock.net (https://www.overclock.net/t/1592384/fiji-bios-editing-fury-fury-x-nano-radeon-pro-duo). Zasady działania są tu podobne, natomiast sam edytor jest dużo prostszy niż ten dla 290/390:
W przypadku regulacji napięcia dla poszczególnych stanów energetycznych udajemy się na zakładkę PowerPlay i postępujemy podobnie jak na 390. Ten BIOS pochodzi z modelu Sapphire R9 Fury Nitro, a ta karta ustawia napięcie 1.2187 V w stanie DPM7, 1.15 w DPM6 i 1.125 w DPM5. Jednocześnie w drodze testu zdążyłem już sprawdzić, że karta działa stabilnie przy offsecie -100 mV ustawionym w Afterburnerze, mogę więc zmienić ustawienia następująco:
Efekt tej zmiany jest co najmniej zadowalający:
Sama karta zadowala się poborem mocy na poziomie 135 W i przy takich ustawieniach koparka testowa składająca się z Fury i 390-ki pobiera z gniazdka 340 W i produkuje 800 sol/s ZCash, co daje prawie 2.5 sol/W. Alternatywnie można na niej zrobić 54 MH/s Ethereum, co daje 0.16 MH/W z całej koparki.
Pokaż / Dodaj komentarze do: Mining kryptowalut - część 3/4 - optymalizacja