2014년 3월 25일 화요일

Linux Power Management

본 장에서는 안드로이드(리눅스) 파워 관리(Power Management) 기법을 소개하고, 각각의 개념을 분석해 보고자 한다.

o  Power Management 개요
o  Old System Suspend 기법(wakelocks, early suspend/late resume)
o  New System Suspend 기법(wakeup sources, autosleep)
o  CPU PM
-  CPUFreq Framework, CPUIdle Framework
o  I/O Runtime Power Management 기법
o  Regulator Framework
o  배터리 충전 드라이버 분석




1. 파워 관리(Power Management) 개요
파워 관리는 배터리를 사용하는 스마트 폰, 태블릿 PC 등에서 간과해서는 안 되는 매우 중요한 영역이다. Linux Android에서는 이미 오래 전부터 관련하여 다양한 기법이 연구되어 왔는데, 본 장에서는 이들에 관하여 집중적으로 분석해 보고자 한다.
파워 관리 기법은 크게 아래의 두 부류로 분류가 가능한데, 하나는 시스템 전체가 suspend low-power 상태로 진입하도록 하는 system sleep이고, 다른 하나는 필요한 특정 devicesuspend low-power 상태로 진입하게 만드는 runtime sleep이다.

1) System Suspend Power Management 기법
-  Linux suspend system(PM core)
-  Early suspend, Late resume, Wakelocks(Android 기법 구식 기법)
-  Autosleep, Wakeup sources(신규 기법)

2) Runtime Power Management 기법
-  CPUfreq(P states)
-  CPUIdle(C states) + PM QoS
-  CPU hotplug
-  Clock framework(4장에서 이미 소개함)
-  I/O Runtime PM framework


주요 파워 관리 기법의 용어를 정리하면 다음과 같다.

5-1 PM 기법 정리
PM 기법
설명
System suspend
시스템 전체를 sleep 상태로 만듦(User space forces system to sleep). User space로부터 명령이 내려감.
Auto sleep
Wakeup 주체가 더 이상 없으면, 시스템이 sleep으로 자동으로 진입하게 됨(kernel에 의해 진행됨)
CPU idle
CPU가 더 이상 할 일이 없을 때, Idle thread sleep 상태로 진입하도록 해 줌.
CPU freq
CPU 주파수(frequency)를 조정(줄이거나 늘임)하는 기법
I/O Runtime PM
장치 관련 파워 관리 기법
CPU hotplug
동작중인 시스템에서 CPU를 제거(내림)하는 기법


그림 5-1은 커널에서 제공하는 파워 관리 영역을 하나의 그림으로 표현한 것이다.



그림 5-1 Power Management 관련 영역 [ 출처 참고문헌 4 ]


아래에 BSP 작업 시 파워 관리 관련하여 고민해 보아야 할 사항을 정리해 보았다. 이를 통해 파워 관리의 범주를 다시 한번 재확인해 볼 수 있을 것이다.

1) clock을 정의하고, 각각의 장치와 연결시켜야 한다.

2) 보드에 장착된 각 디바이스 드라이버의 suspend/resume 관련 PM 핸들러(callback 함수)를 구현해야 한다.

3) 각각의 디바이스 드라이버 별로 runtime PM 핸들러를 구현해야 한다.

4) 배터리 관리 코드를 구현해야 한다.

5) 레귤레이터 framework 코드를 작성해야 한다.

6) 여기까지 작업하면 PM 관련 대부분의 영역이 작업되어 있어야 한다 – suspend/resume, cpuidle, cpu frequency, voltage scaling.

이 밖에도 대부분의 칩 제조사에서는 위의 내용으로는 부족하여, 전용 파워 관리 칩(PMIC)을 별도로 장착하여 사용하고 있는데, 이는 파워 관리가 그 만큼 중요하고도 어려운 영역에 속함을 암시한다.



보다 자세한 사항은 아래 site의 내용(pdf 파일 - chapter 5)을 참고하시기 바랍니다.

http://www.kandroid.org/board/board.php?board=AndroidPorting&page=1&sort=wdate&command=body&no=210

댓글 없음:

댓글 쓰기