Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5...
Transcript of Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5...
![Page 1: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/1.jpg)
Power Management on an ARM11 platform
Mischa Jonker
November, 7, 2008
![Page 2: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/2.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
2
Overview
Introduction
Architecture of the NXP ARM1176 platform
ARM11 power modes
Switching between power modes
Benchmark results
Conclusion + Future work
![Page 3: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/3.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
3
Ways to save power in Linux
System power management
Device power management CPU power management
Active CPU PMIdle CPU PM
Dynamic Voltage/Frequency Scaling
Adaptive Voltage/Frequency Scaling
suspend/restore
CPUfreq
CPUidle
![Page 4: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/4.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
4
CMOS power trends
0.0000001
0.000001
0.00001
0.0001
0.001
0.01
0.1
1
10
100
1995 2000 2005 2010 2015 2020
Static power (leakage) Dynamic powersource: ITRS
350nm 250nm 180nm 130nm 90nm 65nm 45nm 22nm (GP process)
![Page 5: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/5.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
5
CMOS power trends
0.0000001
0.000001
0.00001
0.0001
0.001
0.01
0.1
1
10
100
1995 2000 2005 2010 2015 2020
Static power (leakage) Dynamic powersource: ITRS
Leakage power alreadyexceeds dynamic power
for general purpose process (low power will
follow soon)
350nm 250nm 180nm 130nm 90nm 65nm 45nm 22nm (GP process)
![Page 6: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/6.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
6
Ways to save power in Linux
System power management
Device power management CPU power management
Active CPU PMIdle CPU PM
Dynamic Voltage/Frequency Scaling
Adaptive Voltage/Frequency Scaling
suspend/restore
CPUfreq
CPUidle
![Page 7: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/7.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
7
With CPUidle
CPUidle in a nutshell
Execute program
Execute program
Idle Wait for interrupt / Halt
Execute program
Execute program
Idle
Determine estimated idle time
Use est. idle time and constraints to choose a power down mode
Go to power down mode
Old way
![Page 8: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/8.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
8
NXP ARM1176 platformCMOS 065 SoC with:
– ARM1176, 32K I&D$, 4K TCM– TriMedia (DSP)– System L2 cache, 768KB
Memory– 128MB LPDDR, 64MB Strata Flash, 32MB
PSRAM, 256 MB NAND Flash
![Page 9: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/9.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
9
NXP ARM1176 platform: power management
Voltage
regulatorsMeasurement
interface
NXP SoC
PLL’s
Clockgenerators
Performancemonitors
Power modecontroller
VDDswitches
Voltagedomains
DVFS+ AVFS
![Page 10: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/10.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
10
NXP ARM1176 platform: Voltage domains
ARM1176JZF-S
Caches + TCM’s
VFP
System L2cache memory
Trimedia
Peripherals
RTC, Power mgt ctrl.
System L2cache control
ARM_CORE
ARM_VFP
ARM_RAM
ARM_VDD
VDD_ALWAYS
VDD_SOC
![Page 11: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/11.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
11
ARM11 power modes
000SHUTDOWN
Vretention00DORMANT
VretentionVretention / 0VretentionDEEP STANDBY
ARM_RAM_VDDARM_VDD / 0ARM_VDDSTANDBY
ARM_RAM_VDDARM_VDD / 0ARM_VDDACTIVE
ARM RAMARM VFPARM core
ARM1176JZF-S
Caches + TCM’s
VFP
ARM_CORE
ARM_VFP
ARM_RAM
ARM_VDD
![Page 12: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/12.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
12
Power dissipation of ARM11 power modes
0.001
0.01
0.1
1
10
100
ARM_CORE ARM_RAM total
mW
Active Standby Deep standby Dormant Shutdown
![Page 13: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/13.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
13
Entering and exiting power modes
Sleep event
PMC does power mode transition
Wakeup event
Save statusif required
Restorestatus
power down
mode
execute
program
![Page 14: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/14.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
14
Power Management Controller (PMC)
Controls power modes by
controlling related components in
a defined sequence.
Listens to sleep and wakeup
conditions to change operating
modes.
PMC
power mode transition
Clockgen.
Voltagegen.
Resetsignals
![Page 15: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/15.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
15
Deep standby mode
Pretty straight-forward mode
transition:– You only need to program the
PMC, for the rest it’s fully
transparent to the software.
Program PMC and voltage regulators for mode transition
Execute WFI
PMC lowers all voltages to retention level (800mV) and
stops relevant clocks
Interrupt wakes PMC up
PMC brings voltages backand starts ARM clock again
![Page 16: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/16.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
16
Deep standby
deep standby dormant shutdown
Interruptarrives at PMC
VDD stableenough, CPU clocks start
Interruptfinished, back
to sleep
latency 50 µµµµs
Voltage back to retention level
![Page 17: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/17.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
17
Entering dormant mode
Disable all interrupts (and make
sure exceptions cannot happen
anymore)
Program the PMC– set sleep trigger (Wait For
Interrupt instruction)
– set wakeup conditions (IRQ / FIQ)
– set next power mode for all
components: ARM_CORE,
ARM_VFP, ARM_RAM
Program the next voltage in the
voltage regulators; this transition
will be triggered by the PMC
Program PMC and voltage regulators for mode transition
Store contents of all ARM registers (including VFP +
CP15) to DTCM
Copy restore code to ITCM and disable interrupts + MMU
Execute WFI instruction
![Page 18: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/18.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
18
Entering dormant mode
Program PMC and voltage regulators for mode transition
Store contents of all ARM registers (including VFP +
CP15) to DTCM
Copy restore code to ITCM and disable interrupts + MMU
Execute WFI instruction
While we are storing all ARM
registers, we are entering
unexpected modes for the kernel– Should we receive an interrupt
before power down, we need to go
to restore code instead of interrupt
handler!!
Therefore, after copy of ITCM code,
the MMU is turned off and the ARM
is configured for low exception
vectors.
![Page 19: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/19.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
19
Entering dormant mode
Program PMC and voltage regulators for mode transition
Store contents of all ARM registers (including VFP +
CP15) to DTCM
Copy restore code to ITCM and disable interrupts + MMU
Execute WFI instruction
Save all ARM registers– Be careful!! Some registers of the
register file exist multiple times
(for different modes: svc, int, fiq,
abort, user)
Save floating point regs
Save CP15 regs– MMU status and more
![Page 20: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/20.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
20
Entering dormant mode
Enable interrupts again
Execute WFI to trigger sleep
Program PMC and voltage regulators for mode transition
Store contents of all ARM registers (including VFP +
CP15) to DTCM
Copy restore code to ITCM and disable interrupts + MMU
Execute WFI instruction
![Page 21: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/21.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
21
Memory map
ITCM (restore code) (4KB)
DTCM (saved registers) (4KB)
Pseudo SRAM (32MB)
Strataflash (64MB)
Low Power DDR (128MB)
0x0000.0000
0x0000.1000
0x1000.0000
0x01FF.FFFF
0x13FF.FFFF
0x2000.0000
0x27FF.FFFF
Three relevant signals:– INITRAM: initializes ITCM at
0x0000.0000 at boot-time– VINITHI: determines whether
vectors are low or high at boot-time
– BOOT_SMC: remaps first MB of LP-DDR to 0xFFF0.0000
DTCM and ITCM are mapped over existing virtual memory map. So, needed to exclude these two pages for regular use!
Copy of first MB of LPDDR0xFFF0.0000
0xFFFF.FFFF
MMIO space0xC000.0000
0xC01F.FFFF
0x0000.2000
![Page 22: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/22.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
22
Waking up from dormant mode
In the event of an interrupt before
the WFI instruction, the PMC is still
armed; – it could go to dormant next time
when we do a WFI!
– so we need to disarm it
Remap I/O registers anddisarm the PMC
Enable DTCM
Restore all saved registers
Enable interrupts and return
![Page 23: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/23.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
23
Dormant mode
latency 175 µµµµs
deep standby dormant shutdown
0V! IRQ arrives…
Restore code starts running
Restore code finishes quicklybecause everything is in TCM (takes +/- 10 microseconds)
And.. save registers for next cycle
![Page 24: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/24.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
24
Entering + exiting shutdown mode
Almost same procedure as with
dormant, but state is saved to
Pseudo SRAM instead of ITCM /
DTCM.
Program PMC and voltage regulators for mode transition
Store contents of all ARM registers (including VFP +
CP15) to PSRAM
Copy restore code to PSRAM and disable interrupts + MMU
Execute WFI instruction
Disable ITCM + DTCM
![Page 25: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/25.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
25
Memory map
Pseudo SRAM (32MB)
Strataflash (64MB)
Low Power DDR (128MB)
0x0000.0000
0x1000.0000
0x01FF.FFFF
0x13FF.FFFF
0x2000.0000
0x27FF.FFFF
Three relevant signals: INITRAM,
VINITHI and BOOT_SMC. – BOOT_SMC didn’t work :-(
So needed to use Pseudo SRAM
for restore code --> slow....
Reset vector is at 0x0000.0000,
so we needed to swap flash &
PSRAM
Boot from flash is accomplished
by writing a jump instruction in
PSRAM by bootscript.
Copy of first MB of LPDDR0xFFF0.0000
0xFFFF.FFFF
MMIO space0xC000.0000
0xC01F.FFFF
![Page 26: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/26.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
26
Shutdown mode
deep standby dormant shutdown
latency 0.5 ms
Latency is a lot higher because ARM_RAM (not
shown) doesn’t ramp that fast
![Page 27: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/27.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
27
Putting it all together
CPUidle was used to select
power down modes
Even with very short sleep
times (sound module with
32 bytes buffer) there is
plenty of energy saving
potential
Average power dissipation MP3
playback
0
10
20
30
40
50
60
70
80
90
100
ARM_CORE ARM_RAM total
avg
mW
Standby Deep standby Dormant
Deepest standbymode used
![Page 28: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/28.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
28
Encountered problems and future work
Getting an interrupt after saving the state, but before WFI:– PMC is still armed, and on next ‘regular’ idle (standby) it will go to
dormant/shutdown.
Mysterious wakeups at 2.1 second intervals (don’t show up in powertop)
– Turns out that 2.1 seconds is exactly 2^31 nanoseconds, so we moved to 64-bit integers for clock events.
CPUidle is made with laptops in mind– Power dissipation for various idle states is measured in mW. This is not
accurate enough for our platform.
Some CPUfreq governors made the ARM wake up periodically– Solved in 2.6.24 by deferrable workqueues– A lot of drivers however still do periodic wakeups (USB stack: 4x a second)
![Page 29: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/29.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
29
Encountered problems and future work
Latency framework is virtually unused– For instance our sound driver…
Group timers, to decrease amount of wake-ups– Supported in GNOME (glib), but not in glibc, and not synchronized with the
periodic kernel tasks.
Disable the ARM_VFP voltage (through the power switch), and only
enable it at the first unknown instruction exception. Furthermore keep
track of which processes use the VFP, so that it can be enabled and
disabled when switching tasks.
![Page 30: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/30.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
30
Conclusion
A lot of power management kernel infrastructure exists:– not always tuned towards embedded use...
– not everything is integrated...
CPUidle is a nice way to handle ARM11 power modes
Questions??
![Page 31: Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5 CMOS power trends 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 10 100 1995 2000](https://reader034.fdocuments.us/reader034/viewer/2022050403/5f80da2907527c6b7506d311/html5/thumbnails/31.jpg)
7 November 2008ARM11 power mgt / Mischa Jonker
31