View
2.087
Download
1
Category
Preview:
DESCRIPTION
Server: Performance ist wichtiger als Energieverbrauch.Low Power primär ausKostengründenDesktop: Performance ist oft wichtiger als Low PowerLaptops: Low Power primär zur Verlängerung derBatterielaufzeitMobile: BatterielaufzeitEmbedded: Oft nur wenig Energie vorhanden.
Citation preview
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 1
Low-Power Linux
Wolfram Luithardt
Hochschule fuumlr Technik und Architektur Fribourg Schweiz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 2
Warum Low Power Linux
Server Performance ist wichtiger als Energie-verbrauch Low Power primaumlr aus Kostengruumlnden
Desktop Performance ist oft wichtiger als Low Power
Laptops Low Power primaumlr zur Verlaumlngerung der Batterielaufzeit
Mobile Batterielaufzeit
Embedded Oft nur wenig Energie vorhanden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 3
Embedded Systems
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4
Warum Low-Power Systeme
Low Power
System
- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm
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 05042011 5
Motivation
- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren
Embedded System Roadmap 2002 PrimePower is considered as the most important
constraint in embedded systemsPrime
Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird
Leistungsabgaben an ein System ca 100 uW ndash 10mW
Energy-Harvesting
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6
Neue Low Power Komponenten
- Energiespeicher Supercaps
- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand
- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird
- Ram NVRam (Nichtfluumlchtiges Ram) gt1015
Schreib-Loumlschzyklen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 2
Warum Low Power Linux
Server Performance ist wichtiger als Energie-verbrauch Low Power primaumlr aus Kostengruumlnden
Desktop Performance ist oft wichtiger als Low Power
Laptops Low Power primaumlr zur Verlaumlngerung der Batterielaufzeit
Mobile Batterielaufzeit
Embedded Oft nur wenig Energie vorhanden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 3
Embedded Systems
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4
Warum Low-Power Systeme
Low Power
System
- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm
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 05042011 5
Motivation
- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren
Embedded System Roadmap 2002 PrimePower is considered as the most important
constraint in embedded systemsPrime
Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird
Leistungsabgaben an ein System ca 100 uW ndash 10mW
Energy-Harvesting
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6
Neue Low Power Komponenten
- Energiespeicher Supercaps
- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand
- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird
- Ram NVRam (Nichtfluumlchtiges Ram) gt1015
Schreib-Loumlschzyklen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 3
Embedded Systems
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4
Warum Low-Power Systeme
Low Power
System
- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm
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 05042011 5
Motivation
- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren
Embedded System Roadmap 2002 PrimePower is considered as the most important
constraint in embedded systemsPrime
Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird
Leistungsabgaben an ein System ca 100 uW ndash 10mW
Energy-Harvesting
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6
Neue Low Power Komponenten
- Energiespeicher Supercaps
- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand
- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird
- Ram NVRam (Nichtfluumlchtiges Ram) gt1015
Schreib-Loumlschzyklen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4
Warum Low-Power Systeme
Low Power
System
- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm
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 05042011 5
Motivation
- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren
Embedded System Roadmap 2002 PrimePower is considered as the most important
constraint in embedded systemsPrime
Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird
Leistungsabgaben an ein System ca 100 uW ndash 10mW
Energy-Harvesting
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6
Neue Low Power Komponenten
- Energiespeicher Supercaps
- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand
- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird
- Ram NVRam (Nichtfluumlchtiges Ram) gt1015
Schreib-Loumlschzyklen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 5
Motivation
- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren
Embedded System Roadmap 2002 PrimePower is considered as the most important
constraint in embedded systemsPrime
Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird
Leistungsabgaben an ein System ca 100 uW ndash 10mW
Energy-Harvesting
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6
Neue Low Power Komponenten
- Energiespeicher Supercaps
- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand
- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird
- Ram NVRam (Nichtfluumlchtiges Ram) gt1015
Schreib-Loumlschzyklen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6
Neue Low Power Komponenten
- Energiespeicher Supercaps
- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand
- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird
- Ram NVRam (Nichtfluumlchtiges Ram) gt1015
Schreib-Loumlschzyklen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7
Leistung einzelner PC-Komponenten
Mainboard 25 Watt Gehaumluseluumlfter 5 Watt
Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8
Vergleich verschiedener Linux-faumlhiger Prozessorfamilien
Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9
Bekannte Energiespar-Methoden
- Screen off-mode
- Suspend to Ram
- Suspend to disk (Hibernation mode)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10
Die grundlegende Gleichungen
α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz
P statisch=sumUsdotI Leak
Pdynamisch=12sdotsdotCsdotU 2sdotf
Pgesamt=P statischPdynamisch
U CorespannungIL e a k Leckstrom
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11
Technologische Entwicklungen
Von Generation zu Generation
- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr
Dynamische Leistung =uarr Statische Leistung uarr
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12
Technologische Entwicklungen
zur Reduktion statischer Verluste
- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt 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 fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet
- Neue Dielektrika
P statisch=sumUsdotI Leak
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13
zur Reduktion dynamischer Verluste
Technologische Entwicklungen
- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc
- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen
- ULV-Prozessoren
Pdynamisch=12sdotsdotCsdotU 2
sdotf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14
- Kombination von Allem
Sparmoumlglichkeiten
0 10 20 30 40 50 60 70 800
5
10
15
20
25
30
35
40
Verbrauch ARM Cortex M3- STM32F103x8
Run Peri onRun Peri offSleep Peri onSleep Peri offStop
Taktfrequenz [MHz]
Str
om
ve
rba
ruc
h [
mA
]
- Reduktion der Taktfrequenz
- Reduktion der Versorgungs-spannung
- Abschaltung von nicht benoumltigter Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15
The real worldVerbrauch UNC90 AT91RM9200
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16
Abhaumlngigkeit von Spannung und Frequenz
XScale Quelle Intel
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17
X86 Sleep-modes
P-StatesVerringerung der Frequenz und der Corespannung
C-StatesBeispiel Intelreg Coretrade2 Duo
C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt
httpwwwlesswattsorgdocumentationsilicon-power-mgmnt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18
Warum verschiedene Sleep-Modes
C0 Mode350 Watt
C1 Mode135 Watt
C2 Mode129 Watt
C3 Mode77 Watt C4 Mode
12 Watt
Leistungsaufnahme
250 us
50 us100 ns
10 ns
Beispiel Intelreg Coretrade2 Duo
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19
Beispiel Sleep-Modes ARM
Active400 mW
Idle50 mW
Sleep160 μW
160ms90μs
90μs
10μs10μs
Strongarm SA1100
Woher weiss der Prozessor in welchen Zustand er gehen kann
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20
Grundlegende Prinzipien
Ereignisgesteuertes Betriebssystem
Grundzustand aktiv schlafen nur wenn nichts zu tun ist
Grundzustand schlafend aktiv nur wenn etwas zu tun ist
Grundzustand aus aktiv nur wenn genuumlgend Energie
vorhanden ist
Energiegesteuertes Betriebssystem
WartendesBetriebssystem
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21
Unix- Prozessmodel
WartendBlockiert
Aktiv
externes Geraumlt Polling
Interrupt
Problematik bei energiegesteuertem
Betriebssystem
Bootzeit
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22
Reduktion der Aufstartzeit
Karo TX-25
66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23
Wie sieht dies in der Praxis aus
- Abschaltung von nicht benoumltigter
Peripherie
- Dynamische Reduktion der Taktfrequenz - Prozessor
schlafen legen
- Reduktion der Versorgungs-
spannung
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24
Plattform UNC90
Spannungs- regler
Ausgang 33 V UNC90- Modul01 Ω
I = Um 01Ω
P = UI = Um2 R
Um
- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612
httpwwwdigicompdfprd_em_unc90pdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25
Crosscompiling
PC mit Ubuntu + UNC90-Crosscompiling Umgebung
TFTP-Server mit Kernel fuumlr UNC90
Filesystem auf NFS-Partition
Terminalprogramm (minicom)
UNC90
Kernel
Filesystem
Terminal
TFTP
NFS
TFTP
seriell
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26
Frequencyscaling
Power Management Controller PMC
Prozessorfrequenz
Frequenzverhaumlltniszur Peripherie
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27
Manuelles Frequencyscaling
saveCurrent()
PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
normalCurrent()
PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register
Wie kann dieses automatisiert werden
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28
Unix- Prozessmodel
WartendBlockiert
Laufend
externes Geraumlt Polling
Interrupt
Aktive Prozesse
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29
Die runqueue
runqueue-Struktur im Kernel
Idle-Task
Proc1
Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)
run queue
geblockte Prozesse
Proc2
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30
Ein einfacher Patch in schedc
if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)
saveCurrent()saveMode = 1
else if(saveMode = 0) normalCurrent()
saveMode = 0
Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31
Die Routinen
saveCurrent() local_irq_disable()
waitForTXReady() saveCurrent() local_irq_enable()
normalCurrent() local_irq_disable()
waitForTXReady() normalCurrent() local_irq_enable()
waitForTXReady() do
wait until TX_Ready Bit in USART Channel Status Register set
while((US_ CSR amp TXRDY)==0)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32
Ein etwas besserer Patch
if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))
saveCurrent() saveMode = 1 else
saveCounter++
else if(saveMode = 0) normalCurrent()
saveMode = 0 saveCounter = 0
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33
Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt
Ergebnisse
ohne Patch
SAVEWAIT = 1
SAVEWAIT = 2
SAVEWAIT = 3
SAVEWAIT = 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
Stabilitaumlt [ms]
80 200 170 130 100
Warum nicht die Frequenz noch weiter senken
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34
Sleep-Mode
in linuxincludeasm-armarch-at91rm9200systemh
static inline void arch_cpu_idle()
AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK
Ergebnisse sleepmode 232 mA rarr 130 mA
Wie lange kann ein System im Sleep-Mode bleiben
mit Frequenzscaling 170 mA rarr 112 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35
PowerTop PowerTOP version 19 (C) 2007 Intel Corporation
Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100
Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36
Nach allen Tipps
Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000
Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37
Linux Kernel vor 2621
Timer-Ticks (alle 1 4 oder 10 ms)
Erhoumlhung der jiffies-Variable
Process Accounting Wieviel Zeit hat jeder Prozess verbraucht
Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden
Sind SW-Timer abgelaufen
Nur benoumltigt wenn ein Programm aktiv ist
Wird auch im Idle-Modus benoumltigt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38
Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al
Tickless Kernel
Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist
HPET (High Precission Event Timer)
Scheduler
Abgelaufene Timer werden vom HPET gemanaged
Process Accounting
Kontextwechsel
Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben
Interrupts
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39
Linux Kernel nach 2621
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 aumlhnlichem testen
Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40
Armadeus APF-27
wwwarmadeusorg
- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA
- Kernel 26294
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41
On demand Governormake linux26-menuconfig
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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 uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq
Interessantes Paper zum Thema
httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43
Sleep Mode auf APF-27
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 ltlt 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
Im Filelinux-26294archarmmmproc-arm926S
Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()
Strom 512 mA rarr 725 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44
Was bringt Tickless
ohne Tickless I = 535 mA
Tickless I = 515 mA
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45
Was bringt Tickless
httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46
Ausschalten von PeripherieBisher wurden die Messungen ohne
USB-Support durchgefuumlhrt
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47
Eingeschaltetes USB
512 mA rarr 725 mA (+ ~30)
Wird dies durch SW oder HW verursacht
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48
- Uumlber 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 --gt )
- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren
Konfiguration des USB
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49
Userspace-dynamisches USB
Lassen sich solche Loumlsungen generalisieren
User Space
Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)
Kernel Space
Zugriff auf Register
Einsparung bei APF-27 30
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 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
- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen
- Display mit bistabilem LCD
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51
Literatur
Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8
httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt
httpwwwcarlthompsonnetsoftwarecpuspeed
wwwlesswattsorg
Manuals der Prozessoren
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52
Vielen Dank an
Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems
Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen
Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema
Dank an die beteiligten Personen
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53
und natuumlrlich
Vielen Dank auch fuumlr Ihre Aufmerksamkeit
Weitere Infos
wolframluithardthefrch
Recommended