Athlonシステムの改造に着手。 99/8/23


AMD社よりAthlonプロセッサが発売となったある日,Workshop EXcraftの片山店長から「Athlonシステムの改造解析をご一緒にいかがですか?」とお誘いを受け貴重な機会と多くの情報をいただきました。今回は,その時のデーターからAthlonシステムの改造方法を可能な限り公開いたします。

Athlonプロセッサについては,各所のWebページで盛んに内部解析が進められており,内部クロック倍率の設定変更手段は周知のテクニックとなりつつあります。ところが,マザーボード側の解析状況は,今ひとつ盛り上がりに欠けているような印象もあり,今回の解析作業には,結構乗り気満々でのぞみました。ただ,Athlonプロセッサのアーキテクチャに勉強不足でいまいち理解していない部分があるかも知れませんが,ご容赦のほどお願いいたします。では,Athlonプロセッサ用マザーボードの諸元表です。

開発・製造 台湾Micro-Star International 社
CPUソケット スロットA
メモリ/PCI制御チップセット AMD-750
ボード種別 ATX(30.5 x 20.8 cm )
メモリ・ソケット DIMM×3
メモリ種類 SDRAM(PC-100)
二次キャッシュ 0バイト(CPUに内包)
キャッシュ・メモリ種類 CPUに内包
拡張スロット PCI×4,ISA×1,PCI/ISAX1,AGP×1
BIOSメーカ 米AWARD社
BIOSバージョン Revisiion1.1B3 072299
PLL素子型番 ICS社製ICS9248-64
設定可能な外部クロック 100MHz固定
設定可能な内部クロック CPUに依存
クロックの設定方法 無し(BIOSに依存)
CPU電圧制御素子 SEMTECH社製SC1144ABCSW
CPU電圧の設定方法 自動設定
添付マニュアル 英語

それでは,本題に入りますが,題材となったマザーボードは,諸元表の通りMSI社製MS6167でパッと見た感じは,Pentiumシステムと差ほど変わらない印象を持ちました。ただ,Vcore電源回路でしょうか?コンバータ回路の終段電力素子がやけに目立つ代わりにケミコンの存在が薄くCPUによっては,電源回路のデザインも変わるものだと思った次第です。一方,クロック回路に注目してみますとこのマザーボードに搭載されているPLL-ICは,ICS社製ICS9248-64でCPU-CLK,PCI-CLK,AGP-CLKやI/O-CLKを管理しています。

データーシートを見ると本来,この素子には,50/66.6/90/100/120/133.3MHzのCPUCLKを出力する能力があり,FS0,FS1,TEST#ピンの設定でそれぞれのクロック選択が可能となっています。そこでMS6167の回路を解析すると各ピンともプルアップ抵抗でHiに固定され100MHzがデフォルトとなっていました。

右の写真がMS6167のPLLオシレータブロックです。CPUCLKを決定するFS0,FS1は,PLL-ICの1ピン,2ピンでありパターンを追うとRN12に流れ,分岐してR76,R77に接続されています。この抵抗素子によって両方のピンがプルアップされているのです。そしてR75,R78の空きランドがプルダウンのポジションであることが予測されます。いま,ここで120MHzのCPUCLKを設定するなら,データーシートからFS0(1ピン)のみプルダウンすれば良いことになります。早速,R76を取り外してR75のポジションに0Ωチップを貼ってみました。ところが,先の予測に反してAthlonプロセッサは,起動しようとしません。(POSTモニターは,FFを表示)周波数カウンターでPLL-ICのCPUCLKを測定したのですが,しっかり120MHzのクロックを出力しているにも関わらずです。おそらくは,CPUのクロックアップマージンを超えてしまったのか,BIOSの仕様でエラーが生じてしまったのか,現時点では,確かめる術がありません。

ほのかな不安が漂う雰囲気の中とりあえず従来の手段でPLLオシレータ回路の乗っ取りを敢行する事になりました。PLL-ICのリファレンスクロックは,1ピンと2ピンからRN12に流れるパターンに沿って送り出されています。1ピン側のREF0は,RN12を通じてISAスロットのB30ピンやサウスブリッジに接続されていることが判明しましたが,REF1は,どうやら使用されていないようです。よって,RN12とC550用空きパッドの接続パターンをカットしてリファレンスクロックの注入ポイントとしました。一方I/Oクロックは,23ピンのUSB0(48MHz)と24ピンのSEL24_48#/24-48MHzがターゲットになります。(ここで24ピンは,24MHzと48MHzのどちらを設定しているのか,調べたところ前者を出力していることが判明しました。)PLL-ICの23ピンは,RN10に接続されていますのでそこからC549の空きパッド間をカットして48MHzの注入ポイントとします。残りの24ピンは,R62を通じてFDCにクロックを送り込んでいることから,このR62を取り外してクロックラインを分断し24MHzの注入ポイントとします。

今回は,EXcraft製のオシレータ基板を使用して必要なクロックを生成し各所の注入ポイントへ配線を施しました。写真では,すでにマザーボード上の水晶振動子を抜き去り,丸ピンソケットを実装してあります。このソケットに元の14.318MHzより高い周波数の水晶振動子を装着することでマザーボードのPLLオシレータは,元の100MHzより高いクロックを送り出すことになります。詳細は,拙本(パソコン改造スーパーテクニック)の第4章を参照してください。さらに,p59で紹介してあるFEXT'97PLLキットを接続して任意の外部クロックを設定することも可能になります。なお,今回のEXcraft製オシレータ基板は,現在のところ単品販売はされていないとの事です。
さて,従来の手法で上手く乗っ取りが出来たのでしょうか?まずは,上述の丸ピンソケットに元の水晶振動子(14.318MHz)を装着してデフォルト動作を試みました。結果は,上々で正常にPOSTしています。BIOS画面から,Athlon500MHzと正しく認識しています。次に16.0MHzの水晶振動子に取り替えてみましたところBIOSは,558MHzを表示してPOST処理をこなして行きました。FDドライブからDOSの起動も完了しコマンドレベルの動きも問題無いようです。最終的に645MHzのBIOS起動にも成功しています。ただ,残念な事に荷が重たかったのかOSのログイン画面を拝む所まで到達出来ませんでした。しかし,標準の電圧で30%アップのマージンが望めるなら,CPU電圧を操作する事である程度のクロックアップ常用が可能になるかも知れません。それと,前述のPLL-ICに直接120MHzの出力を設定しても起動しなかった謎が深まります。

さて,原発乗っ取りの成功に伴いクロックアップ常用限界を策定してみましたが,どうも安定した良い結果が得られません。せいぜい550MHzが良いところです。これでは,BIOS起動限界の645MHzは,意味を持ちません。そこで色々と原因を調査した結果,Athlonプロセッサに内包されているセカンドキャッシュの動作限界が最も低い事が判明しました。(ここでもPentiumプロセッサと同様の悩みと試練を抱える結果となってしまいました。)ともかくこのAthlon500に実装されているメモリを特定するためにケースを分解して見ました。すると,SEC社製の4nS品が貼ってありパーツナンバからPentiumプロセッサと同様のメモリであると思われます。(Athlon600では,Pentium用と異なる電圧仕様のメモリが採用されている事から,もしかするとこのチップも若干異なる仕様かも知れない)おそらくこのメモリもI/Oバッファーの動作電源はVcore電圧で動作しているのだろうと言う予測からテスターをあててみると案の定VCC_COREに直結されていました。と,なればCPUVcore電圧の昇圧でいくらか改善出来そうだという結論に達しMS6167のCPUVcore電源回路の解析に着手しました。

まずは,Athlonプロセッサのデーターシートから,どのような仕様でコア電圧を決定しているのか調べてみるとPentiumプロセッサのVID制御と同じ手法が採用されてあり4本の信号線でマザーボードの電源回路に連絡する様になっています。下の表がVIDパラメータと要求する電圧の関係を示しています。

VCC_CORE (V) VID0 VID1 VID2 VID3
2.05 0 0 0 0
2.00 1 0 0 0
1.95 0 1 0 0
1.90 1 1 0 0
1.85 0 0 1 0
1.80 1 0 1 0
1.75 0 1 1 0
1.70 1 1 1 0
1.65 0 0 0 1
1.60 1 0 0 1
1.55 0 1 0 1
1.50 1 1 0 1
1.45 0 0 1 1
1.40 1 0 1 1
1.35 0 1 1 1
1.30 1 1 1 1

ケースを取り去ったAthlonプロセッサのVIDパラメータを解析してみますと下表の様に設定されており,上表からこのAthlonプロセッサは,1.60VのCPUVcoreを要求している事になります。

Athlonプロセッサ・ピン番号 A112 A113 A114 A115
Athlonプロセッサ・ピンネーム VID0 VID1 VID2 VID3
VIDパラメータ設定素子番号 R148 R150 R151 R153
実装素子の有無 無し 有り 有り 無し
VIDパラメータロジック 1 0 0 1

次にMS6167側の電源回路をクローズアップしてみますとSEMTECH社製SC1144によって制御されています。

右の写真がその制御ブロックを示していますが,SC1144の隣に74F157も配置されています。この素子は,2to1Data Selectoreと呼ばれるロジック素子でAthlonプロセッサとSC1144の間に割り込む形で実装されています。なるほど,これなら2系統のデーターを簡単に切り替えられます。つまり,プロセッサが持っている標準のパラメータと横から(BIOS)割り込ませたいパラメータをこの74F157に入力しておきセレクト信号で切り替えればSC1144に送り込むVIDパラメータを選択出来るわけです。しかし,現状のBIOSリビジョンでは,BIOS-SETUPメニューからコントロール不可となっています。ただ,回路的には,準備が整っていると思われる事から将来のBIOSアップデートである程度の制御が可能になるかも知れません。
右の図を見てください。これがSC1144のピンレイアウトです。6ピンから10ピンでVIDパラメータを受け取って要求された電圧をAthlonプロセッサに送り込みます。要は,これらのピン・リードに入力するパラメータを乗っ取れば良いわけです。ここで気がついた方がいらっしゃるかと思いますが,AthlonプロセッサがサポートしているVIDピン数に対してVID4が一つ多くなっていますね。これは,SC1144がサポートしている32通りの出力電圧(1.30V〜3.50V)の内,Athlonプロセッサは16通り(1.30V〜2.05V)の内の一つを利用しているだけに過ぎないのです。つまりVID4を操作すれば,2.00V〜3.50Vを出せる理屈になりますが,今回は2.05Vまでで十分と思われるため見送る事になりました。では,このSC1144のVID0〜VID3を直接乗っ取れば,良いのでしょうか?答えは,NGでした。出力電圧は,2.05Vまで思いのままに操作可能となるのですが,どうやらCPUVcore電圧を監視する機能が備わっている様で乗っ取りが見破られてしまいました。1.90V以上の設定で起動すると警告アラームが発せられてしまうのです。

SC1144の直接乗っ取りを見破られた原因は,AthlonプロセッサのVIDパラメータと実際のVcore電圧の位差によるものと見定めてプロセッサのVIDラインを分断する作戦を立てました。

乗っ取り成功のカギは,Athlonプロセッサが本当に高い電圧を要求しているかのようにパラメータを送り込む事です。右の図は,AthlonプロセッサとSC1144の間に割り込んでいる74F157のピンレイアウトです。前述の通り2系統の異なる入力パラメータを[SELECT]ピンでAパラメータかBパラメータを選択し出力する素子です。MS6167では,B側の入力ゲートでAthlonプロセッサのVIDパラメータを受けていました。おそらくA側は,BIOSが割り込んでくるものと推察しています。そしてBIOS-SETUPからVcore手動設定を有効にすると[SELECT]ピンに信号が飛んでくる仕組みになっているのでしょう。

下の表がプロセッサからS74F157を経てSC1144に流れるVIDラインの連絡ポイントです。

VID連絡網 VID0 VID1 VID2 VID3
SC1144(INPUT) 6ピン 7ピン 8ピン 9ピン
74F157(OUTPUT) 12ピン 9ピン 7ピン 4ピン
74F157(INPUT-CPU) 13ピン 10ピン 6ピン 3ピン
Athlon(VID-OUT) A112 A113 A114 A115

上表から,74F157の13ピン,10ピン,6ピン,3ピンに接続されているAthlonプロセッサのVIDラインを分断して希望するVIDパラメータを入力すれば,プロセッサが本当に要求している様に見せかけられる事になります。

AthlonプロセッサからのVIDラインを分断するには,前述の74F157の各ピンを足上げして後述のVID設定スイッチを結線するも良いでしょう。しかし今回は,空中配線を嫌ってマザーボードのパターン(信号線)をカットする事にしました。右の写真で赤く囲い示した4本のパターンがAthlonプロセッサから74F157に入力されるVIDラインでパターンカットした部位です。そして,74F157の13ピン,10ピン,6ピン,3ピンに希望するVIDパラメータを送り込めるよう4本の耐熱電線をハンダづけして独自のVIDラインを増設します。

VID制御は,Pentiumシステムと同一である事からロータリースイッチを使って設定します。ロータリスイッチの説明は,拙本のp105「ロータリ・タイプのディップ・スイッチの使い方」を参照してください。

右の写真は,MS6167のパラレルポートコネクタの上に取り付けたEXcraft製の拡張基板です。この拡張基板には,ロータリスイッチが実装されており先ほど増設した4本のVIDラインを結線してVIDパラメータを設定する事が可能です。自作なさる場合は,4極のディップスイッチを使っても良いでしょう。これも,拙本のp120辺りが参考になると思います。このようにすれば,1.30V〜2.05V間の0.05Vステップ16通りのCPUVcoreが得られます。しかも,高電圧要求時の警告アラームから解放されました。ロータリスイッチを用いた場合ですと丁度(偶然か?)[6]のポジションで1.60VのデフォルトVIDパラメータが得られ1ノッチ当たり0.05Vの変圧パラメータが設定可能となります。ですから1.80Vを要求するなら[A]のポジションに合わせるだけで出力される仕組みになっています。なお,CPUVcore電圧は,CPUスロットとパラレルポートコネクタの間に立ち並ぶいずれかの終段電力素子のフランジとグラウンド間を測定すれば良いでしょう。フランジは黒いヒートシンクの内側に見える白い金属部分です。グラウンドは,マザーボードを固定するネジ穴の周囲にあるハ ンダメッキされたランドもしくはATX電源コネクタのグラウンド・ピンにテスタリードを差し込んでも構わないでしょう。

以下,誠意執筆中