Bądź: Wyszukaj na stronie z użyciem Google
reklama:

poniedziałek, 16 listopada 2009

Obniżanie napięcia procesora z TurionPowerControl

Autor: , 18:46, poniedziałek, 16 listopada 2009


Rok temu kupiłem notebook hp 6735s z Athlonem QL-60. Jak powszechnie wiadomo, procesory AMD są zwykle cieplejsze od procesorów Intela. Chciałem spróbować obniżyć temperaturę procesora zmniejszając napięcie jakie jest na niego podawane. Niestety QL-60 należy do nowej rodziny procesorów o nazwie "Griffin", która różni się architekturą od poprzednich generacji, przez co wszystkie narzędzia działające dla starszych procesorów nie działały.

Autorem wpisu jest Łukasz Klich.

Minął rok.

Udało mi się wkońcu znaleźć narzędzie, które działa z "Griffinami" i to na Linuksie. Autorem jest blackshard, program nazywa się TurionPowerControl, a tutaj jest wątek, który jest chyba jedynym miejscem skąd można go pobrać.

Jak już pobierzemy źródła i uda nam się je skompilować tak jak jest to pokazane w readme.txt:

c++ TurionPowerControl.cpp Processor.cpp cpuPrimitives.cpp -o TurionPowerControl

Powinniśmy się upewnić czy załadowane są odpowiednie potrzebne do działania moduły jądra:

lsmod | grep -e msr -e cpuid

Jeśli wyświetli nam się coś takiego:

cpuid 4008 0

msr 4008 0


to znaczy, że wszystko jest gotowe do pracy. Jeśli nie powinniśmy w zależności od brakującego modułu najpierw go zainstalować, a następnie załadować:

sudo modprobe msr

albo:
sudo modprobe cpuid

Zakładając, że wszystko już działa możemy zacząć obniżać napięcie. Najpierw jednak należy parę rzeczy wyjaśnić. Procesory mają tak zwane p-states, czyli stany pomiędzy którymi procesor może się przełączać w ramach oszczędzania energii, z czego korzysta np. powernowd. Dla każdego z tych stanów (u mnie są tylko 2) określona jest częstotliwość taktowania procesora, a także napięcie. Napięcie to jest określone dla całej serii procesorów dodatkowo z jakimś zapasem, tak żeby procesor zachowywał się stabilnie, co oznacza, że dla pojedynczego procesora stabilne napięcie może być trochę niższe.

Wracając do samego programu. Uruchomienie bez żadnej opcji wyświetli stosowny opis wszystkich dostępnych opcji. Aby dowiedzieć się jak ustawione mamy poszczególne stany:

sudo ./TurionPowerControl -l

W moim wypadku odpowiedź wygląda tak:

Turion Power States Optimization and Control – by blackshard – v0.12
Detected CPU:
Family: 0xf Model: 0×3 Stepping: 0×1
Extended Family: 0×11 Extended Model: 0×3
Package Type: 0×2 BrandId: 0×13c0
Detected Physical Cores: 2
Processor has 3 Power Planes
Detected processor: Athlon X2 QL processor
Processor has 2 cores
Processor has 8 p-states
core 0 pstate 0 – En:1 VID:36 FID:11 DID:0 Freq:1900 VCore: 1.1000
core 0 pstate 1 – En:1 VID:48 FID:11 DID:1 Freq:950 VCore: 0.9500
core 0 pstate 2 – En:0 VID:48 FID:11 DID:1 Freq:950 VCore: 0.9500
core 0 pstate 3 – En:0 VID:0 FID:0 DID:0 Freq:800 VCore: 1.5500
core 0 pstate 4 – En:0 VID:0 FID:0 DID:0 Freq:800 VCore: 1.5500
core 0 pstate 5 – En:0 VID:0 FID:0 DID:0 Freq:800 VCore: 1.5500
core 0 pstate 6 – En:0 VID:28 FID:11 DID:1 Freq:950 VCore: 1.2000
core 0 pstate 7 – En:0 VID:28 FID:11 DID:1 Freq:950 VCore: 1.2000
core 1 pstate 0 – En:1 VID:36 FID:11 DID:0 Freq:1900 VCore: 1.1000
core 1 pstate 1 – En:1 VID:48 FID:11 DID:1 Freq:950 VCore: 0.9500
core 1 pstate 2 – En:0 VID:48 FID:11 DID:1 Freq:950 VCore: 0.9500
core 1 pstate 3 – En:0 VID:0 FID:0 DID:0 Freq:800 VCore: 1.5500
core 1 pstate 4 – En:0 VID:0 FID:0 DID:0 Freq:800 VCore: 1.5500
core 1 pstate 5 – En:0 VID:0 FID:0 DID:0 Freq:800 VCore: 1.5500
core 1 pstate 6 – En:0 VID:28 FID:11 DID:1 Freq:950 VCore: 1.2000
core 1 pstate 7 – En:0 VID:28 FID:11 DID:1 Freq:950 VCore: 1.2000
Processor Maximum PState: 1
Processor Startup PState: 2
Minimum allowed VID: 52 (0.900v) – Maximum allowed VID 28 (1.200v)
Processor AltVID: 48 (0.950v)
Processor Northbridge VID: 52 (0.900v)
SMAF7 is disabled; processor is using LMM Configuration Registers for Power Management
DID to apply when in C1E state: 0
Voltage Regulator Slamming time register: 2
Voltage Regulator AltVID Slamming time register: 2
Voltage Regulator Step Up Ramp Time: 0
Voltage Regulator Step Down Ramp Time: 0
Done!

Interesują nas tylko informacje dotyczące włączonych stanów pstate oraz granicznych wartości VID:

core 0 pstate 0 – En:1 VID:36 FID:11 DID:0 Freq:1900 VCore: 1.1000
core 0 pstate 1 – En:1 VID:48 FID:11 DID:1 Freq:950 VCore: 0.9500
core 1 pstate 0 – En:1 VID:36 FID:11 DID:0 Freq:1900 VCore: 1.1000
core 1 pstate 1 – En:1 VID:48 FID:11 DID:1 Freq:950 VCore: 0.9500
Minimum allowed VID: 52 (0.900v) – Maximum allowed VID 28 (1.200v)

VCore to interesująca nas obecna wartość napięcia procesora. Poprzez współczynnik VID możemy zmieniać to napięcie zgodnie ze wzorem:

VCore = 1,55-(VID*0.0125) V

Poprzez stopniowe podnoszenie VID możemy obniżać napięcie. Dla przykładu obniże napięcie na moim procesorze dla obu rdzeni dla zerowego stanu o 0.0125 V nie ruszając zupełnie częstotliwości pracy:

sudo ./TurionPowerControl -pallc 0 37 0 11

Po każdym obniżeniu należy przetestować czy komputer zachowuję się stabilnie i obniżyć raz jeszcze… i raz jeszcze…

Jeśli chciałbyś zmienić również częstotliwość (w góre lub w dół):

freq = (100*(FID+8))/(2^DID) Hz

Życzę miłego testowania

Tagi:

blog comments powered by Disqus

Prześlij komentarz


Popularne posty

Etykiety