cpufreq拡張パッチ(AMD CPUの周波数、コア電圧変更)


最新パッチ作成日: 2012/06/03

このパッチは、cpufreqドライバの AMD CPU向けのコードである、powernow.c および hwpstate.c に対するものです。 このパッチを適用した cpufreq ドライバでは、device.hints にて設定することにより、CPU の各 P-state の周波数およびコア電圧をデフォルトの値から上下させることができるようになります。 devices.hints の書式を以下に示します。
hint.{drivername}.0.adjfreq=XXX
  全 P-state において、周波数をデフォルトから XXX MHz 変更する。
hint.{drivername}.0.adjfreqN=XXX
  P-state N において、周波数をデフォルトから XXX MHz 変更する。
hint.{drivername}.0.adjvcore=XXX
  全 P-state において、コア電圧をデフォルトから XXX mV 変更する。
hint.{drivername}.0.adjvcoreN=XXX
  P-state N において、コア電圧をデフォルトから XXX mV 変更する。

 *{drivername} は、"powernow" または "hwpstate" です。
周波数およびコア電圧には任意の値を設定できますが、CPUが設定可能な最も近い値に自動調整されます。 たとえば、"adjfreq=110"を指定したときに、CPUが設定可能な周波数が100MHz単位の場合、+100MHzとなります。

全体を ±○MHz, ±○mV という調整のほか、P-state ごとの調整ができるため、

といった事が可能です。(例2)


○ 例1

OS : FreeBSD 8.0-BETA2
H/W: HP ProLiant ML115 G5
CPU: Athlon 1640B (2.7GHz)

/boot/device.hints の設定
========================================================================
hint.powernow.0.adjvcore="-200"
  -> (全P-stateの)コア電圧をデフォルトから -200mV に設定する。
hint.powernow.0.adjfreq="-100"
  -> (全P-stateの)周波数をデフォルトから -100MHz に設定する。
hint.powernow.0.adjfreq0="0"
  -> P-state0 のみ周波数をデフォルトとする。
========================================================================

dmesg の結果
========================================================================
Copyright (c) 1992-2009 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 8.0-BETA2 #56: Sun Aug 23 10:34:37 JST 2009
    junichi@shiga.pn.junichi.org:/usr/src/sys/amd64/compile/SHIGA
WARNING: WITNESS option enabled, expect reduced performance.
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: AMD Athlon(tm) Processor 1640B (2700.02-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x70ff2  Stepping = 2
  Features=0x78bfbff
  Features2=0x2001
  AMD Features=0xea500800
  AMD Features2=0x11d
real memory  = 2147483648 (2048 MB)
avail memory = 4105457664 (3915 MB)
ACPI APIC Table: 
ioapic0  irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0:  on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
acpi0: reservation of fec00000, 1000 (3) failed
acpi0: reservation of fee00000, 1000 (3) failed
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x2008-0x200b on acpi0
acpi_hpet0:  iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 25000000 Hz quality 900
....
cpu0:  on acpi0
powernow0:  on cpu0
powernow0: P-state0: 2700MHz->2700MHz, 1350mV->1150mV
powernow0: P-state1: 2600MHz->2500MHz, 1325mV->1125mV
powernow0: P-state2: 2400MHz->2300MHz, 1275mV->1075mV
powernow0: P-state3: 2200MHz->2100MHz, 1225mV->1025mV
powernow0: P-state4: 2000MHz->1900MHz, 1175mV->975mV
powernow0: P-state5: 1800MHz->1700MHz, 1125mV->925mV
powernow0: P-state6: 1000MHz->900MHz, 1100mV->900mV
...
========================================================================

sysctl dev.cpu.0.freq_levels の結果
========================================================================
dev.cpu.0.freq_levels: 2700/50000 2500/46381 2300/39643 2100/33545 1900/28057 1700/23148 900/12249
========================================================================


○ 例2

OS:  FreeBSD 8.0-BETA3
H/W: HP ProLiant ML115 G5
CPU: Phenom 9850 Black Edition (2.5GHz)

/boot/device.hints の設定
========================================================================
hint.hwpstate.0.adjfreq0="200"
  -> P-state0 の周波数をデフォルトから +200MHz に設定する。(オーバークロック)
hint.hwpstate.0.adjfreq1="-350"
  -> P-state1 の周波数をデフォルトから -350MHz に設定する。
hint.hwpstate.0.adjvcore1="-175"
  -> P-state1 のコア電圧をデフォルトから -175mV に設定する。
========================================================================

dmesg の結果
========================================================================
Copyright (c) 1992-2009 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 8.0-BETA3 #0: Mon Aug 24 23:29:36 JST 2009
    junichi@shiga.pn.junichi.org:/usr/src/sys/amd64/compile/SHIGA
WARNING: WITNESS option enabled, expect reduced performance.
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: AMD Phenom(tm) 9850 Quad-Core Processor (2500.02-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x100f23  Stepping = 3
  Features=0x178bfbff
  Features2=0x802009
  AMD Features=0xee500800
  AMD Features2=0x7ff
  TSC: P-state invariant
real memory  = 5100273664 (4864 MB)
avail memory = 4105482240 (3915 MB)
ACPI APIC Table: 
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
 cpu2 (AP): APIC ID:  2
 cpu3 (AP): APIC ID:  3
ioapic0  irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0:  on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
acpi0: reservation of fec00000, 1000 (3) failed
acpi0: reservation of fee00000, 1000 (3) failed
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x2008-0x200b on acpi0
acpi_hpet0:  iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 25000000 Hz quality 900
...
cpu0:  on acpi0
hwpstate0: P-state0: 2500MHz->2700MHz, 1300mV->1300mV
hwpstate0: P-state1: 1250MHz->900MHz, 1050mV->875mV
hwpstate0:  on cpu0
cpu1:  on acpi0
cpu2:  on acpi0
cpu3:  on acpi0
...
========================================================================

sysctl dev.cpu.0.freq_levels の結果
========================================================================
dev.cpu.0.freq_levels: 2700/30940 900/1848
========================================================================

[トップページに戻る] [利用上の注意]
Powered by FreeBSD 佐藤 淳一
junichi@junichi.org