K10statを使ったCPUの電圧設定
AMDのK10アーキテクチャ用設定ツールK10statで電圧を変更し、Athlon II X2 240を省エネ方面の設定にしてみます。OCと同様の非定格動作なのでPCやOSやHDD内のデータが壊れる可能性もあります。別ページで6コアのX6やAltVidなどの設定を扱っています。
概要
CPUの電圧をいじると以下のようになります。
- CPUの「電圧を下げる」と、「消費電力」と「発熱」が下がる
- CPUの「周波数を下げる」と、より「電圧を下げられる」
- 電圧を「落としすぎる」と、「PCも落ちる」
多くのCPUには電圧設定に若干の余裕があって、それを切り詰めることで省エネ化が図れます。しかし設定を変えることで不安定になる場合もあるので、よくテストする必要があります。
大まかな流れ
- K10statでCPUの電圧の設定をする
- Prime95で負荷テストをしてPCが落ちないか確認
- 落ちれば設定の見直し、パスしたら設定を採用
テスト環境
CPU | AthlonII X2 240 (2core 2.8GHz C2) |
---|---|
マザー | FOXCONN A7GM-S (780G & SB700) |
メモリ | Transcend DDR2 800 2G x2 |
HDD | WesternDigital WD10EADS-00L5B1 (SATA 1TB 5400rpm) |
電源 | EVERGREEN LW-6400H-4 (400W) |
OS | Windows 8 32bit 試用版 |
テスト中のフリーズや強制リブートなどでHDDのデータが壊れる事もあるので、そういった事態が起きても影響が軽い試用版のOSを使っています。Win8は起動がやたらと速いので便利です。
ソフトウェアのダウンロード
作業に必要なソフトを集めます。
K10stat
AMDのK10アーキテクチャCPU専用の周波数や電圧などの設定ができるソフトです。https://sites.google.com/site/k10stat/からダウンロードできます。ここではバージョン1.54を使います。
CPU-Z
CPUの情報表示ソフトで、今回はCPUの電圧と周波数の確認に使います。http://www.cpuid.com/softwares/cpu-z.htmlを開き、右側のサイドメニューからダウンロードします。
ややこしい表示がたくさんありますが、今回は丸で囲った電圧と周波数だけ見ればOKです。自動制御などでリアルタイムに数値が変化するのを確認できます。
2コアなどのマルチコアCPUの場合、この画面で右クリックをするとモニターするコアを変更できます。
Prime95
負荷テスト用に使います。http://www.mersenne.org/freesoft/を開き、真ん中あたりに「Windows 64-bit」や「Windows 32-bit」などのリンクがあるので、使用OSに合ったファイルをダウンロードしてください。
Prime95を起動すると画像のようなウィンドウが出るのでOKボタンを押すと負荷テストが始まります。
テスト中はなにやら英文のメッセージが出ていますが気にせず放置します。エラーが起きると小さなアイコンが赤くなります。エラーになる前に、OSがフリーズしたり勝手に再起動する場合もあります。そういったエラーが起きた場合は設定を見直してください。
Prime95を終了する時はウィンドウ右上の×ボタンではなく、左上の「Test」をクリックして「Exit」を選んで終わらせてください。負荷テストをやり直す時も一度この手順で終了させてください。
古いバージョンを持っている人は新しい物に更新した方がいいかもしれません。初めに、数年前に負荷テストで使ったv25.11という古いバージョンで行い、1時間テストが通った設定を常用することにしました。しかし、その設定でWindowsの動作中に勝手に再起動しました。そこで現状最新のv27.7で同じ設定を試すと、負荷テスト数分で再起動しました。古い物より最新版の方が負荷テストに適しているようです。
K10statによるCPUの電圧変更手順
K10statでは周波数や電圧の変更ができますが、ここでは電圧のみ変更します。
infoタブ
K10statを起動するこの画面になります。CPUの最大周波数や設定可能な電圧が確認できます。この画面は情報だけなのでP-Stateタブをクリックして移動します。
PowerPlane
最大周波数の下にあるPowerPlaneは以下のような意味を持つので、Singleの場合だとここのページの通りにはできないかもしれません。
- Dual:CPUとNBの電圧が別々の値で設定できる
- Single:CPUとNBの電圧が同じ値に設定される→NBに引きずられ値を大きく変えられない
P-Stateタブ
この画面で周波数や電圧の変更ができます。プロファイル機能があり、省エネ用などの設定を作れば用途に応じて切り替える事ができます。
P0 ~ P3はP-Stateといい、それぞれに周波数や電圧が設定されています。それらがPCの負荷に応じて切り替わります。周波数の数値から分かるように、負荷が低いときが低クロックのP3、負荷が上がるにつれて高クロックのP0まで切り替わっていきます。
P-Stateの左側の丸をクリックすると、上の欄でそのP-Stateの設定を変更できます。このP-Stateのデフォルト値を変更して低電圧駆動を目指します。
Windowsの電源設定と周波数の固定
Windows Vista、7、8の設定手順です。
コントロールパネルを開き右上に「電源」と入力すると、電源オプションが出てくるのでクリックします。
電源プランの選択画面で現在選択中のプランの「プラン設定の変更」をクリックします。プラン設定の編集画面で「詳細な電源設定の変更」をクリックします。
ツリーの「プロセッサの電源管理」をクリック、「最小のプロセッサの状態」と「最大のプロセッサの状態」を開きます。このプランだと5~100%の設定になっていますが、負荷に応じて5~100%の範囲でCPUの周波数が変化します。
CPUの周波数の固定
OS側で周波数を変化させられると困るので周波数を固定させます。最大の方を0%にすると、最小の方の値で固定されます。最小の数値を変更して右下の適用ボタンを押せば反映されます。
最小の設定 | 0 ~ 56 % | 57 ~ 74 % | 75 ~ 99 % | 100 % |
---|---|---|---|---|
周波数 | 800 MHz | 1600 MHz | 2100 MHz | 2800 MHz |
P-State | P3 | P2 | P1 | P0 |
CPU-Zの周波数を見ながら最小の値を変えていくと、今回の構成では上記のようになりました。K10statで制御していない時はここで指定された値で固定されるので、今回はとりあえず70%の1600MHzにしておきます。
この方法で各周波数を固定してテストもできますが、すぐ下の方法よりやや手間がかかります。
K10statによる周波数の固定
K10stat動作中は右下にアイコンが表示されるので、それを右クリックします。メニューが出てくるので「Lock P-State」にカーソルを合わせます。メニューが広がるのでP-Stateをどれか選ぶと、そのP-Stateの周波数で固定されます。Unlockを選ぶと上の電源設定で指定した値になります。上の電源設定で固定をしていないとここでロックしても周波数は変化します。
Unlock時は70%にしているのでP2の1600MHzです。Lock P-Stateの操作でP1を選択するとP1の2100MHzになり、K10stat上の周波数がボタンを押したような表示になりました。
電圧の設定方法
CPUの電圧変更はK10statでP-Stateを選択して、電圧のプルダウンから選びます。電圧を変更したら右下の適用ボタンを押せば反映されます。変更した設定は現在選択されているプロファイルに反映されます。画像はプロファイル1が表示されているので、プロファイル1の電圧が変更されました。
最低動作電圧探し
ここでは各周波数のOSが落ちない下限電圧を探ります。
高クロックのP0から設定を行おうとしましたが、下位のP-Stateの電圧よりも下げる事ができないようです。なので先にP3からテストを行う事にします。
作業の流れ
- Prime95を動作させる
- K10statで電圧の設定を一つずつ下げて反映させる
- エラーが起きたら直前の電圧で1時間Prime95を動作させる
- エラーが起きたら1つ電圧を上げる
- その設定で1時間動作したら少し余裕を取って2つ上の電圧を採用
P3の最低電圧探し
K10statでP3固定にし、Primeをかけっぱなしの状態で電圧をデフォルトから1つずつ下げては適用ボタンで反映させていきます。
エラーが起きずに0.6875Vまで来ました。次の0.6750Vを指定して適用ボタンを押すと、
こうなりました。青画面の後に自動で再起動しました。大抵は青画面を飛ばしてそのままPC起動時のPOST画面に戻ります。
それならばとエラーが起きた1つ前の設定0.6875VでPrimeを走らせてみると2時間ぐらい経過してもエラーは起きません。個人的に負荷テストはPrimeが1時間以上動作すればOKとしていますが、再起動した設定の直前は怖いので、P3の800MHzは2つ前の0.7125Vで様子を見る事にします。
他のP-Stateの最低電圧探し
他のP-Stateでも同様の手順で電圧のテストをします。
P2 1600MHz
0.8000Vで再起動、再起動後0.8125Vに設定すると負荷テスト実行前に再起動、0.8250Vは1時間の負荷テストOK、P2の1600MHzは2つ前の設定0.8500Vを採用。
P1 2100MHz
0.9000Vで再起動、再起動後0.9125Vに設定すると負荷テスト実行前に再起動、0.9250Vは1時間の負荷テストOK、P1の2100MHzは2つ前の設定0.9500Vを採用。
P0 2800MHz
1.0375Vで再起動、1.0500Vで負荷テストをすると数分で再起動、1.0625Vは1時間の負荷テストOK、P0の2800MHzは2つ前の設定1.0875Vを採用。
テスト結果
結果は以下のようになりました。
P-State | 周波数 | デフォルト | 設定電圧 | CPU-Z |
---|---|---|---|---|
P0 | 2800 MHz | 1.3750 V | 1.0875 V | 1.056 V |
P1 | 2100 MHz | 1.2750 V | 0.9500 V | 0.912 V |
P2 | 1600 MHz | 1.1750 V | 0.8500 V | 0.816 V |
P3 | 800 MHz | 1.0250 V | 0.7125 V | 0.672 V |
設定した電圧とCPU-Zの表示には若干差があり、CPU-Zの方が低い値になっています。
このAthlon II 240ではどの周波数もデフォルトの電圧から約0.3V下げる事ができました。別のCPUはもちろん同じCPUでも個体や製造時期、電源やマザーボードといったPC環境など、結果が変わる要素は多数あるので実際に負荷テストで動作確認をしてください。
動作テスト
しばらく手動でK10statを起動して反映させて動作確認をしてください。普段している作業で特に問題が起きなければ、自動起動の設定を行います。
自動起動の設定
設定が固まったら自動で動作するように設定をします。Vista、7、8は同じ手順でできるはずです。
タスクスケジューラに登録
タスクスケジューラを開く
コントロールパネルの右上に「タスク」と入力します。検索が実行され一覧が表示されるので、その中から「タスクのスケジュール」をクリックします。
タスクスケジューラのウインドウが開くので、右側にある「基本タスクの作成...」を選びます。
基本タスクの作成
「基本タスクの作成」で何か名前を入力して次へボタンを押します。「トリガー」はログオン時を選ぶとWindowsが起動した時にタスクが実行されます。
「操作」はプログラムの開始を選びます。
「プログラムの開始」では参照ボタンでK10statがある場所を指定します。引数の追加は後回しにします。「開始」にK10statがある場所を指定します。開始に何も記述をしなくても動作しますが、設定ファイルが別のところに作られ参照されます。
「完了」画面で完了ボタンを押せば完成です。
タスクスケジューラ画面の左側のツリーの「タスクスケジューラ ライブラリ」をクリックすると隣のウインドウに今作った設定が見つかります。そこをダブルクリックすればプロパティ画面が開けます。引数を変更する時はこの手順で編集画面を開いてください。タスク作成直後で一覧に表示されない場合は、タスクスケジューラを起動し直してみてください。
タスクの基本設定
プロパティを開いたら最初に表示される「全般」タブの下の方にある「最上位の特権で実行する」にチェックを入れます。これのチェックを入れないとK10statがログイン時に自動起動されません。
画面上のタブ中央にある「条件」タブの電源の項目は、ノートPCなどでバッテリー駆動をする人でK10statを利用する場合は外す必要があるかもしれません。
「設定」タブの「タスクを停止するまでの時間」は3日間に設定されていますが、常時起動をする人はチェックを外した方が良いでしょう。
一度ここで設定を保存して再起動してみてください。K10statが自動で起動するようになっているはずです。
引数の変更
操作タブの項目をダブルクリックすると引数の追加などができる画面が開きます。
引数の内容はK10stat付属のテキストに詳細が書かれています。画像のように「-lp:1」と記述したらK10stat起動時にプロファイル1が読み込まれます。私の環境ではこれに「-nw」を追加してプロファイルの反映だけ行いK10statを終了させ、P-Stateの変更はCnQ任せにしています。
スリープ時の自動実行
K10statを常駐させない「-nw」指定でスリープに入ると電圧などの設定が初期化されます。そこでスリープからの復帰時にも自動実行がされるようにします。「トリガー」タブを開き新規ボタンを押します。
画像のように「イベント」、「システム」、「Power-Troubleshooter」、「1」と項目を埋めていきます。HDDでは少々表示に時間がかかります。
トリガーに項目が追加されました。OKボタンでタスクスケジューラの編集画面を閉じます。キャンセルで閉じると登録がされません。動作は実際にスリープ→復帰と試してみると確認できます。
消費電力の参考記録
ここのデータはPrimeの旧版(v25.11)を使っているなど曖昧な記録なので、大まかな数値の変化を参考にしてみてください。
待機はWindows8のデスクトップ画面でしばらく放置した時、負荷はPrime95は開始数分過ぎに来る「Test 2」が始まってから1分間の間に一番高い電力を拾っています。電圧はCPU-Zの表示です。
デフォルト設定時の電圧や電力
P-State | 周波数 | 設定電圧 | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|
P0 | 2800 | 1.3750 | 1.056~1.360V | 1.376V | 54.7W前後 | 113W |
P1 | 2100 | 1.2750 | 1.056~1.264V | 1.264V | 52.8W前後 | 90.6W |
P2 | 1600 | 1.1750 | 1.040~1.136V | 1.168V | 51.4W前後 | 75.8W |
P3 | 800 | 1.0250 | 1.008V | 1.008V | 48.9W前後 | 61.8W |
アイドル時はCPU-Zの電圧表示がよく変動していますが、負荷時はほぼ一定でした。P3は負荷アイドル共に電圧の変動はありませんでした。消費電力は周波数と電圧に応じて順当に下がっています。
デフォルトと設定変更時の電圧や電力
P-State | 周波数 | 設定電圧 | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|
P0 | 2800 | 1.3750 | 1.056~1.360V | 1.376V | 54.7W前後 | 113W |
1.0500 | 1.008~1.024V | 1.040V | 50.6W前後 | 80.7W | ||
P1 | 2100 | 1.2750 | 1.056~1.264V | 1.264V | 52.8W前後 | 90.6W |
0.9250 | 0.912~0.992V | 0.912V | 49.7W前後 | 69.2W | ||
P2 | 1600 | 1.1750 | 1.040~1.136V | 1.168V | 51.4W前後 | 75.8W |
0.8250 | 0.816~0.9762V | 0.816V | 49.7W前後 | 62.5W | ||
P3 | 800 | 1.0250 | 1.008V | 1.008V | 48.9W前後 | 61.8W |
0.7000 | 0.688~0.928V | 0.688V | 49.6W前後 | 55.6W |
電圧を下げるとアイドル時はさほど変わりませんが、負荷時の電力は約30・20・10・5W下がっています。
周波数と電圧と消費電力
P-State | 周波数 | 設定電圧 | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|
P0 | 2800 | 1.1750 | 1.024~1.136V | 1.168V | 51.5W前後 | 90.2W |
P2 | 1600 | 1.1750 | 1.040~1.136V | 1.168V | 51.4W前後 | 75.8W |
P0を、P2のデフォルト電圧にして周波数だけ異なる状態にしてみました。負荷時は周波数の差が出ていますが、アイドル時はほとんど同じです。アイドル中の消費電力は電圧次第になります。
低電圧設定時の電力
P-State | 周波数 | 設定電圧 | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|
P3 | 800 | 1.0250 | 1.008V | 1.008V | 48.9W前後 | 61.8W |
0.9000 | 0.880~1.008V | 0.880V | 49.2W前後 | 58.7W | ||
0.8000 | 0.784~1.008V | 0.784V | 49.3W前後 | 57.0W | ||
0.7000 | 0.688~0.928V | 0.688V | 49.6W前後 | 55.6W |
800MHzで固定にして電圧を下げていった時の消費電力は、アイドル時はデフォルトの電圧が若干ですが一番低く、負荷時は電圧に比例して下がっていきます。負荷がかかれば周波数は上がるため、800MHzの電圧はデフォルトのままでもいいかもしれません。
Cool'n'QuietとC1E
CnQとC1EはマザーボードのBIOSから設定できる省エネ機能で通常は有効になっています。ここでテストに使っているA7GM-Sでは、「Fox Central Control Unit」→「CPU Configuration」から変更ができます。
Cool'n'Quietの無効化
CnQを無効にすると電源周りの設定からプロセッサの項目が消え、CPUが常時最大の周波数で動作するようになります。この状態でもK10statを使えばP-Stateの制御はできるので、K10stat任せにする場合はCnQを無効にしてもいいかもしれません。
C1Eの無効化
P-State | 周波数 | 設定電圧 | C1E | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|---|
P0 | 2800 | 1.3750 | 有効 | 1.072~1.360V | 1.376V | 56.0W前後 | 113W |
無効 | 1.360V | 1.360V | 61.5W前後 | 112W | |||
1.0500 | 有効 | 1.008~1.024V | 1.040V | 50.6W前後 | 80.7W | ||
無効 | 1.040V | 1.040V | 52.6W前後 | 80.6W |
C1Eを無効にするとアイドル時に変動していた電圧が一定になりましたが、消費電力は上がっています。負荷時の差はほとんどありません。
Platinum電源(PSU500AN80PT)に変更時のデータ
プラチナ電源のデータはPrimeのバージョン27.7で行っています。C1Eは無効になっていました。
P-State | 周波数 | 設定電圧 | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|
P0 | 2800 | 1.0750 | 1.056V | 1.072V | 41.0W前後 | 67.9W |
P1 | 2100 | 0.9500 | 0.944V | 0.944V | 39.4W前後 | 56.8W |
P2 | 1600 | 0.8500 | 0.832V | 0.832V | 38.5W前後 | 50.6W |
P3 | 800 | 0.7125 | 0.704V | 0.704V | 37.5W前後 | 44.2W |
電源変更前後の比較
P-State | 周波数 | 設定電圧 | 待機電圧 | 負荷電圧 | 待機電力 | 負荷電力 |
---|---|---|---|---|---|---|
P0 | 2800 | 1.0500 | 1.008~1.024V | 1.040V | 50.6W前後 | 80.7W |
1.0750 | 1.056V | 1.072V | 41.0W前後 | 67.9W | ||
P1 | 2100 | 0.9250 | 0.912~0.992V | 0.912V | 49.7W前後 | 69.2W |
0.9500 | 0.944V | 0.944V | 39.4W前後 | 56.8W | ||
P2 | 1600 | 0.8250 | 0.816~0.9762V | 0.816V | 49.7W前後 | 62.5W |
0.8500 | 0.832V | 0.832V | 38.5W前後 | 50.6W | ||
P3 | 800 | 0.7000 | 0.688~0.928V | 0.688V | 49.6W前後 | 55.6W |
0.7125 | 0.704V | 0.704V | 37.5W前後 | 44.2W |
赤いのが元の電源で、青いのがプラチナ電源です。負荷アイドル共に10W前後消費電力が下がっています。
設定電圧は、元の電源はv25.11の安定動作の数値、プラチナの方はv27.7の安定動作の数値を利用しています。CPU-Z読みの動作可能な最小電圧の値は元の電源と変わらないようです。