外付けモデムは、接続するインターフェイスにシリアルポートを用いる。近年になって、USBなど他のインターフェイスも考慮されるようになったものの、現実にはモデムを接続するインターフェイスといえば、シリアルインターフェイス以外にない、といっても過言ではない。だが、このシリアルポートに使われるUART(現在のPCでは16bytesのFIFOバッファを持つNS16550が主に使われる)は、元々8bitマイコン時代に開発されたものがベース。高速化を続けるPCに不釣合いなばかりか、ISDN、56Kモデムの登場など、通信速度の向上にも対応することが難しくなりつつある。例外的に、Microcomがパラレルポートに接続する外付けモデムをリリースしたことがあるが、広く普及することなく終わってしまった。
カードモデムは、PCの拡張スロットに直接インストールされるだけに、原理的にはシリアルインターフェイスを使わなくても構わない。バス直結のデザインを行なうことで、115,200bpsがギリギリとも言われるNS16550のボトルネックを回避することも不可能ではない(ソフトウェアドライバ等によって、115,200bps以上の通信速度をサポートすることは可能だが、NS16550のFIFOが16bytesと変わらない以上、最大通信速度を上げることはCPUの負荷を増やすこととほぼ同義である)。
だが、現実にはISAのカードモデムといえど、このようなデザインをとるものはなかった。拡張カード型のISAモデムも、基本的にはカード上にNS16550 UARTを備えており、システムからはシリアルポートに接続されたモデムに見えるようデザインされていたのである。つまり、論理的には外付けモデムも内蔵モデムも変わらない。ユーザーは、モデムの性能やアーキテクチャではなく、モデム単独で電源オン/オフが可能で各種のLEDインジケータが見やすい外付けか、価格が安く設置場所が不要な内蔵か、といった観点でモデムを選んでいたのである。
もちろん、こうしたデザインの踏襲には理由がある。NS16550系のUARTを用いたシリアルポートモデルを採用しなければ、ソフトウェア互換性が取れないことだ。DOS上の通信ソフトウェアは、特定のI/Oアドレスで特定のIRQがアサインされたUART(たとえばI/Oアドレス03F8h~03FFhで、IRQ4を使うCOM1など)にモデムが接続されていることを前提にしている。仮にバス直結のモデムを作っても、既存の通信ソフトが動かなくなってしまうのである。
写真1:SupraMax 56i PCI |
写真2:ASKEYのMX56PCI |
もちろん、このような構成のモデムが登場できた理由の1つとして、Windows 95/98など、特定のハードウェア設定に依存しないソフトウェア環境が普及したことを忘れるわけにはいかない。Windows上の通信ソフトであれば、COMポートの設定が何であろうが構わないし、UARTが何であるかさえ問題ではない。重要なことはTAPI互換(実際にはそのモデムサービスレイヤであるUnimodem-V)のドライバが用意されるかどうか、なのである。今回取り上げたPCIカードモデムは、もはやDOS(ピュアDOS)上で利用することができないが、それで構わない、という状況になりつつあることが、登場を後押ししたと考えられる。
もう1つの共通した特徴は、モデムコントローラ機能の一部をホストCPUが処理するHost-Basedモデムであることだ(これも、DOSでの利用が難しい理由の1つである)。いずれも、すべての処理をホストCPUが行なう完全なソフトウェアモデムではないが、コントローラ機能の一部はCPUに移されている。これにより、ホスト側にある豊富なメモリ、ハードディスクといったリソースをモデムが利用可能になった。これは、モデムを安価に製造できるということであり、実際筆者の買値は、SupraMax 56i PCIが10,500円、MX56PCIにいたっては7,980円である(いずれも、JATE認定のある日本向けモデル)。
モデム機能の一部をホストで行なうというと、CPUの占有率(使用率)が気になるかもしれないが、その心配はない。図に、US RoboticsのSportster Voice SP560V、SupraMax 56i PCI、MX56PCIの3つのモデムについて、実際にプロバイダに接続した上で、FTPにより連続してデータを受信している際のCPU占有率を示した。比較のために用意したSportster Voice SP560Vは、外付けモデムで、元々はX2対応だったものを、V.90対応にアップデートしたものである(ホストには筆者の仕事マシンであるPentium II 266MHzシステムを利用)。
その結果だが、図を見れば分かるとおり、CPU占有率が最も高いのは、外付けモデムであるSportsterであり、コマンド処理をプロセッサで行なうPCIカードモデムの方がむしろ低い。特に、Lucentのチップセットを使ったMX56PCIのCPU占有率は、明らかに他より低くなっている。この3つのグラフは、プロバイダとの接続速度が異なることに注意する必要があるが、それを差し引いてもMX56PCIのCPU占有率は低く押さえられている。逆に、SportsterのCPU占有率から、いかにCOMポートによるシリアルインターフェイスがCPUの帯域を消費するか、分かろうというものだ(これがIntelがUSBをプッシュする理由の1つであり、US Roboticsの責任ではない)。
2種のPCIカードモデムで気になったのは、プロバイダへの接続速度が低めで、今一つ安定していないことだ。筆者の環境でUS RoboticsのSportsterがコンスタントに50,666bpsでコネクトするのに対し、SupraMaxは44,000bps~48,000bps、MX56PCIは44,000bps~46,000bpsが普通で、図に示した50,000bpsで接続することは極めてマレだ。もちろん、56Kモデムにおいて接続速度は保証されないし、上記の数字も環境が変わったり、プロバイダが違えば異なる可能性が高い。が、それでもSportsterの安定ぶりは際立っている。
にもかかわらず、筆者はMX56PCIを仕事マシンに組み込むことにした。最大の理由は、仕事マシンに組み込まれているDVDデコーダカード(CineMaster S2.2)との相性である。CineMasterを用いてDVDを再生していると、シリアルポートからのデータがうまく受け取れない、というトラブルが発生している(おそらくバスを長時間ホールドしているのではないかと思われる)。つまり、外付けモデムを利用してWebをブラウズしながら、DVDを再生することはできないのである。ところが、MX56PCIなら、PCIバスマスタのせいか、DVDを再生しながらでもちゃんと通信ができる(DVDのフレームレートは多少落ちるようだが)。最後はこれが決め手になった。
US Robotics Sportster Voice SP560V | SupraMax 56i PCI | MX56PCI | |
---|---|---|---|
接続レート | 50,666bps | 44,000bps | 50,000bps (*) |
プロセッサ使用率(%) | |||
受信バイト数 |
[Text by 元麻布春男]