In this presentation we will start from basic CMOS power consumption factors. We will use that as the basis to explain the various possibilities to balance power versus performance. We will then continue explaining how these techniques are implemented both in the SoC hardware and in the the operating system and application software. Android, maemo, OMAP and Tegra will be used to illustrate the techniques.
We will start by explaining which factors influence power consumption in CMOS chips. We will then explain a number of commonly used techniques to control the power versus performance balance such as clock and powergating, clock and supply voltage scaling and heterogenous multiprocessing. We will continue explaining how these techniques are implemented in linux using various frameworks such as cpuidle, cpufreq, common clock framework, runtime PM, generic powerdomains, device QoS constraints, system suspend. We will then discuss how application code affects the device power consumption and discuss how Android and Maemo handle this. We will also discuss various debugging mechanisms and tools such as powertop, ftrace and other information in linux sysfs and debugfs. We will also explain hardware techniques we have used to gain insight in the system operation beyond the view of software.
I gave this talk at fosdem already, but if there's interest from people who haven't seen it, I can give it again.