Beispielkonfiguration - AMD Geode NX 1750 M811 picoPSU

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU als stromsparender VDR

Die Kombination des stromsparenden Prozessors AMD Geode NX 1750 in Verbindung mit dem Motherboard PC-Chips M811 hat sich unter VDR Nutzern zu einem kleinen Geheimtip entwickelt. Im vdrprotal gibt es mittlerweile einige Threads zu diesem Thema. Wenn ich es recht überblicke, brachte fabo mit seinem Posting AMD Geode NX 1750 - Erste Erfahrungen den Stein in's Rollen.

Ich möchte an dieser Stelle einmal die wichtigsten Informationen in Form eines HOWTOs zusammenfassen. Der Schwerpunkt liegt auf den Stromsparmöglichkeiten dieses Systems.

Die Softwareanpassungen basieren auf einem Debian 3.1 mit jeweils aktuellem Kernel von kernel.org.

Vorab Danke an alle Beteiligten, die geholfen haben, daß dieses HOWTO erstellt werden konnte, und speziell an alex-zero für das Korrekturlesen.

CPU FSB und Vcore einstellen

Das M811 bietet per Jumper (JP2) und BIOS Einstellung die Möglichkeit, den Geode mit 100 oder 133MHz FSB zu betreiben. Der Multiplikator ist nicht einstellbar, was nicht weiter tragisch ist, da die Frequenz der CPU auch im laufenden Betrieb gesenkt werden kann. Dazu später mehr. In der Standardeinstellung läuft der Geode mit 10.5x133MHz=1400MHz. Mit FSB 100Mhz reduziert sich die Frequenz auf 1050MHz. Dieser Wert ist für einen VDR völlig ausreichend.

Von Haus aus besteht beim M811 keine Möglichkeit, die Vcore zu reduzieren so daß die CPU mit 1,425V statt normalerweise 1,250V betrieben wird. tomfy erarbeitete hier eine Möglichkeit, durch Auftrennung eines Pins des Spannungsregler ICs (RT9237) des M811, die Vcore auf 1,225V einzustellen. Dies reduziert sowohl die Stromaufnahme als auch die CPU Temperatur und ermöglicht eine passive Kühlung.

Vcore per Jumper oder DIP-Schalter

Durch tomfys Erfolg beflügelt, habe ich durch eine Modifikation des Motherboards die Vcore Einstellung auf beliebige Werte erreicht. Dazu wurden die fünf relevanten Pins des Spannungsregler ICs auf Jumper geführt. Damit läßt sich der Geode bei FSB 100MHz auch mit 1,1V Vcore stabil betreiben. Die Lesitungsaufnahme gegenüber 1,425V sinkt um ca. 10W.

+--------------+
|              |
|.  RT9237     |
+--------------+
 ||||||||||||||
 VVVVV
 IIIII
 DDDDD
 43210
 |||||
 °°°°° <- Jumperblock
 °°°°°
 |||||
 +++++---< GND

Der . markiert Pin1 und ist mit VID4 identisch. Im Datenblatt des RT9237 bedeutet eine 1 kein Jumper gesetzt und die 0 Jumper gesetzt.

Jumperstellung für Vcore 1,100V:

VID4  1
VID3  1
VID2  1
VID1  1
VID0  0

0 == GND (0V)
1 == offen

Es ist nur der Jumper für VID0 gesetzt.

Alternativ kann man auch DIP-Schalter benutzen (Vcore=1,100V):

       o
        \
VID4--o  o------|  1  DIP OFF
                |
       o        |
        \       |
VID3--o  o------|  1  DIP OFF
                |
       o        |
        \       |
VDI2--o  o------|  1  DIP OFF
                |
       o        |
        \       |
VID1--o  o------|  1  DIP OFF
                |
       o        |
                |
VID0--o--o------|  0  DIP ON
                |
                ^
              MASSE


Vcore 1.125V per Pin ablöten

Eine Alternative, zu einer niedrigeren CPU Spannung zu kommen, ist es, zwei Pins des RT9237 abzulöten, d.h., auf logisch 1 zu setzen. Gucken wir uns dazu die VID Einstellung für die Original- und Alternativspannung an:

VID 4 | 3 | 2 | 1 | 0     Vcore
------+---+---+---+------------
    1 | 0 | 0 | 0 | 1 == 1.425V
    1 | 1 | 1 | 0 | 1 == 1.125V

Daraus ist zu ersehen, daß durch Ablöten von VID3 (Pin 2) und VID2 (Pin 3) die CPU Spannung auf 1.125V eingestellt wird, da beide Eingänge von Potential 0 zu 1 wechseln.

zaphod:~$ sensors 
it87-isa-0290
Adapter: ISA adapter
VCore 1:   +1.12 V  (min =  +1.04 V, max =  +1.57 V)

Die Praxis zeigt, daß es am einfachsten ist, wenn man zuerst noch Pin 1 (VID4) ablötet. An seinem Zustand (1) ändert sich dadurch nichts.

Zum Ablöten hält man eine Stecknadel bereit und schiebt diese unter das mit dem Lötkolben (mit Bleistiftspitze) erhitzte Anschlußbeinchen und hebelt dieses ggf. vorsichtig hoch. Ebenso verfährt man dann mit den Pins 2 und 3.

Durch die Manipulation am Motherboard erlischt die Gewährleistung. Auch sollte man Erfahrung im Umgang mit dem Lötkolben (z.B ERSA Tip 260, 16W) haben.


PowerNow! Support

MSR Patch

Der AMD Geode NX 1750 unterstützt die Einstellung der Frequenz während des laufenden Betriebes. Somit ist es möglich, die CPU beim "nichts tun" herunterzutakten und im Bedarfsfalle (z.B. DVD erstellen) die volle Leistung abzurufen. alex-zero hat im vdrportal eruiert, wie PowerNow! mit dem Geode zu nutzen ist. Der Kernel kann die PowerNow! öglichkeiten nicht nutzen, da das BIOS hierfür keine Informationen zur Verfügung stellt.

Durch einen Patch des Kernels werden die entsprechenden Daten dort eingebaut, so daß das powernow-k7 Modul damit arbeiten kann. Dieser Patch wird hier zur Verfügung gestellt. Im Anhang findet sich ein Patch für den jeweils aktuellen Kernel.

zaphod:~# "Patch Datei laden"
zaphod:~# gunzip powernow-k7-msr-2.6.16.1.patch.gz 
zaphod:~# cd /usr/src/linux
zaphod:/usr/src/linux# patch -p1 < ~/powernow-k7-msr-2.6.16.1.patch

Nun wird der Kernel mit folgenden Einstellungen neu übersetzt:

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_POWERNOW_K6 is not set
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_SMI is not set
# CONFIG_X86_P4_CLOCKMOD is not set
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

Die Datei /etc/modules wird folgendermaßen modifiziert:

zaphod:~# grep powernow_k7 /etc/modules
powernow_k7 msr_force=1

damit das Modul automatisch geladen wird.

Nach dem Neustart des Kernel überprüft man die möglichen Varianten zur Frequenzeinstellung:

zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand powersave userspace performance

Nähere Informationen sind hier zu finden: /usr/src/linux/Documentation/cpu-freq/

Mittels dmesg oder in syslog sollte diese Meldung (mit FSB 100MHz) auftauchen:

powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
Detected 1048.423 MHz processor.
powernow: Trying ACPI perflib
powernow: ACPI perflib can not be used in this platform
powernow: ACPI and legacy methods failed
powernow: See http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.shtml
powernow: Building frequency table from MSR info.
powernow: Minimum speed 599 MHz. Maximum speed 1048 MHz.

Ich betreibe den Geode derzeit mit "conservative". Damit dies beim Start aktiviert wird, habe ich folgendes in /etc/init.d/bootmisc.sh eingetragen:

echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Mittels

watch -n1 "cat /proc/cpuinfo|grep MHz

kann man sich laufend die aktuelle Frequenz der CPU anzeigen lassen.

Manual Frequency Table Patch

Auf diesen Patch bin ich durch Elchi aufmerksam gemacht worden. Er beruht wohl auf einen Patch von Milan Enev: Linux 2.6.12.2 PowerNow! K7 Manual Frequency Table

Da der originale Patch bei mir nicht richtig funktionierte, habe ich aus Elchis und Enevs Versionen eine für Kernel 2.6.16.9 funktionierende Variante erstellt.

Der Kernel muß für diesen Patch genauso konfiguriert sein wie für den MSR Patch. Das Einspielen des Patches erfolgt analog.

zaphod:~# "Patch Datei laden"
zaphod:~# gunzip powernow-k7-manual-2.6.16.9_enev_kilroy.patch.gz
zaphod:~# cd /usr/src/linux
zaphod:/usr/src/linux# patch -p1 < ~/powernow-k7-manual-2.6.16.9_enev_kilroy.patch
zaphod:~# grep powernow_k7 /etc/modules
powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105

oder alternativ händisch per modprobe:

zaphod:~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105

Die multiplier Parameter sind variierbar.

zaphod:~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=55,75,95,105
zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
550000 750000 950000 1050000

Beispielausgabe des syslog:

zaphod kernel: powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
zaphod kernel: powernow-k7: Current multiplier 10.5. CPU running at 1048MHz
zaphod kernel: powernow-k7: FSB: 100MHz
zaphod kernel: powernow: Overwriting PST table with manual settings
zaphod kernel: powernow-k7: Settling Time: 200 microseconds.
zaphod kernel: powernow-k7:    FID: 0x4 (5.0x [500MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0x6 (6.0x [600MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0x8 (7.0x [700MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0xa (8.0x [800MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0xc (9.0x [900MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0xf (10.5x [1050MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow: Minimum speed 500 MHz. Maximum speed 1050 MHz.

Arbeitet powernow erfolgreich, kann mach sich die möglichen Frequenzen anzeigen lassen:

zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
500000 600000 700000 800000 900000 1050000

Zur automatischen Frequenzumstellung wird powernowd verwendet.

zaphod:~# aptitude install powernowd

Der Start erfolgt mit folgenden Parametern:

zaphod:~# cat /etc/default/powernowd OPTIONS="-v -n -m 0"

"-m 0" bewirkt, daß die Frequenzänderung einer Sinuskurve folgt. Siehe auch man powernowd.

zaphod:~# /etc/init.d/powernowd restart

Hier die Ausgabe des powernowd Aufrufes:

Starting powernowd: powernowd: PowerNow Daemon v0.90, (c) 2003-2004 John Clemens
powernowd: Settings:
powernowd:   verbosity:        1
powernowd:   mode:             0     (SINE)
powernowd:   step:           100 MHz (100000 kHz)
powernowd:   lowwater:        20 %
powernowd:   highwater:       80 %
powernowd:   poll interval: 1000 ms
powernowd: Found 1 cpu:
powernowd:   cpu0: 500Mhz - 1050Mhz
powernowd.

Dieser Patch bietet grundsätzlich auch die Möglichkeit, die CPU Spannung anzupassen (Vcore), dieses funktioniert bei mir mit dem M811 Board jedoch nicht.

Wer den Geode mittels JP2 auf dem M811 mit FSB 133MHz laufen läßt, kann powernow-k7 folgendermaßen nutzen:

zaphod:~# modprobe powernow_k7 overwrite_table=1 fsb=133333 multiplier=40,50,60,70,80,90,105

Das ergibt diese möglichen Frequenzen:

zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
533332 666665 799998 933331 1066664 1199997 1399996