Quad Celeronの可能性

ご存知のように、PentiumIIは、Dual CPUにしか対応していません。 Celeronは公式にはDualにも対応していませんが、 Dualで動作させることが可能になっています。 (参照: KIKUMARU's Tech Labo )

さて、PentiumIIIのSocket370化のうわさを耳にして、「おや?」と思いました。 PentiumIIIがSlotからSocket370にするのは、 価格のせいだとIntelは主張しているけれども、 AMDがSlotを採用している以上、理由にはなりません。 とすると考えられるのはSlot化による性能の低下。 Xeonによる4CPU化はえらく苦労したそうです。 そりゃSlotなんていうインピーダンスの特異点があればそこで信号が反射するのはあたりまえ。Socketにすれば4CPUなんて簡単に出来るでしょう。

…ということは、Intelは、 Socket370にあらかじめ4CPUのピンアサインをしているのではないでしょうか? しかもCeleronにDual対応を残してくれたIntelのすばらしい技術者のことだから、 Celeronなのに4CPU対応しているのではないでしょうか? P6 Hardware manual によると、 P6のバスつまりFSBにはもともと4CPUで定義されているんだし、 可能性は結構大きいと睨みました。

4CPU時のフロントサイドバス

P6 Hardware manualや、450NX Chipset Datasheet から想定すると、 Xeonの4CPU時のフロントサイドバスのバス制御線は右図のようになります。
バスを使用したいCPUは、 自分自身のBR0をアサートすることにより他のCPUに伝えます。 それぞれのCPUにはバスアービタがあり、次のように動作します。
  1. 直前にバスを使用したCPUを把握している。
  2. 直前CPUの次の番号のCPUが最も優先順位が高く、 その次の番号のCPU、その次の番号、ときて、 直前にバスを使用していたCPUが最も優先順位が低い。
  3. 上記の優先順位に基づき、BR0〜BR3を観測し、次にアクセス可能なCPUを決定する。
  4. この決定作業はそれぞれのCPUのバスアービタで行われるが、同じCPUである。
    (ex. CPU2がアクセス権を得る場合は、 CPU0はBR2、CPU1はBR3、CPU2はBR0、CPU3はBR1のCPUがアクセス権を得たと判断する)
  5. 自分自身つまりBR0がアクセス権を得た場合は、 バスを使用してアクセスを開始する。
また、チップセットがバスを使用したい場合は、BPRIをアサートします。 このBPRIはCPUより高い優先順位を持っているため、 BPRIがアサートされた場合は常にチップセットがバスを使用します。

ここで注目すべきなのは、チップセットにはBR0〜BR3が接続されていないことです。 つまり、チップセットは、現在、どのCPUがバスを使っているのかは気にしていません。 BREQ0が接続されていますが、これは、リセット時にBREQ0をアサートすることにより、 それぞれのCPUが自分自身のCPU番号 (Agent ID) を決定するためのものであり、 動作中は無視されます。

CeleronとDual動作

通常のDualマザーボードは、右図のように、 CPU0-BR0とCPU1-BR1、CPU0-BR1とCPU1-BR0とたすきがけで接続されています。 Celeronは、Celeron Datasheet で示されるように公式にはBR1線を持っていませんが、 実際にはAN15ピンのBR1信号を利用してDual動作が可能です。

ここで、CeleronチップにはBR2、BR3両信号があって4CPU対応だとしたらどうでしょう? そうであったとしても、Dual動作には何の支障もありません。 では実際にCeleronで、BR2、BR3を探って見ます。 右図で、CPU0のBR1信号、 現状ではAN15に接続されていますが、 これをBR2やBR3に接続しても、動作に支障ないはずです。

で、あのあたりのRsvdピンに適当に接続して調べたら、 AL13、及び、AK16に接続しても、 問題なくDualで動作しました。 このどちらかがBR2で、どちらかがBR3ということになります。
ありがとうIntelの技術者の人! いやー、わかってらっしゃる。
(決してIntelの経営者の人とはいわない)

370ピン接続
BR0AN29
BR1AN15
BR2
または
BR3
AL13
または
AK16

では、CPU1の方のSlot1のBR1線を、AL13やAK16に接続した場合も動作するのか、 と調べてみると、動作しません。 CPUはリセット時にBR0〜BR3のどの線がアサートされているかによって 自分自身のCPU番号(Agent ID)を決定していますが、 このAgent IDが2や3になるためだと思われます。
Agent IDが2や3でもCPUとしては動作するはずですが、 このAgent IDは、CPUそれぞれが内蔵するAPIC (外付けAPICとは別物です) の APIC IDとしても使われ、 BIOSのAPIC初期化コードがこのAPIC IDに対応しないためだと思われます。
このあたりの動作については System Programming Guide でBR0を検索してみてください。

上記のBR0〜BR3の説明にはウソがあります。 P6 Hardware Manualを見ればわかりますが、リセット時にBR1がアサートされるCPUは、 CPU3なのです。つまり、上記の説明はすべてBR1とBR3がさかさまであり、 CeleronのAN15ピンは実はBR3です。 でも話がややこしくなるので、上記のように説明しておきます。

ちなみに、チップセットのマニュアルを見ていると、 CeleronでRsvdとなっているピンの役割がなんとなく見えてきます。 A29ピンあたりがDEP[7:0]だとか、AC1ピンあたりがA[35:32]だとか…

4CPU動作の問題点

Celeronを、BR線を除いて他のフロントサイドバスをすべてパラレルに接続し、 BR線をXeonの時のように接続すれば、ハードウェア的には問題ないと思われます。 (Resvピンとか内蔵温度用ダイオード等はパラ接続はいけません)
BX/GXチップセットは公式にはDualまでですが、 チップセットはどのCPUがアクセスしているのかには関与しないため 問題ないと思われますし、 外付けAPICも、APIC Datasheet で示されるように15CPUまで対応しています。

現時点での問題点は困難な順に以下のようになります。

BIOSが4CPU対応していない
やはりこれがいちばんきついです。 ざっと4CPU化で変更しなければならないところは以下のようになります。
Celeronの実際の配線
120本ほどパラレルに接続する必要があります。 ここ のTwin Magicが市販されれば、 簡単なんですけど…
CPUの消費電力
上記のボードを使う場合、通常1つしか載らないところに2つ載せるのですから、 消費電力が倍になります。 これは、マザーボード上のコア電圧レギュレータには負担になりそうです。
バスドライブ能力
通常、3つしか接続されないFSBバスに5つつなげるので、 CPUやチップセットのドライブ能力が不足するかもしれません。FSB100は無理かな?
どっちがBR2でどっちがBR3か
BR2⇔BR3の入れ替えは回転置換に対して互換じゃないですから…
いずれの問題も、マザーボードメーカなら簡単に解決できる問題です。 どこかで作ってくれませんかね? オンボードで4CPUの奴を。
(99-7-7)


やっぱり無理か

で、つらつらとBIOSを読んでいたんですが、 Agent IDが2や3の時、メモリを抜いて起動した場合にエラー音がならないというのは、 明らかにおかしいです。 BIOSではAPICの初期化前にメモリの存在チェックをしています。 試しに1CPUのマザーボードに、AL13やAK16をBREQ0に接続したもので起動実験を 行ってみましたが、起動しません。(AN15では起動します。)

これから考えられることは、 以下の問題のため初期の起動まで行かない、ということです。

  1. CPU自体、AgentIDが2や3では起動しないようにプロテクトされている。
  2. BXがAgentIDの2や3に対応していない。
    BXはAgentIDを全く見ていないかと思っていたら、これは私の勉強不足でした。 CPUは自分自身のAgentIDを、 クロック2サイクル目にA[21:20]=DID[5:4]に出力しています。
というわけで、どちらの問題にせよ、 BXで4CPUにするのは無理みたいです。
期待していてくれた皆様、申し訳ありません。(_o_)

あとはBXの隠し機能か… ←まだ懲りてないらしい(^^;
(99-7-12)


BXの隠し機能もないみたいです。BXの不明なSTRAP(動作決定ピン)は、
WSC: pulldownでDual動作ができなくなる(SingleはAgent=0/1で動作)
TESTIN: pulldownで全く起動しない
となります。MAB8やMAB13はBXデザインマニュアルに説明があります。
(99-7-15)


引導を渡す

GXの隠し機能もだめでした。やはり、AgentID=2や3では起動すらしません。 結局、GXやBXでは4CPU動作は不可能です。

チップセット strap (動作決定ピン) 設定表
白地がチェックした部分、/の前がデフォルト値
( ) 内はBXの量産版でマニュアルから削除
端子名440BX440GX
TESTIN 1/0=テストモード1/0=テストモード
WSC (1=Dual/0=Single CPU)効果なし
MAB14存在せず効果なし
MAB13(0/1=AGP FREQ. Select)-
MAB121=100MHz/0=66MHz1=100MHz/0=Reserved
MAB111/0=Queue Depth1BXに同じ
MAB100/1=QuickStart-
MAB90/1=AGP DisableBXに同じ
MAB8(0/1=Power Management)-
MAB70/1=TX compatible mem-
MAB60/1=Low power GTL+-

450NXでのQuadronは可能なはず、という非公式な話があるので、 起動すらしない原因はCPU側ではなくチップセット側にあるのでしょう。 つまり、AgentID=2でCPUが起動し、 チップセットに対して最初のメモリリード指令をFSBを通して発行しますが、 この指令2サイクル目にA[21:20]=DID[5:4]に出力されたAgentID=2を チップセットが見て、反応しないなりエラーとするなりなっていると思われます。

450NXは4CPU対応ですが、AGP対応していないので、 Carmelが出てくるまで待ち、ですね。 でもそのころにはPPGA-Pen3が安くなっている気が…
(99-9-4)


AgentID=2/3の動作確認

Apollo ProのシングルマザーでAgentID=2/3での動作を確認しました。 やはり問題はBX/GXチップセットにあったようです。
82C691 North BridgeからBR0(AN29)に伸びている線を、 AL13やAK16に接続したところ、 問題なく起動し、AgentIDを確認できました。 (MS-DOSからRDMSR命令実行により確認しました。NTのカーネルやWCPUIDは、シングル動作の場合はAgentIDを読み取らないようです。)

370
ピン
Agent
ID
Intel 端子名
Pentium2Xeon
AN29ID 0BR0#BR0#
AN15ID 1BR1#BR3#
AL13ID 2-BR2#
AK16ID 3-BR1#

これでApollo Pro系のDual マザーボードにTwinMagicでQuadronの可能性がかなり出てきました。
133AのAはAPICのA、と唱えながら、例のFreewayのApollo Pro 133AのDualマザー発売までいい夢みましょう(^^;

だけどVIAのチップってマニュアル公開されてないので、BIOS書き換えがかなり無理っぽいなあ。
あと、Queue Depthが1になってます、Apollo Pro。これがVIAのチップセットが遅いと言われる所以ですね。このマザー固有の問題なのか、Pro Plus/133/133Aで改善されているのか… 特にマルチプロセッサの場合、この項目は実際の性能にかなり影響すると思われます。
(Wintune97 R2048=167 W2048=145)
(99-9-17)

戻る