SOFTVID制御でCPUコア電圧を可変にする Athlon M/Bの改造

最終更新日: 28-Aug-2004

CrystalCPUIDって知ってる? mobile Athlon XP-Mのコア電圧を動的に変更できるんだよ。

 ここに来られた方はもうご存知かと思いますが、CrystalCPUIDはAMD製のモバイルCPU mobile AMD Athlon XP-Mや、Athlon 64が備えるクロック倍率/コア電圧の動的変更機能を操作できるツールです。

 倍率/電圧変更機能は元来、PowerNow!ドライバでのみ使用されるものだったのですが、K8の開発者向けデータシートに操作方法が公開されていて、ついでに mobile K7ノートでも使えることが判ったそうです。

調査してみる

mobile K7とCrystalCPUIDを使って、倍率/電圧の動的変更が可能なデスクトップ環境は?

Athlonのブリッジ解析で有名なサイトFab51などの情報によると、

  1. 倍率変更のためには、チップセットに FID_Change Special Cycle検出とシステムバスのDisconnect機能が必要。
    -->SiS730S以降、VIA KT133A以降、ATi、AMD76x、ALi不明以降 が該当する。
  2. コア電圧変更のためには、上記に加えて、マザーボードが mobile K7のSOFTVID出力で制御可能な回路になっている必要がある。
    -->ノート向けはそうなっている。デスクトップ向けでは存在を確認できていない。(※1)

----
 (※1)2005/07 Geode NX専用M/B Tyan Tomcat K7M発売。

確認してみる

 手元には、FSB133MHzなため既に退役しかかっている CT-7SID(チップセットSiS735)があります。これでCrystalCPUIDの AMD K7/K8 Multiplierを使った倍率変更はできていたので、改造で電圧も変更できるものなのか確認することにしました。

  1. CT-7SIDのCPU_VIDはどのように HIP6301CB(CORE Voltage Regulator Multi-Phase Buck PWM Controller)につながっているのか?
  2. そもそも、本当にデータシート通りに SOFTVID出力から電圧制御するための信号が出ているのか?

 パターンを追って確認したところ、CPU_VIDは HIP6301CBのVIDに直結。ラインは680Ωの抵抗で+2.5Vにプルアップされていました。

 また SOFTVID出力の確認は、玄人志向の倍変ゲタに電圧変更DIPSWを付けてVIDラインをCPUから切り離し、CPUソケット裏で SW-OFFのVIDピンと SOFTVIDピンを直結して試してみることにしました。
無事Win2kが起動できたので K7/K8 Multiplierで電圧変更すると、あっさりコア電圧に反映していました。
 「ほんとうに制御できるんだ...」 感動でした。

回路の検討

 VID信号の切換は素直に74HC157を3.3Vで使う。4bit分しかないからVID[0]はGNDに固定する。CPU_VIDを接続するのは面倒だから、小基板の上にDIPSWを置いて代用する。DIPSWとSOFTVIDのプルアップにはVIDラインを吊っていた2.5Vに10KΩの集合抵抗。これなら簡単。

 ...だがしかし、

  1. mobile Athlon4 のデータシートにあるVID切換に使うPWROKとは、どんな信号なの?

 PWROKはM/B上の3.3VやVCCAやVCCcoreが安定したことをCPUに知らせる信号。データシートにはPWROKがアサートされると、CPUはSOFTVIDピンにL8を出力し内部PLLをL3倍率でロックしてリセットを解除する、と書いてある。つまりPWROKが出るまでSOFTVID出力はオープン状態、未確定。

 CPU_VIDが2.5VでプルアップされていたのでPWROKもそうだろうと思い込み、74HC157のA/Bへそのまま接続したらなぜかSOFTVIDに切換らない。テスターで電圧を測ると1.3Vしかない。え!? VCCcoreでプルアップかい!! データシートをよく読むと確かにそう書いてありました。しかたない、Trを使おう。

 その後 VIDラインを吊っていた2.5Vをこの程度の追加回路の電源に使用しても問題ないようだったので、これで賄うことにしました。

改造M/B:CT-7SIDの様子

2.5VとGND, SOFTVID[4:0], HIP6301CB_VID[4:0]の信号線引出し。CPUとHIP6301CBをつなぐVID[4:0]は切断済。 (第二版回路向け。初版ではこれに加えて PWROK(AE3)も引き出す)

初版:マルチプレクサを使う

回路図
 CPU_VID[4:0]とHIP6301CB_VID[4:0]の接続パターンを切断。パターン上のプルアップ抵抗680Ωを除去。HIP6301CB_VID[4:0]、SOFTVID[4:0]、PWROK(AE3)、電源にする2.5VおよびGNDを引き出して74HC157の載る小基板へ。
 PWROKをTr2段で受け74HC157のA/Bへ、4極DIPSWとSOFTVID[4:1]を10KΩで2.5Vにプルアップしてそれぞれ74HC157のA入力とB入力へ、出力Yを直接HIP6301CB_VID[4:1]に接続。
HIP6301CBの仕様上の問題点:
 HIP6301CBは一度に15%以上電圧を下げるVIDの変化を検知すると、異常電圧と判断してプロテクションを発動し出力をカットしてしまう。
 CrystalCPUIDの作者さんにお願いしてVID変更を1段ずつ行うよう対処していただき、現在は回避されている。ひよひよさん、その節はどうもありがとうございました。<(_ _)>

第二版:ワンチップマイコンを使う

回路図
  PIC16LF84Aで電圧の上限クリッピングやテーブル変換を行い、1段ずつVIDを下げる。消費電力を抑えかつ処理速度を確保できるクロックを模索中。電源2.5Vでの動作速度では正直苦しい。
 PWROKは使わない。SOFTVIDが未確定の間、HIP6301CBには確定したVIDが与えてあればそれで良い。DIPSWに、L8ブリッジと同値かそれ以下のコア電圧のVID値を設定することでPowerON時の初期電圧とし、また上限電圧ともみなす。
 回路の部品定数は、この回路の出力のみがHIP6301CB_VID[4:0]に直結していることを考慮して決定している。
 現在 L5[1]と[3]をクローズしたAthlon XP1600+(Palomino)を載せて 1.25V/6x(800MHz), 1.35V/9x(1.2GHz), 1.50V/11x(1.46GHz)の3段階設定を、Multiplier Management機能で運用中。

調整中の「第二版 回路基板」

M/Bの2.5VとSOFTVID[4:0]とHIP6301CB_VID[4:0]とはコネクタでつなぐ。仮組み、試験運用中。

おまけ:ブリッジのクローズ

穴を開けたマスキングテープを細く切り、ブリッジ上に貼ってコンダクティブペンで埋める。完全に乾くまでさわらないこと。