2016年8月1日月曜日

k15stat のようなもの

後日追記: GitHub で公開しました
-----
AMD A8 を省電力化する前回の続き.

TurionPowerControl (tpc) を使って P-State コントロールをしようと思ったのだけど,HW アクセスと関係ない C++ の new とかでコケる(;´д⊂)そもそもおかしなクラスの使い方とかしてるし,ソースコードを見れば見るほど全部書き直したくなってくる衝動を抑えられなくなった.
というわけで K10stat の K15 版のようなものをイチから作ってしまいましたwww

普通は負荷に応じて P-State を切り替える制御にすると思うけど,今回は SwPStateLimit という,P-State の上限を決めるレジスタを触ることにした.こうすることにより,
・自作 P-State 制御と Qool'n' Quiet 制御が共存できる
・Qool'n' Quiet 制御のほうが CPU の負荷に対する反応が早いはず (予想) なので,自作制御が高クロック設定でも Qool'n' Quiet 制御が低クロックに設定したら,Qool'n' Quiet のほうが優先なので,より省電力なはず.

ちなみに AMD の BKDG に載っている SwPStateLimit のアドレスを示す D18F3x68 という文字列,一体何の資源のどこの番地か分からなくて小一時間悩んだが,これは PCI デバイス番号 0x18 ファンクション番号 0x3 レジスタアドレス 0x68 という意味らしい.

で,動画再生しながら自作 P-State 制御した時の CPU 周波数のグラフがこれ.
左が P-State 制御なし,右があり,で,効果は一目瞭然ヽ(´ー`)ノ
ワットチェッカーでも 10W くらい下がった.

0 件のコメント:

コメントを投稿