Server: Performance ist wichtiger als Energieverbrauch.
Low Power primär aus
Kostengründen
Desktop: Performance ist oft wichtiger als Low Power
Laptops: Low Power primär zur Verlängerung der
Batterielaufzeit
Mobile: Batterielaufzeit
Embedded: Oft nur wenig Energie vorhanden.
1. Low-Power Linux
Wolfram Luithardt
Hochschule für Technik und Architektur,
Fribourg, Schweiz
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 1
2. Warum Low Power Linux?
Server: Performance ist wichtiger als Energie-
verbrauch. Low Power primär aus
Kostengründen
Desktop: Performance ist oft wichtiger als Low Power
Laptops: Low Power primär zur Verlängerung der
Batterielaufzeit
Mobile: Batterielaufzeit
Embedded: Oft nur wenig Energie vorhanden.
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 2
4. Warum Low-Power Systeme ?
- Weniger Wärme
- Weniger bewegliche Teile
Low - Weniger Lärm
Power
System Lebensdauer und Wirkungs-
grad der elektronischen
Komponenten
Weniger Kosten (Energie ist
teuer!!)
Low Power Systeme sind im wahrsten Sinne des Wortes:
cool !
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 4
5. Motivation
Embedded System Roadmap 2002:
″Power is considered as the most important
constraint in embedded systems″
Energy-Harvesting:
- Photovoltaik Leistungsabgaben
- Thermoelektrik an ein System ca:
- Vibrationsgeneratoren 100 uW – 10mW
- Mikro-Luftgeneratoren
Langfristiges Ziel:
Ein Linuxrechner, der mit einer Energyharvesting-
Versorgung gespeist wird.
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 5
6. Neue Low Power Komponenten
- Display: bistabiles LCD: hält sein Bild auch
im stromlosen Zustand
- Ram: PASR (Partitial Array Self Refresh):
dynamisches Ram, das nur teilweise refreshed
wird.
15
- Ram: NVRam (Nichtflüchtiges Ram): >10
Schreib-Löschzyklen
- Energiespeicher: Supercaps
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 6
9. Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk
(Hibernation mode)
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 9
10. Die grundlegende Gleichungen
P gesamt =P statisch P dynamisch
P statisch =∑ U⋅I Leak
U: Corespannung
IL e a k : Leckstrom
1 2
P dynamisch = ⋅⋅C⋅U ⋅f
2
α: Aktivitätsfaktor
C: Parasitäre Kapazität (Transistoren und Leitungen)
U: Corespannung
f: Frequenz
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 10
11. Technologische Entwicklungen
Von Generation zu Generation:
- Parasitäre Kapazität/Transistor: ↓
- Corespannungen: ↓
- Taktfrequenz: ↑
- Anzahl-Transistoren pro Chip: ↑
Dynamische Leistung: =/↑
Statische Leistung: ↑
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 11
12. Technologische Entwicklungen
zur Reduktion statischer Verluste:
P statisch =∑ U⋅I Leak
- Neue Dielektrika
- DVTCMOS (Dual Voltage Threshold-CMOS):
Man benützt je nach Aufgabe 2 verschiedene Arten
von Transistoren (schnell mit hohem IL e a k oder
langsam mit niedrigem IL e a k
- STI (Sleep Transistor Insertion): Transistoren, die für
eine gewisse Funktionalität nicht benötigt werden,
werden stromlos geschaltet.
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 12
13. Technologische Entwicklungen
zur Reduktion dynamischer Verluste:
1 2
P dynamisch = ⋅⋅C⋅U ⋅f
2
- ULV-Prozessoren
- Clock-Gating: Optimierung der Anzahl
der Transistoren, die bei einer gewissen
Operation getaktet werden müssen.
- Cross Talk Avoidance: z. B. durch Vertau-
schen von Leitungen etc.
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 13
14. Sparmöglichkeiten
- Abschaltung von nicht benötigter
Peripherie
Verbrauch ARM Cortex M3- STM32F103x8
- Reduktion der
Taktfrequenz 40
Run, Peri on
35 Run, Peri off
Sleep, Peri on
30
- Reduktion der Stromverbaruch [mA]
25
Sleep, Peri off
Stop
Versorgungs- 20
spannung 15
10
5
- Kombination 0
von Allem !!!! 0 10 20 30 40 50
Taktfrequenz [MHz]
60 70 80
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 14
15. The real world
Verbrauch UNC90, AT91RM9200
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 15
16. Abhängigkeit von Spannung und Frequenz
XScale, Quelle Intel
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 16
17. X86 Sleep-modes
P-States:
Verringerung der Frequenz und der Corespannung
C-States:
Beispiel: Intel® Core™2 Duo
C-State max Leistung
C0 Running Mode 35.0 Watt
C1 Idle Mode 13.5 Watt
C2 Ohne Datenbus 12.9 Watt
C3 Deaktivierung PLL 7.7 Watt
C4 Enhanced Deeper Sleep 1.2 Watt
http://www.lesswatts.org/documentation/silicon-power-mgmnt/
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 17
18. Warum verschiedene Sleep-Modes?
Leistungsaufnahme Beispiel: Intel®
C0 Mode Core™2 Duo
35.0 Watt
10 ns
C1 Mode 100 ns 250 us
13.5 Watt
50 us
C2 Mode
12.9 Watt
C3 Mode
7.7 Watt C4 Mode
1.2 Watt
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 18
19. Beispiel Sleep-Modes: ARM
Strongarm SA1100 Active
400 mW
10μs
160ms
10μs 90μs
Idle Sleep
50 mW 90μs 160 μW
Woher weiss der Prozessor, in welchen Zustand er gehen kann ?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 19
20. Grundlegende Prinzipien
Grundzustand aktiv, schlafen nur, Wartendes
wenn nichts zu tun ist Betriebssystem
Grundzustand schlafend, aktiv nur, Ereignisgesteuertes
wenn etwas zu tun ist Betriebssystem
Grundzustand aus, aktiv nur,
Energiegesteuertes
wenn genügend Energie Betriebssystem
vorhanden ist
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 20
21. Unix- Prozessmodel
externes Problematik bei
Gerät Polling energiegesteuertem
Betriebssystem:
Aktiv Bootzeit
Interrupt
Blockiert Wartend
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 21
22. Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 Sek
Quelle: D. Doninelli: TX25-Fast Boot, EIA-FR 2011
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 22
23. Wie sieht dies in der Praxis aus ?
- Dynamische
Reduktion der
Taktfrequenz - Prozessor
schlafen legen
- Abschaltung von
nicht benötigter
Peripherie - Reduktion der
Versorgungs-
spannung
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 23
24. Plattform UNC90
http://www.digi.com/pdf/prd_em_unc90.pdf
- Prozessor: AT91RM9200 (ARM 920EJ)
- Maximale Frequenz: 180 MHz
- 32 MB Ram, 16 MB Flash
- Linux Kernel 2.6.12
Um
Spannungs-
regler
0.1 Ω UNC90- Modul
Ausgang 3.3 V I = Um / 0.1Ω
P = U·I = Um2 / R
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 24
25. Crosscompiling
PC mit Ubuntu +
UNC90-Crosscompiling
UNC90 Umgebung
TFTP TFTP-Server mit
Kernel Kernel für UNC90
NFS Filesystem auf
Filesystem NFS-Partition
seriell Terminalprogramm
Terminal
(minicom)
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 25
26. Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhältnis
zur Peripherie
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 26
27. Manuelles Frequencyscaling
saveCurrent()
{
PMC_ MCKR |= PRES_DIV2; // Master Clock register auf /2 stellen
US_BRGR = US_BRGR /2; // USART Baudrate Divider Register
}
normalCurrent()
{
PMC_ MCKR &= ~PRES_DIV2; // Master Clock register auf /1 stellen
US_BRGR = US_BRGR *2; // USART Baudrate Divider Register
}
Wie kann dieses automatisiert werden ?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 27
29. Die runqueue
runqueue-Struktur im Kernel geblockte Prozesse:
run Idle- Proc Proc
queue Task 1 2
Ein Feld dieser Struktur: nr_running enthält die Anzahl
der aktiven Prozesse (inklusive des Idle-Tasks)
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 29
30. Ein einfacher Patch in sched.c
Die Funktion schedule() wird bei jedem Kontextwechsel
(preemptiv oder gewünscht) aufgerufen:
if(unlikely(rq -> nr_running == 1)){
if(saveMode == 0){
saveCurrent();
saveMode = 1;
}
} else {
if(saveMode != 0){
normalCurrent();
saveMode = 0;
}
}
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 30
31. Die Routinen
saveCurrent() {
local_irq_disable();
waitForTXReady(); waitForTXReady(){
saveCurrent(); do {
local_irq_enable(); /* wait until TX_Ready
} Bit in USART Channel
Status Register set
normalCurrent() { */
local_irq_disable(); }
waitForTXReady(); while((US_ CSR & TXRDY)==0)
normalCurrent(); }
local_irq_enable();
}
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 31
33. Ergebnisse
ohne SAVEWAIT SAVEWAIT SAVEWAIT SAVEWAIT
Patch =1 =2 =3 =5
Active 232 mA 232 mA 232 mA 232 mA 232 mA
Idle 232 mA 170 mA 170 mA 170 mA 170 mA
Time [ms] 15810 16700 16200 16000 15830
Stabilität 80 200 170 130 100
[ms]
Die Zeit wird mit einem Programm gemessen, das eine einfache mathe-
matische Funktion ausführt.
Warum nicht die Frequenz noch weiter senken?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 33
34. Sleep-Mode
in linux/include/asm-arm/arch-at91rm9200/system.h
static inline void arch_cpu_idle()
{
AT91_SYS -> PMC_SCDR = AT91C_PMC_PCK;
}
Ergebnisse: sleepmode: 232 mA → 130 mA
mit Frequenzscaling: 170 mA → 112 mA
Wie lange kann ein System im Sleep-Mode bleiben?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 34
37. Linux Kernel vor 2.6.21
Erhöhung der jiffies-Variable
Timer-Ticks
(alle 1, 4 oder Process Accounting: Wieviel Zeit
10 ms) hat jeder Prozess verbraucht ?
Scheduler: Muss ein Kontext-
wechsel durchgeführt werden ?
Sind SW-Timer abgelaufen ?
Nur benötigt, wenn ein Programm aktiv ist
Wird auch im Idle-Modus benötigt
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 37
38. Linux Kernel nach 2.6.21
Thomas Gleixner, Ingo Molnár et al.:
Tickless Kernel
HPET (High Precission Jiffies-Variable wird nur
Event Timer) erhöht, wenn ein Prozess
aktiv ist
Process Accounting
Scheduler
Kontextwechsel
Abgelaufene Timer werden
vom HPET gemanaged
Interrupts
Wenn kein Prozess aktiv ist kann der Prozessor im
Schlaf-Mode bleiben!
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 38
39. Linux Kernel nach 2.6.21
Grouping:
1 Sekunde 1 Sekunde
Systemaufrufe:
unsigned long round_jiffies(unsigned long j);
unsigned long __round_jiffies_relative(unsigned long j, int cpu);
Neue Applikationen immer mit Power-Top oder
ähnlichem testen !
Alle gezeigten Messungen waren mit einem alten Kernel.
Wie sieht es mit einem aktuelleren System aus?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 39
41. On demand Governor
make linux26-menuconfig
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 41
42. Messungen unterschiedlicher
Frequenzscalingmethoden
Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]
Perfomance Governor 512 (400 MHz) 723 (400 MHz)
Powersave Governor 494 (133 MHz) 494 (133 MHz)
Ondemand Governor 494 (133 MHz) 723 (400 MHz)
Scheduler Patch 371 (200 MHz) 723 (400 MHz)
Scheduler Patch 348 (133 MHz) 723 (400 MHz)
Die aktuelle Frequenz kann über das sysfs bestimmt werden:
/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
Interessantes Paper zum Thema:
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/doc/OLS2006-ondemand-paper.pdf
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 42
43. Sleep Mode auf APF-27
Im File:/linux-2.6.29.4/arch/arm/mm/proc-arm926.S
ENTRY(cpu_arm926_do_idle)
mov r0, #0
mrc p15, 0, r1, c1, c0, 0 @ Read control register
mcr p15, 0, r0, c7, c10, 4 @ Drain write buffer
bic r2, r1, #1 << 12
mrs r3, cpsr @ Disable FIQs while Icache
orr ip, r3, #PSR_F_BIT @ is disabled
msr cpsr_c, ip
mcr p15, 0, r2, c1, c0, 0 @ Disable I cache
mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt
mcr p15, 0, r1, c1, c0, 0 @ Restore ICache enable
msr cpsr_c, r3 @ Restore FIQ state
mov pc, lr
Ausschaltbar über Kernelboot-Parameter: no-hlt oder über Systemfunktion: disable_hlt();
Strom: 512 mA → 725 mA
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 43
44. Was bringt Tickless ?
ohne Tickless: I = 535 mA
Tickless: I = 515 mA
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 44
45. Was bringt Tickless ?
http://www.phoronix.com/scan.php?page=article&item=651&num=1
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 45
46. Ausschalten von Peripherie
Bisher wurden die Messungen ohne
USB-Support durchgeführt !
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 46
47. Eingeschaltetes USB
512 mA → 725 mA (+ ~30%)
Wird dies durch SW oder HW verursacht ?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 47
48. Konfiguration des USB
- Über 100 Register !
- Peripheral Clock Control Register des Clockmoduls:
Durch Ausschalten des Bits USB AHB Clock Enable,
(Advanced High-performance Bus) wird der Strom reduziert
(Clock-Gating ??? --> !!!)
- Der AHB Clock wird aber nur zum Erkennen eines neuen
USB-Gerätes benötigt. Dies' ermöglicht, durch ein einfaches
Programm, welches periodisch den USB AHB Clock ein-
schaltet, den Stromverbrauch massgeblich zu reduzieren....
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 48
49. Userspace-dynamisches USB
User Space Kernel Space
Procedure
loop{
- AHB einschalten
- Status Register lesen Zugriff auf Register
- AHB ausschalten
- sleep(1);
}
Einsparung bei APF-27: 30%
Lassen sich solche Lösungen generalisieren ?
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 49
50. Neue Plattform FRIARM
- Komplettes ereignisgesteuertes System
(Interrupt-Handling)
- Dynamische Frequenz- und Corespannungs-Anpassung
- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit
Reduktion der Versorgungsspannung
- Ram/Flash wird durch NV-Ram ersetzt: Ausschalten des
Stromes in Ruhephasen, Live-Daten im Ram, um
schnelles Booten zu ermöglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 50
51. Literatur
Daniel P. Bovet, Marco Cesati: Understanding the
Linux Kernel, O'Reilly, ISBN: 978-0-596-00565-8
http://www.mjmwired.net/kernel/Documentation/cpu-
freq/governors.txt
http://www.carlthompson.net/software/cpuspeed/
www.lesswatts.org
Manuals der Prozessoren
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 51
52. Dank an die beteiligten Personen
Vielen Dank an:
Silvain Décastel, Xavier Menoud, Andéol Demierre
und Igor Zanetti für die interessanten Analysen des
Linux-Systems.
Guy Morand und Davide Doninelli für Ihre tollen
Arbeiten zum Fastboot an verschiedenen Systemen.
Sowie an Daniel Gachet und Nicolas Schroeter ' für
die vielen interessante Diskussionen zu diesem
Thema....
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 52
53. und natürlich....
Vielen Dank auch für Ihre
Aufmerksamkeit !
Weitere Infos:
wolfram.luithardt@hefr.ch
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 53