Power Management on an ARM11 platform€¦ · ARM11 power mgt / Mischa Jonker 7 November 2008 5...

31
Power Management on an ARM11 platform Mischa Jonker November, 7, 2008

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7 November 2008ARM11 power mgt / Mischa Jonker

31