ホーム > プログラミングメモ > はじめてのCrystalCPUID
 

はじめてのCrystalCPUID

64ビット・プログラミングをするために購入したAthlon64ですが、 Athlon64には64ビット(AMD64)以外にも多くの特長があります。 そのひとつにCPUの動作周波数と電圧を動的に変化させられることが挙げられます。 これによって、CPU発熱の低減、消費電力の低減を図ることができます。

純正Cool'n'QuietからCrystalCPUIDへ

前述の通りAthlon64はCPUの動作周波数(正確にはクロック倍率)と電圧を動的に変化させることができます。 この機能をAMD社はCool'n'Quietテクノロジーと呼んでいます。 この機能を使うには、Cool'n'Quietに対応したCPU、 マザーボード(主としてBIOS)、ソフトウェア(ドライバーソフトウェア)が必要になります。 CPUに関してはAthlon64シリーズはもちろん対応しています。 (同じAMD64であってもOpteronシリーズは必ずしも対応していないらしい。) ちなみに今使っているCPUはAthlon64 3000+(Socket754, 実クロック2.0GHz、OPNはADA3000AEP4AX)です。 マザーボードに関しては、今使っているもの(ASUSTeK K8V SE Deluxe)は対応しており、 Cool'n'QuietソフトウェアもASUS社のサイトからダウンロードできます。

最初は(ASUS社のサイトからダウンロードした)純正のCool'n'Quietソフトウェアを使っていましたが、 使っているうちに以下の点が気になりだしました。

【ASUS版Cool'n'Quietソフトウェアで気になる点】
(1)動作周波数の下限が1GHzである。 (仕様上は800MHzまで下げられるはず。) (2)ソフトウェアを最小化(タスクトレイに格納)した状態で起動することができない。 (スタートアップに入れているので、Windows起動時に必ずウィンドウが表示されてしまう。)

そこでCrystal Dew Worldで配布されている CrystalCPUIDを使うことにします。(Vectorからもダウンロード可能。ただし最新版は本家サイトが早い。) CrystalCPUIDには主として2つの機能があります。 1つはCPUに関する各種情報の取得、もう1つがCPUのクロック倍率・電圧の変更です。 クロック倍率・電圧の変更には2通りの方法があります。 1つは所定のクロック倍率・電圧に固定してしまう方法、 もう1つはCPU負荷に応じて動的に変更する方法です。 動的に変更する方法をMultiplier Managementと呼びます。 このMultiplier Managementが純正Cool'n'Quietソフトウェアの代替になります。 (CrystalCPUIDがCool'n'Quietの機能を使ってクロック倍率・電圧を変更する。)

ちなみにCrystalCPUIDを使ってクロック倍率・電圧を変更する場合、以下の点に注意する必要があります。

【CrystalCPUIDを使ってクロック倍率・電圧を変更する場合の注意点】
(1)他のCool'n'Quietソフトウェアをインストールしないこと。 対応CPU、対応マザーボードがあれば、後はCrystalCPUIDだけで充分。 (2)(x64版WindowsXP/2003以降を使用している場合のみ) 「コントロールパネル -> 電源オプション」の電源設定は 「常にオン」か「自宅または会社のデスク」にする。(「常にオン」が無難) これ以外の設定だと、CPU低負荷時にWindows自身が クロック倍率を下げてしまう(設定してしまう)ために、 Multiplier Managementと競合して クロック倍率が意図した通りに変化しないことがある。 (x64版WindowsXP/2003ではCool'n'Quietソフトウェアが標準で インストールされるため。)


Multiplier Managementを使う

さっそくMultiplier Managementを使ってみましょう。(本稿執筆時のCrystalCPUIDのバージョンは4.1.4.226です。) CrystalCPUIDを起動したらプルダウンメニューの「拡張機能 -> Multiplier Management」(英語表記の場合は「Function -> Multiplier Management」)を選択し、チェックが入った状態にします。

次に「ファイル -> Multiplier Managementの設定」(英語表記の場合は「File -> Multiplier Management Setting」)を選択し、「Multiplier Management Setting」の画面を出します。

Multiplier(FID)という項目があります。これはクロック倍率で、CPUの内部周波数をSystem Clock(ベース・クロック)の何倍で動作させるのかを 指定します。(本CPUの内部周波数(=実クロック)は2.0GHzであり、この場合は10倍(200MHz×10)になります。) クロック倍率をMaximum、Middle、Minimumの3つについて個別に設定できることがわかります。 さらにVoltage(VID)という項目もあります。これはCPUコアの電圧です。 電圧についても(グレーアウトされているものの)Maximum、Middle、Minimumの3つについて設定できそうだということがわかります。 (「Enable Voltage」ボタンを押し下げることで電圧を設定できるようになります。)

【Multiplier Managementの重要な設定項目】
Multiplier(FID): クロック倍率 Voltage(VID): 電圧 上記のいずれも、Maximum、Middle、Minimumの3つについて個別に設定可能。


クロック倍率と電圧の設定

クロック倍率については、最大値(この場合は10.0)以下の範囲で選べばいいです。 電圧については、必ずしも設定する必要はありません。 クロック倍率のみ変更し、電圧は変更しない(Voltage(VID)がグレーアウトされた状態)という設定でも問題ありません。

ただ下げられるのであれば、電圧も下げたいところです。なぜならCPUの消費電力は一般に(周波数)×(電圧)×(電圧)に比例する、 すなわち電圧の2乗に比例するからです。 例えば電圧を30%下げる(×0.7)だけでも、2乗で効くので消費電力は(理論上は)50%下がる(0.7×0.7=0.49≒0.5)ことになります。 というわけで、電圧も下げることにします。

電圧は、クロック倍率(動作周波数)が大きいときはそれ相応に高く、クロック倍率が小さいときはそれ相応に低くするのが原則です。 なおクロックアップするのでない限り、CPU規定の定格電圧よりも高い電圧値を設定してはいけません。 (CPUが故障する原因になります。私はクロックアップをしない主義です。) かといって、低すぎるのもいけません。(動作が安定しません。)

電圧をどの程度の値に設定すればよいのかについては、自分で試行錯誤してみるのもいいですし(実際に低い値に設定し、その状態で安定稼動するかどうかを調べる)、 他の方がまとめられたものをWeb上で探してもいいのですが、 ここでは、AMD社の資料を参考に設定することにします。

AMDのサイトから「AMD Athlon64 Processor Power and Thermal Data Sheet」をダウンロードします。 (本稿執筆時は「Processors -> Support & Downloads -> Technical Documentation -> AMD Athlon64 Tech Docs」からダウンロード可能。) 資料を開くと、本CPU(OPNはADA3000AEP4AX)について以下のような仕様が記されています。 (引用元:「AMD Athlon64 Processor Power and Thermal Data Sheet」 Publication#:30430, Revision:3.41, Issue:October 2004)

【ADA3000AEP4AXの仕様(抜粋)】
Max P-State: 2000MHz VID_VDD 1.50V Thermal Design Power 89W Intermediate P-State #1: 1800MHz VID_VDD 1.40V Thermal Design Power 67W Min P-State: 1000MHz VID_VDD 1.10V Thermal Design Power 22W

横道に逸れますが、OPN(Ordering Part Number, 型番みたいなもの)はCPUのヒートスプレッダ上に記載されています。 CPUをマザーボードに取り付ける前であれば、そこを見ればわかります。 取り付けてしまった後でヒートスプレッダを見ることが出来ない場合は、CrystalCPUIDに表示される CPUIDの情報(Family, Model, Stepping)などをもとに、 Fab51のOPN Guideを見れば、おおよそ推定できます。(完璧に特定できるとは限りません。)

例えば、本稿で使っているAthlon64はMobile版やDTR版ではなくDesktop版で、CPUIDは「Family=F, Model=C, Stepping=0」で、 PlatformはSocket754、Name Stringは「Athlon64 Processor 3000+」ですので、 OPN GuideのAthlon64(Socket754)の項の、「CPUID=FC0」に該当する箇所を 見れば、「ADA3000AEP4AX」であることがわかります。 (OPNの各項目の意味については、上記AMD社の資料にも詳細な記述があります。)

本題に戻ります。 上記仕様より、「2000MHz(200MHz×10)の場合は1.50V、1000MHz(200MHz×5)の場合は1.10Vで動作させればよさそうだ」ということがわかります。 そこで、以下のように設定することにしました。

Multiplier Management Setting

上記画面でOKボタンを押せば、Multiplier Managementの設定は完了です。

自動起動させる

Windows起動時に自動的にMultiplier Managementを開始させるために、ショートカットを作成することにします。 プルダウンメニューの「拡張機能 -> AMD K7/K8 Multiplier」(英語表記の場合は「Function -> AMD K7/K8 Multiplier」)を選択し、 「AMD K7/K8 Multiplier」の画面を出します。画面内の「Create Shortcut on Desktop」ボタンを押すと、CrystalCPUIDのショートカットがデスクトップ上に 作成されます。

「AMD K7/K8 Multiplier」の画面を閉じてから、作成されたショートカットのプロパティを開き、リンク先を以下のように編集します。

【CrystalCPUIDのショートカットの編集】
CrystalCPUID起動時のオプション・スイッチ(朱書き箇所)を 以下のようにする。(プログラムのパスは一例。) "C:\Program Files\CrystalCPUID\CrystalCPUID.exe" /CQ /HIDE /RESI

/CQはMultiplier Managementを有効にするという意味、 /HIDEはCrystalCPUIDのメイン画面を表示せずに起動するという意味、 /RESIはCrystalCPUIDの終了をタスクトレイアイコンからのみ行えるようにするという意味です。 なおタスクトレイのアイコンをクリックしてCrystalCPUIDのメイン画面を表示させることがないのであれば、 /RESIは不要です。

完成したショートカットをスタートメニューのスタートアップに入れておけば、Windows起動時に自動的に Multiplier Managementが開始するようになります。

確認する

クロック周波数を確認してみます。 タスクトレイにあるアイコンをクリックして、CrystalCPUIDのメイン画面を出します。 そしてCPU負荷が低い時にプルダウンメニューの「編集 -> リフレッシュ[QPC+MMT]」(英語表記の場合は「Edit -> Refresh[QPC+MMT]」)を選択して、計測させます。

CrystalCPUID

若干の誤差はあるものの、しっかり800MHzになっています。 マウスカーソルをタスクトレイアイコンにかざすことでも、クロック倍率と電圧を表示させることができますし、 プルダウンメニューの「拡張機能 -> Real Time Clock」(英語表記の場合は「Function -> Real Time Clock」)を選択することでもクロック倍率とクロック周波数を表示させることができます。 以下、上からMaximum時・Middle時・Minimum時のReal Time Clockの画面です。

Real Time Clock

なお上記Real Time Clockの画面のQやMは、クロック周波数の計測方法を示しています。 QはQPC(APIのQueryPerformanceCounter())の略、 MはMMT(Multimedia Timer、APIのtimeGetTime())の略、 ここにはありませんが、 WはWT(Windows Timer、APIのGetTickCount())の略です。

使ってみて

不都合はありません。 クロック倍率・電圧が切り替わる時にぎくしゃくするようなこともありません。 DVD再生時など負荷がかかるときはMaximumモードになりますし、Webを閲覧している場合などはMinimumモードになります。 意外だったのは、ソフトウェアのインストール時です。 ずっとCPUに負荷がかかり続けていると思いきや、ファイルコピー時など負荷がかかっていない時間がけっこうあり、 そうした場合は自動的にMinimumモードになります。 タスクトレイにあるCrystalCPUIDのアイコンを眺めるのが楽しみになりました。 (アイコンの中央がMaximum時は赤色、Middle時は黄色、Minimum時は青色になるので、 ひと目で確認できます。なお、この機能を使うには「Multiplier Management Setting」の画面で 「Colorful Icon」にチェックを入れておく必要があります。)

CPU温度も下がっています。マザーボード付属のソフトウェア(ASUS PC Probe)で調べてみると、 CrystalCPUID未使用時(CPUが常に最高クロック・最高電圧で廻り続ける状態)と比べておおよそ5度程度(室温は16度弱)下がっています。 (下がり方は室温やパソコン内の状況(空気の流れ方)などによって変わってきます。上記値はあくまでも一例です。)

一度CrystalCPUIDの味をしめてしまうと、クロック倍率・電圧が可変でない CPU、例えばインテルのデスクトップ用CPU(SpeedStep未対応)を使うのが馬鹿らしくなってきます。 特にPrescottコア(C0ステッピング)のPentium4/CeleronDを使っている人にはご愁傷様と言いたくなります。 (ただでさえ高発熱なCPUが低負荷時にもずっと最高クロックで廻り続ける、要は常に高発熱状態なわけですから。) 「今後CPUを買うときは、Multiplier Managementが使えるCPUを!」とすら思えてきます。(=AMDのCPUがもっと欲しくなる。)

Athlon64などの純正Cool'n'Quietソフトウェアが使えるCPUであっても CrystalCPUIDを試す価値があります。 CrystalCPUIDの方が細かく設定できますし、 (私見ですが)かゆいところに手が届くように作られています。 (この点におおいにはまってしまい、こうして解説ページを作成した次第です。)

VeniceコアAthlon64

VeniceコアAthlon64 3200+(ADA3200DAA4BP)とASUS A8V Deluxeを購入しました。 まず電圧ですが、AMDの資料では「Variable」となっているだけでよくわかりません。 (本稿執筆時点では「AMD Athlon64 Processor Power and Thermal Data Sheet」が改訂されていない。) BIOS画面を見ると1.400Vに設定されているようですが、1.350Vでもかまわないという話も聞きます。 よくわからないのですが、「規定値よりも低い電圧値に設定する分には(CPUにダメージを与えないので)大丈夫だろう」と考え、 Multiplier Managementは以下のように設定しました。

CrystalCPUID

Minimumの電圧が1.100Vとなっているのは、これより小さな値に設定しても(ASUS製マザーボード用ハードウェア監視ソフトである)PC Probeに表示されるVCoreの値が変化しないからです。 Minimumのクロック倍率が4.0x(=800MHz)ではなく5.0x(=1000MHz)となっているのは、 5.0xよりも小さな値に設定するとCPUがフリーズ(?)してしまうためです。 (HyperTransportの動作周波数を1000MHzから800MHzに低下させれば、4.0xのクロック倍率も使えるようになるらしいですが、 当方では試していません。5.0xでも充分省電力・低発熱であり、困っていないので。) さっそく、前述の方法でクロック周波数を確認します。

CrystalCPUID

参考用に、アイドリング時(=Multiplier ManagementのMinimum状態)のCPU温度を以下に示します。(Windows起動時はクロック倍率と電圧が固定なので、CPU温度は30度程度まで上昇します。 CrystalCPUIDが起動してMultiplier Managementが効き始め、しばらくすると温度が下がります。)

ASUS PC Probe

フル稼働時でCPU温度は36度程度です。それにしてもアイドリング時のこの低発熱、快適の一言につきます。 (注意:CPUクーラーは別売りのものを使っていますので、CPUファンの回転数はCPU付属品のものを使った場合と異なっているかもしれません。)

NewarkコアMobile Athlon64

GatewayのノートPC「7430JP」を購入しました。 メーカー製のPCにはあまり興味がないのですが、この機種だけはスペックを見た途端に惚れてしまいました。 というのも、「CPU:AMD Mobile Athlon64 3700+, Chipset:VIA K8T800, GPU:ATI Mobility RADEON 9600」からわかるように 枯れた構成になっているからです。 WindowsXP Professional(x64版)をインストールしたところ、 Sound, Ethernet(LAN)についてはインストール時に自動認識、ドライバインストールが行われ、 GPUも自動認識はされなかったものの、ドライバ自体はインストールCDに含まれており、 デバイスマネージャーから手動でドライバを更新(一覧から選択して更新)したところ、あっさりインストールできてしまいました。 枯れた構成、ちょっと古めの構成は、OSのインストールCDに含まれているドライバだけで動作するので、気楽です。

さっそく、CrystalCPUIDを動かしてみましょう。

CrystalCPUID

Multiplier Managementを利用するにあたっては、MAX時とMIN時のクロック倍率・電圧(特に電圧の方)がわかる必要がありますが、 モバイル系CPUでは、そうした情報がデータシートから得られないことがあります。 手元の「AMD Athlon64 Processor Power and Thermal Data Sheet」(Rev 3.51, March 2006)を見ても、掲載されていません。 (Turion64, Turion64 X2のデータは掲載されているのですが。) こういう場合は、Cool'n'QuietドライバでMAXの状態とMINの状態を発生させ、 その時点でのクロック倍率・電圧を観測するのが簡単・確実です。 Cool'n'Quietドライバを組み込んだ状態で以下のようにします。 なお前述の通り、x64版WindowsXPでは、OSインストール時に自動的にCool'n'Quietドライバがインストールされます。 (デバイスマネージャでCPUドライバを見ると、amdk8.sysになっているのでわかります。)

電源設定で以下のようにして、MAXの状態を発生させます。

CrystalCPUID

CrystalCPUIDを起動し、プルダウンメニューの「拡張機能 / AMD K6/K7/K8 Multiplier」を選択すると、以下のようになります。 (この時点ではMultiplier Managementを実行してはいけません。Cool'n'Quietドライバと競合して、わけがわからなくなりますので。)

CrystalCPUID

Currentの項から、MAX時はクロック倍率は12倍、電圧は1.350Vであることがわかりました。 今度はMINの状態を発生させます。

CrystalCPUID

CrystalCPUIDを起動し、プルダウンメニューの「拡張機能 / AMD K6/K7/K8 Multiplier」を選択すると、以下のようになります。

CrystalCPUID

Currentの項から、MIN時はクロック倍率は4倍、電圧は0.950Vであることがわかりました。 これらを踏まえて、Multiplier Managementを以下のように設定しました。

CrystalCPUID

前述の通り、Cool'n'Quietドライバが組み込まれた状態でMultiplier Managementを使う場合は、電源設定を「常にオン」にしておいた方が無難です。

モバイル系CPUなので、MIN時の電圧はもっと下げられる可能性があるのですが、 この設定で充分に静か(ファンが停止)ということもあり、満足しています。

ManchesterコアAthlon64 X2

ASUS A8V DeluxeのCPUをAthlon64 3200+からAthlon64 X2 3800+(ADA3800DAA5BV)に交換しました。 CPU交換後電源を入れたところ、旧CPUでOSインストールしたHDDでそのままWindowsXPが起動しました。 最初の起動時に「新しいデバイスが見つかりました」のメッセージが表示されて再起動を促され、再起動するとデュアルコアとして正常に認識されるようになりました。 このままでもよかったのですが、結局クリーンインストールしました。

CrystalCPUIDのメイン画面とMultiplier Managementの設定画面を以下に示します。

CrystalCPUID

CrystalCPUID

Vistaでの活用方法

CrystalCPUIDはVista(x86,32bit)、Vista(x64,64bit)のどちらでも問題なく動作します。 Vista(x64)では、デジタル署名のないドライバが原則利用できなくなっており、 あやうくVista(x64)環境でのCrystalCPUIDの利用が制限される(使い勝手が悪くなる)ところでしたが、 ひよひよさんが私財を投じてデジタル署名を取得してくださったおかげで、Vista(x64)環境でも 従来の2000/XP/Vista(x86)同様に、CrystalCPUIDを使うことができます。

前述のGatewayのノートPC「7430JP」にWindows Vista Home Basic(x64)をインストールし、さらにCrystalCPUIDを常駐させました。 ここでは、XPと設定方法が異なる箇所を中心に説明します。

まず、CrystalCPUIDのメイン画面とMultiplier Managementの設定画面を以下に示します。

CrystalCPUID

CrystalCPUID

CrystalCPUIDを常駐させる場合は、OS標準のCPUドライバ(Cool'n'Quietドライバ)がクロック倍率・電圧を調整しないように、設定する必要があります。 設定画面を出すには、「スタート」ボタン -> 「コントロールパネル」 -> 「モバイル コンピュータ」 -> 「電源オプション」を クリックしていった上で、現在選択されている電源プランの「プラン設定の変更」をクリックし、「詳細な電源設定の変更」をクリックします。

CrystalCPUID

以下のようにして、「最大のプロセッサの状態」も「最小のプロセッサの状態」もすべて100%にしてしまいましょう。

CrystalCPUID

CrystalCPUIDを常駐させるにあたって、2000/XPではショートカットを「スタートアップ」フォルダに入れておけば大丈夫でしたが、 Vistaでこれをやると、Windows Defenderによってブロックされたり(スタートアップ・プログラムのブロック)、 ブロックされたCrystalCPUIDを手動で起動させようとしてもUAC(ユーザー・アカウント制御)のダイアログが出て確認を求められたりとわずらわしいので、 タスク スケジューラを用いて常駐させることにします。 この方法ですと、Windows Defenderによってブロックされることなく、 UAC有効のままでも、わずらわしいダイアログが出ることもなく、CrystalCPUIDが起動・常駐してくれます。

まず、「スタート」ボタン -> 「コントロールパネル」 -> 「システムとメンテナンス」 -> 「管理ツール」 とクリックしていき、 「管理ツール」のウィンドウに表示されている「タスク スケジューラ」をダブルクリックします。 表示された「タスク スケジューラ」のプルダウンメニューから、「操作」 -> 「タスクの作成...」を選びます。

CrystalCPUID

「全般」タブでは、名前を入力し(ここでは「CrystalCPUID起動・常駐」とした)、「最上位の特権で実行する」にチェックを入れます。

CrystalCPUID

「トリガ」タブでは、タスクの開始を「ログオン時」に設定します。

CrystalCPUID

CrystalCPUID

「操作」タブでは、実行する操作を「プログラムの開始」に設定し、実行するCrystalCPUID.exeを指定し、さらに開始時のオプションスイッチを指定します。

CrystalCPUID

CrystalCPUID

タスクの作成が完了したら、タスク スケジューラを終了させた後、Windowsを一旦ログオフしてから、再度ログオンしてください。 CrystalCPUIDがこんな感じで常駐していることでしょう。(ブルーのCPUアイコンがなんともいい感じです。)

CrystalCPUID

リンク集

Athlon64/SempronのQuick Reference Guide
OpteronのQuick Reference Guide

最終更新日:2008年4月11日(金)

Copyright(C) 毛流麦花
 
64ビットCPU(AMD64+EM64T)でアセンブラ