次のページ 前のページ 目次へ

4. シリアルポートは時代遅れなのか?

4.1 はじめに

「はい」というのが答えですが…。シリアルポートはいくらか時代遅れで すが現在でも必要ですし、特に Linux では必要です。シリアルポートには欠 点がたくさんありますが、新しい PC のほとんどにシリアルポートが付いてい るようです。Linux がサポートしている通常電話回線用のモデムは、シリアルポート 経由で動くものだけです。

シリアルポートは、コンピュータと外部ケーブルの間でデータを運ばなければ なりません。 よって、シリアルポートは 2 つのインタフェースを 持ち、どちらのインタフェースも低速です。まずは外部ケーブルを通じた外界 とのインタフェースを考えてみましょう。

4.2 低速で距離も短い EIA-232 ケーブル

従来の EIA-232 シリアルポートは、どうしても低速で、距離にも厳しい 限界があります。広告ではよく「高速」と謳われますが、実際に「高速」に動 作するのは、PC のすぐ隣にモデムがあるような非常に距離が短い場合だけで す。またネットワークカードと比べると、この「高速」というのも低速に過ぎ ません。シリアルケーブルは全て共通の接地線を使う配線を用いているので、 ハードウェアを追加しない限り(高速な伝送で必要となる)ツイストペア技術を 使えません。シリアルポート用の最新技術も存在しますが、これら は EIA-232 と違って PC の標準ではありません。 EIA-232 の後継をご覧ください。 一部のマルチポートシリアルカードはこれらをサポートしています。

1962 年に作られた RS-232 規格がツイストペア技術を使っていないことはあ る意味悲劇です。これを使っていれば 100 倍高速に動作できたはずなのです から。ツイストペアは電話線には 19 世紀末から使われてきました。 1888 年(110 年以上も前)の「ケーブル会議(Cable Conference)」は、ツイス トペアの(電話システムへの)支持とその利点を報告しています。ですが、 「ケーブル会議」での合意は、80 年以上も後の RS-232 では生かされません でした。RS-232 は元々、端末をその隣に置いた低速モデムと接続するために 設計されたので、高速・長距離の伝送に関する必要性は理解されなかったよう です。

4.3 コンピュータへのインタフェースの非効率さ

コンピュータと情報をやりとりするには、どんな I/O デバイスであっても コンピュータが読み書きできるアドレスが必要です。 この目的のために多くの I/O デバイス(シリアルポート等)は I/O アドレスと呼ばれる特殊なアドレスを持っ ています(I/O ポートと呼ばれることもあります)。これは実際には、あるアド レスの範囲であり、一番低位のアドレスがベースアドレスになります。単に 「アドレス」と言われた(書かれた)場合は、実際は大抵「ベースアドレス」を 指しています。

一部の I/O デバイスは I/O アドレスを使わないで、直接メインメモリの読 み書きを行います。この方法だと大きな帯域を利用できます。というのも、 昔ながらのシリアル I/O システムでは同時に 1 バイトしか転送できないから です。 メインメモリを直接読み書きする方法は色々あります。 その一つが共有メモリ I/O と呼ばれるもの です(共有メモリは普通、I/O デバイスと同じカード上にあります)。他の方法 としては ISA バスの DMA(direct memory access, 直接メモリアクセス)や、 PCI バスでの DMA と同様の仕組み(速度はずっと速い)である 「バスマスタリング」があります。これらの方法は、シリアルポートの方式よ りもずっと高速です。したがって、(14 バイトごとの)割り込み駆動インタフェー スを持ち、バス自体が 4(または 8)バイトをまとめて処理できるのに 1 バイ トずつしか送信できない昔ながらのシリアルポートは、超高速の I/O には向 いていません。


次のページ 前のページ 目次へ