LANカードの設計アーキテクチュア
インテリジェント vs ノンインテリジェント
LANカード内にCPUを搭載したものをインテリジェントタイプ、CPUを搭載しないものをノンインテリジェントタイプとして区別しますが、ユーザにとってはどのようなメリットがあるのでしょうか。
10年程前は、一部の高級機は別として普及価格帯のパソコンの処理能力はいまより数段低いものでした。また、EMS/XMS等のメモリ管理手法も発展途上にあり、搭載されているメモリ容量自体も小さいものでした。そうした環境下でTCP/IP等のメモリ食いのアプリケーションを動作させようとすると、主にメモリ上の制限からインテリジェントタイプのものを使用せざるを得なかったわけです。
当時は、LANカードに搭載されているCPUとパソコン側に搭載されているCPUの速度差がほとんどなかったため、インテリジェントタイプのLANカードは、全体としてのパフォーマンス向上にも役立ちました。
ところが、パソコン側のCPUのパフォーマンスの向上が驚異的なスピードで進んだ結果、LANカードに搭載されているCPUとの速度差が広がってしまい、パソコン側のCPUに直接処理させるノンインテリジェントタイプの方がパフォーマンスが高い結果が出るようになってしまいました。確かに、クライアント端末側に使用するLANカードはノンインテリジェントタイプで十分でしょう。しかし、サーバ側に使用するLANカード、それも1台のサーバに複数枚のLANカードを実装するような状況では、インテリジェントタイプのLANカードの採用を検討する価値があります。
サーバ/クライアントシステムというのは、本質的にサーバに負荷が集中するシステムです。サーバ本来の業務にサーバのCPU負荷を割くことができるように、インテリジェントタイプのLANカードを使用したI/O負荷分散のアプローチは重要です。
メモリマップ vs I/Oマップ
LANカード内のパケットバッファメモリに対するデータのアクセスをメモリとして実行するか、I/Oとして実行するかの設計観点です。
メモリマップの方がより高速アクセスできるような設計が可能ですが、それなりのコストも発生します。また、パソコンにおける1Mバイト以下のメモリ空間(DOSメモリ空間)は従来余裕がなく、EMSやUMBの普及に伴い益々その空間の自由度は減少傾向にありますので、LAN用としてメモリ空間を占有するのは好ましくありませんし、コンフィギュレーションンの自由度がほとんどありません。
一方のI/Oマップは、80386以上でサポートされているブロックI/O命令等を使用すれば十分高速にアクセスできますし、コンフィギュレーションの自由度も高いので、現在ではI/Oマップの方が主流です。
直接アクセス vs DMAアクセス
これもアクセススピードに関連した課題です。従来のパソコンに搭載されているDMA機能は、そのデータ転送速度がそれほど早くありませんでした。
CPUのパフォーマンス向上に伴って、CPUからの直接アクセスの方がより早いアクセススピードを提供できるようになった結果、DMAアクセスは一時期有効なアクセス手法とは言えなくなってしまいました。
しかし、PCI等の高速バスの登場と共に、再びDMAアクセスが浮上してきました。バスマスターとして動作させるDMAは十分な高速化が期待できるからです。バスマスターに特化したLANコントローラLSIも登場してきています。
バスマスターDMAアプローチは、CPUメモリをそのままパケットバッファメモリとして利用できますのでシステムとしての設計自由度は高いのですが、コントローラLSI自体が高価なのが難点です。
LANカードの業界標準
最近の機器はほとんどそうですが、LANカードもハードウェア単体では意味をなしません。それを制御するソフトウェアがあってこそ初めてその機能を発揮できるのです。そして、そのソフトウェアにも階層的アプローチがなされています。
ハードウェアを直接制御し、ハードウェアそのものは上位層プログラムから隠す機能を担うのがドライバーと呼ばれるソフトウェアです。ドライバーソフトは、LAN OS毎に標準仕様が用意されています。Novell社のNetware向けのODI(Open Datalink Interface)仕様、Microsoft社のNDIS(Network Driver Interface Specification)仕様、TCP/IP関係のソフトで使用されるFTP社のPD(Packet Driver)仕様等が主なものです。これらのドライバソフトはいずれも、複数のプロトコルに対応できる構造になっています。
一方、これら多数のOS用にそれぞれのドライバをバージョンアップも含めて独自のハードウェアで対応していくのには非常に多くの労力が必要になります。また、逆にLAN OS側にとっても標準的なハードウェアが存在することはPC/ATの存在を例にとるまでもなく有効なことです。 そのような状況から生まれたLANカードにおける一つの業界標準がNovell社のNetwareの標準採用LANカードであるNE2000です。
NE2000は、DP83902系のコントローラを中心に構成され、最近ではNS社よりそのワンチップ版としてDP83905(AT/LANTIC)も出荷されています。
その構成は単純で16KバイトのバッファRAM、バッファRAMと同じ空間にマッピングされたMACアドレス用のROM、I/Oデコーダで構成されています。アクセス方式はI/Oマップ方式で、連続した32アドレス空間を必要とします。これらNE2000互換として必要なハードウェア仕様を図17に示します。
業界標準はそれなりに重要ですが、そればかりに頼って自前でドライバをサポートしていないようなLANカードを選定してはいけません。互換はあくまで互換であり、万一トラブルが発生した場合には、ソフト側から“ハードウェアの互換性に問題があります”と一蹴されてしまいます。
ちゃんとしたシステムを組む場合には、ドライバの不具合にきちんと対処できるメーカを選定することが重要です。ハードウェアの組み合わせとソフトウェアの組み合わせが複雑に影響しあうLAN関連のアプリケーションでは障害の切りわけ自体が大変な作業ですし、障害切りわけ後の対処にも互換のみに頼っているところとそうでないところでは歴然とした差があります。
一見、どれも同じように見えるLANカードですがマルチプロトコル環境下で高トラフィックをかけて試験すると、そのハードウェア及びドライバーソフトの不出来の差が浮かび上がってくるものです。