Jak funguje speedstep/cpufreq/...?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Středa Únor 9 11:30:31 CET 2005


On Mon, 7 Feb 2005, Jan Kasprzak wrote:

> 	Situace: mam laptop Asus M6R (http://www.fi.muni.cz/~kas/m6r/)
> s procesorem Pentium M; chipset neni Intel Centrino, ale ATI IXP.
> Jadro (p4-clockmod) mne pri bootu nadava, ze naslo Pentium M, a ze misto
> p4-clockmod mam pouzit speedstep-centrino, ktere pry umi navic menit i
> napeti na procesoru, nejen frekvenci. Nicmene speedstep-centrino
> mam zakompilovane v jadre a zrejme se nijak neprojevilo (rekl bych ze proto,
> ze nemam cipset od Intelu). Je speedstep-centrino zavisle jen na procesoru
> nebo i na cipsetu od Intelu?

Na Pentiu M je asi 6 pinu (VID), kterymi CPU ohlasuje, jake by od cipsetu 
chtelo dostavat napeti. Frekvenci hodin by si mohlo CPU menit bez vetsi 
spoluprace od cipsetu. Ale je mozne, ze je v danem pripade Enhanced 
SpeedStep proste zablokovany a nejde zapnout. I kdyz podle cpuinfo 
ho procesor inzeruje. Opravdu speedstep-centrino nevygenerovalo nikdy 
zadnou chybovou hlasku?

> 	Nicmene zda se, ze p4-clockmod funguje (aspon umi menit frekvence).
> Vicemene nahodou jsem ale narazil na dalsi vec: Kdyz necham mozne
> frekvence procesoru nacitat z ACPI, dostanu frekvence 600, 800, 1000, 1200
> a 1500 MHz. A skutecne pak frekvence jdou nastavovat pouze v techto krocich.
> Kdyz ale vypnu nacitani moznych frekvenci z ACPI, dostanu daleko sirsi
> skalu moznych frekvenci - od 175 MHz az po 1500 MHz celkem v sedmi krocich.

Zajimave. p4-clockmod pracuje tak, ze umoznuje menit frekvenci ve
zminenych asi sedmi krocich a to vicemene rovnomerne. Pouziva k tomu
"modulaci hodin", jak to nazyva Intel (MSR IA32_CLOCK_MODULATION,
Linuxove jadro tomu registru rika starsim nazvem IA32_THERM_CONTROL, viz 
nize).

speedstep-centrino bud bere informace z ACPI, nebo pouziva nadratovane
tabulky vzate z intelskeho datasheetu, kde jsou povolene kombinace napeti
a frekvence, pricemz jsou to vzdycky podobne hodnoty jako vyse uvedene a
nikdy v te tabulce neni cislo mensi nez 600 MHz. Do patricneho registru
(MSR_IA32_PERF_CTL) lze sice napsat leccos vcetne hodnot mimo inzerovane
meze, ale Intel to explicitne zakazuje a vubec kolem primeho pouziti toho
registru dost mlzi s tim, ze se to ma delat pres ACPI. Takze zkusit by se
to mohlo, ale jen na vlastni riziko. :)

(Kontrolni otazka: co znamena "nechat nacitat frekvence procesoru z ACPI"?
p4-clockmod a ACPI nic nenacita, tzn. to musi delat jiny modul.)

Takhle to vypada, ze Enhanced SpeedStep je horsi nez modulace hodin, ale
ono je to slozitejsi. E.S.S. opravdu meni frekvenci a napeti CPU, zatimco
modulace hodin vlastni frekvenci nemeni, pouze zpusobuje, ze obcas na tiky
hodin nereaguje. Ta druha funkce se (pokud je to povoleno) automaticky
aktivuje v pripade prehrati CPU (jak ostatne nasvedcuje i zmineny starsi
nazev registru) a jsem si temer jisty, ze je to presna ta funkce, co se
oznacuje jako "CPU throttling". Je ale otazka, nakolik to dokaze zmensit
spotrebu na CPU, ktery nic nedela.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."




Další informace o konferenci Linux