More Related Content
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料) PDF
eBPF Trace from Kernel to Userspace PDF
PDF
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する PDF
PDF
PDF
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present... PDF
What's hot
PDF
PDF
PDF
Intro to SVE 富岳のA64FXを触ってみた PDF
PDF
PDF
20230105_TITECH_lecture_ishizaki_public.pdf PDF
PDF
【DL輪読会】Patches Are All You Need? (ConvMixer) PPTX
PDF
PDF
TensorFlow Lite Delegateとは? PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開 PDF
PDF
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp PDF
PDF
NTT DATA と PostgreSQL が挑んだ総力戦 PDF
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方 PPT
PDF
Viewers also liked
PDF
PDF
PDF
PDF
PDF
PDF
Oscar compiler for power reduction PDF
自動並列化コンパイラをAndroidに適用してみた PDF
PDF
PDF
PDF
PPTX
PDF
PPTX
PDF
PPTX
KEY
PDF
PDF
PDF
Similar to 20分でわかった事にするパワーマネジメント
PDF
PDF
0章 Linuxカーネルを読む前に最低限知っておくべきこと PPTX
PDF
PDF
PDF
Linuxのプロセススケジューラ(Reading the Linux process scheduler) PPTX
PDF
PDF
【学習メモ#8th】12ステップで作る組込みOS自作入門 PPTX
PDF
PDF
【学習メモ#9th】12ステップで作る組込みOS自作入門 PDF
Kernel vm study_2_xv6_scheduler_part1_revised More from magoroku Yamamoto
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPT
PDF
PPT
PDF
Android builders summit slide tour PDF
PDF
PPTX
PDF
20分でわかった事にするパワーマネジメント
- 1.
- 2.
Androidzaurusのつぶやき
使用未許諾
• われらの恐竜先生、販売日にTegra 3のタブ
レットをご購入
• 買った、直後の勉強会にてustream送出マ
シンとして華麗にデビュー
• 独自の視点での解析 -お約束ですね-
- 3.
- 4.
- 5.
Power management ちょー入門
•家庭のパワーマネジメント
– 照明はコマメに消す
– 冷房は設定温度を高めに
→住人が決める・操作する
• CPUのパワーマネジメント
– 不要なものは止める
– 処理速度と落とす
→どうやって決めるのか?操作するの
か?
- 6.
- 7.
BSD 4.3
GENERIC/locore.c
1498 .globl Idle
1499 Idle: idle:
1500 mtpr $0,$IPL # must allow interrupts here
1501 tstl _whichqs # look for non-empty queue
1502 bneq sw1
1503 brb idle
- 8.
- 9.
- 10.
Tegra3のidle
Kernel_V9_4_2_7/arch/arm/mach-tegra/sleep.S
ENTRY(tegra_cpu_wfi)
cpu_id r0
cpu_to_halt_reg r1, r0
cpu_to_csr_reg r2, r0
mov32 r0, TEGRA_FLOW_CTRL_VIRT
mov r3, #FLOW_CTRL_CSR_INTR_FLAG | FLOW_CTRL_CSR_EVENT_FLAG
str r3, [r0, r2] @ clear event & interrupt status
mov r3, #FLOW_CTRL_WAIT_FOR_INTERRUPT | FLOW_CTRL_JTAG_RESUME
str r3, [r0, r1] @ put flow controller in wait irq mode
dsb
wfi
mov r3, #0
str r3, [r0, r1] @ clear flow controller halt status
mov r3, #FLOW_CTRL_CSR_INTR_FLAG | FLOW_CTRL_CSR_EVENT_FLAG
str r3, [r0, r2] @ clear event & interrupt status
dsb
mov pc, lr
ENDPROC(tegra_cpu_wfi)
- 11.
WFI Wait ForInterrupt
• ARMの命令
• 割り込が発生するまで、CPUを低電力モード
で命令の実行を止める
• 眠りの深さ/寝起きの良さ
– 深く眠ると
• 電力低減効果大/寝起きは悪い
• もっさり
– 浅く眠ると
• 電力低減効果小/寝起きは良い
• さくさく
• WFIを呼ぶ前に眠りの深さを指定する
- 12.
- 13.
Omap3のidle
int __init omap3_idle_init(void)
{
:
state->enter = (state->flags & CPUIDLE_FLAG_CHECK_BM) ?
omap3_enter_idle_bm : omap3_enter_idle;
:
}
static int omap3_enter_idle(struct cpuidle_device *dev,
struct cpuidle_state *state)
{
:
}
- 14.
omap3のC-ステート
#define OMAP3_STATE_C1 0 /* C1 - MPU WFI + Core active */
IDLE
昼寝
#define OMAP3_STATE_C2 1 /* C2 - MPU WFI + Core inactive */
#define OMAP3_STATE_C3 2 /* C3 - MPU CSWR + Core inactive */
#define OMAP3_STATE_C4 3 /* C4 - MPU OFF + Core iactive */
#define OMAP3_STATE_C5 4 /* C5 - MPU RET + Core RET */
#define OMAP3_STATE_C6 5 /* C6 - MPU OFF + Core RET */
#define OMAP3_STATE_C7 6 /* C7 - MPU OFF + Core OFF */
爆睡
- 15.
ステートの指定はどうするの?
• CPUIdle Framework
– CPU依存のCステート
– Governor(統治者)によるポリシーベースの管理
– /sys/power/cpuidle_deepest_state
– /sys/proc/pm_prepwstst
• Governor
– “ladder”,”menu”
– drivers/cpuidle/governors
- 16.
cpuidleの構成
/sys/devices/syste/cpu/cpuidle ユーザレベル
インターフェース
menu ladder Governor
Cpuidle アーキ無依存
Generic cpuidle
omap3-cpuidle tegra2-cpuidle tegra3-cpuidle Cpuidle アーキ依存
- 17.
cpuidle
• 実行可能なプロセスがない状態を管理
–昔は単純な停止orループ
– ARMでは命令を追加して明にidleを通知 WFI
– WFIを呼ぶ前に、寝る深さC-Stateを指定
• 標準でLadderとmenuのGovernor
– ユーザプログラムで統計情報から指定も可
• 他の省電力機能もcpuidleを起点に動作
- 18.
他のフレームワーク
• cpufreq
– 動作周波数を変更
– 電源電圧も合わせて変更
• runtime_pm
– SoC内部コアを機能単位ごとに停止するヒントを
管理
– SoC内の機能毎にusecountを用意し、idleのタイミ
ング未使用の機能を止める
– Beagle のpm_branchで実機評価可能
• cpuhotplug
– cpuidleのC-state変更をCPU単位に拡張
- 19.
上級者向けの話題
• Runtime_PM
– http://elinux.org/OMAP_Power_Management
– http://git.kernel.org/?p=linux/kernel/git/khilman/l
inux-omap-pm.git
• BeagleboardでSleep時の電流を8mWにした
話
– http://groups.google.com/group/beagleboard/bro
wse_thread/thread/197a8ef6b46cc828
– 回路を改造して、ボード上のコントローラの
電源供給を止める
- 20.