Software Cooling Function Enabler for 32bit Athlon Series on Win32
Coolon Project

ソフトウェア・クーリング機能

ソフトウェア・クーリング機能とは

コンピュータで何もしていないときでも、CPU は常に働き続けています。このため、通常は 何もしていないときでも CPU には一定の発熱があります。ソフトウェア・クーラーは、CPU が入力待ちなどで仕事をしていない時に、HALT 命令を発行して CPU を一時的に休止させることにより、CPU の発熱を抑制するのが基本動作です。

Windows の場合、CPU が仕事をしていないときはアイドル・プロセスに入ります。Windows2000 や ACPI モードの Windows98 では、アイドルプロセス自体が HALT 命令を発行します。 KCPUCoolerWinCooler など Windows 標準以外の ソフトウェア・クーラーでは、アイドル・プロセスをフックすることにより、アイドル状態の検知と HALT 命令の発行を行っています。

なお、システムモニタ等のプロセッサ使用率はアイドル・プロセスに入っている時間で算出していますから、アイドル・プロセスをフックするソフトウェアがあると、常に CPU が動作していると判断されます。Windows 標準以外のソフトウェア・クーラーを使用しているときにプロセッサ使用率が常に 100 %になるのは、このためです。

Athlon/Duron の特殊事情

ソフトウェア・クーリング機能の概要は前述のとおりですが、Athlon/Duron は他の CPU と 異なり、HALT 命令を実行してもフェーズロック・ループが持続して CPU が低消費電力状態にはなりません(この理由を AMD は HALT から迅速に復帰するためと主張しています)。Windows 標準も含め、一般的なソフトウェア・クーラーが Athlon/Duron で機能しないのは、これが原因です。

Athlon/Duron で HALT 命令実行時に CPU を低消費電力状態にするためには、HALT 時に CPU バスからノースブリッジを切り離す必要があります。

Athlon/Duron のソフトウェア・クーリング機能有効化

HALT 時に CPU バスからノースブリッジを切り離すかどうかは、ノースブリッジ(CPU to Host Bridge)のコンフィグレーション・レジスタに設定があります。本ソフトウェアを含め、Athlon/Duron でソフトウェア・クーリング機能を有効にするソフトウェア (CPUCooL, Hardware Sensors Monitor 等)では、 この設定を変更しています。

単純な話に見えますが、パーツ構成と他のコンフィグレーション・レジスタの設定によっては、 切り離しを有効にすると動作が不安定になったりハングアップしたりすることもあり、それほど 単純ではありません。設定を変更してうまく行けばラッキーくらいに考えてください。

なお、このレジスタは、起動時等に BIOS が初期化するだけで、稼働中に OS 等が書き換えることはありません。したがって、BIOS 初期化終了後に1度設定するだけで OK です。このため、CoolON は常駐しません。

各ノースブリッジの設定

AMD のノースブリッジ(751/761)では、ホストブリッジ(Bus#0/Dev#0/Function#0)のコンフィグレーションレジスタのオフセット 60-63h の bit18 が Halt Disconnect Enable という設定になっており、ここを1にすると切り離しができます。ちなみに、bit17 が Stop Grant Disconnect Enable で、CoolON では両方を1にします。

VIA のノースブリッジでは、KT133 系の場合レジスタ 52h の bit7 が Disconnect Enable When STPGNT Detected で、 ここを1にすると切り離しができます。KT266 系では 52h の代わりに 92h を使用し、さらに 95h の bit1 に Disconnect Enable When Halt Detected が追加されており、両方を1にする必要があります。KT400 系では、92h/95h が D2h/D5h に変更されています。さらに、KT880 はホストブッリッジ Function#1 のレジスタ 82h/85h に移動しています。

SiS のノースブリッジでは、730 系が 6Bh、735-745 が 6Ah、746 以降が 6Ch の bit0 が C1 (Halt) Disconnect になっています。SiS735 では 6Ah の bit3 が S1 (StopGrant) Disconnect という情報がありますが、ここは通常有効になっているようです。

nVidia のノースブリッジについては詳細不明ですが、nFroce は E7h の bit3-2 を 11b に、nForce2 では 6Fh の bit4 を 1にすると切り離しができるようです。なお、nForce2 400 系では、6Fh の bit7-5 を 000b にしないと効果が小さい M/B (BIOS)が存在します。