[Japanese|English]

パソコンのハードウェア

はっきり言って、PPPoE のルータをやるだけなら、ペンチアムクラスより新しいハードならなんでも OK なはずです。速い486でも大丈夫かも知れません。私が使っている構成は、かなりオーバースペックです。

ハードウェアの構成

部材 型格 特徴 コメント
CPU AMD K6-2 333MHz (FSB 66MHz × 5) マザーボードの都合で 350MHz 品をクロックダウンして使っているが十分すぎる速さ。もっと遅くしたら CPU ファンを止められないかと考える今日このごろ。
メモリ EDO 72pin SIMM 128MB (32MB × 4) とりあえず持ってるだけ付けてるけど余りまくり。全然 SWAP しない。
ハードディスク Fujitsu MPG3204ATE IDE 20GB UDMA100 マザーの都合で UDMA/33 で使用。流体軸受の威力か、とても静か。
マザーボード ASUS SP97-V SiS5598, Baby-AT UMA VGA オンボードだが、少々問題あり。(後述。)
イーサネットカード メルコ BUFALO LGY-PCI-TXC SiS900 SiS900 は知名度低いけど、RealTek に迫る低価格で、(割と) ちゃんとしたバッファ管理ができるすぐれもの。中でも LGY-PCI-TXC は、ロープロフィール対応で背が低いのが特徴。2 枚挿し。
ケース ジャンク品 スリムラインデスクトップ DEC (現COMPAQ) の486スリムデスクトップのケース。たまたまジャンク屋で100円で (ケースだけ) 売られていたもの。とにかく背を低くしたかったので採用。ただしライザーが無いので、背の高いISA/PCIボードは刺さらない。
電源 型格不明 AT 250W たまたま余っていたもの。ルータは 24 時間動かしっぱなしなので、本当はパワーセーブ機能付きのATX電源がいいのだが。
フロッピー MITSUMI 型番不明 3.5" 2モード たまたま余っていたもの。迷ったが、やはりフロッピーブートができないと不便なので付けた。
その他 サウンドなし、マウスなし、キーボードなし、ディスプレイなし、入門ビデオなし。

このハード構成に固有のトラブル

SP97-V というマザーボードに搭載されているチップセット SiS5598 は、UMA (統合メモリアーキテクチャ) に基づく VGA 機能を内蔵しています。つまり、メインメモリの一部をフレームバッファに流用するのです。この UMA Video と、SiS900 が競合してうまく動作しませんでした。(以下、細かい話になるので、興味の無い方は読まない方がいいでしょう。この部分は PPPoE とも ADSL とも NAT とも関係ありません。)

現象としては、100Mbps で動作中に、FTP などでデータの受信を行うとスループットが極めて低下する (100kbps 程度まで下がってしまう) というものでした。データの送信のときには問題は起きず、また、10Mbps で動作しているときにも問題は起きませんでした。media を autoselect から 100baseTX に固定しても、duplexity を変更しても差はありませんでした。

調査の結果、この現象が起きているときには、高い頻度で (正常な受信2〜3回につき1回程度) SiS900 が RX FIFO Overrun というエラー状態になっていることがわかりました。SiS ドライバは、RX FIFO Overrun を検出すると、ドライバ全体の再初期化を行うこともわかりました。ここから推定した原因は以下です。

SiS900 は、データの受信の際、PCI バスマスタとして動作して受信データを直接メインメモリに格納します。このためには PCI バスの使用権を獲得しなければなりません。バスが空くまで待つ間もネットワークからはどんどんデータが入ってきます。SiS900 は、これを、RX FIFO と称する内蔵メモリに蓄えるようになっています。このことは、SiS900 のデータシートに書いてあります。

一方、SiS5598 は UMA Video を内蔵しており、画面表示を行うために定期的にメインメモリをアクセスする必要があります。メモリがアクセスできないと画面表示が止まってしまうため、SiS5598 は、最優先でバスの使用権を確保するようです。(この点はデータシート上あいまいでよくわかりません。)

さて、丁度データの受信と、画面表示のためのメモリアクセスが同じ頃に発生すると、SiS5598は最優先で画面表示のためのメモリアクセスを行います。このため、SiS900は、通常よりも長い間バスの使用権が得られずに待たされることになります。RX FIFO は 2KB しかなく、100Mbps で通信していると、160μ秒程度で RX FIFO があふれてしまうはずです。頻繁な RX FIFO overrun の発生は、画面表示のためのメモリアクセスによってバスの使用権が獲得できないことが原因と予想しました。

試しに別の VGA カードを挿して 5598 の内蔵 VGA を無効にしてみたところ、予想通り性能劣化は起きなくなりました。しかし、前述の通り、むりやりスリムラインケースに入れているので、普通の VGA では、フタが閉まらなくなってしまいます。そこで、5598 の VGA を有効にはするものの、普段はスクリーンセーバーを使って動作を停止させるようにしました。具体的には、apm_saver を使って、blanktime=60 としています。

なお、ひょっとすると、この現象は、他の UMA Video 内蔵チップセットや 他の PCI バスマスタの 100M イーサカードの組合せでも発生するかも知れません。その際は、同様の対処法が有効かもしれません。