哀愁のパラレルインターフェース

 誰でも、複数の選択肢がある場合は得な方を選ぶことだろう。贈り物を選ぶ時はどれが一番気に入ってもらえるか、服を選ぶ時はどれを一番着てみたいか、食べ物を選ぶ時はどれを一番食べてみたいか、という具合にである。
 もちろん、欲しいものは全て手に入るのが理想的だろうが、そこには広い意味でのコストという制約条件があるために選択しなければならない状況に置かれるのが普通である。
 だが、私自身について言うと時折この原則に(大きく)背くことがある。和食屋に入って天盛りと天丼のどちらにするか迷った挙句、両方頼んでみたり、ケーキショップで選びきれなくてショーケースに並んでいる全てのケーキを買うという暴挙に出たりするわけである(無論、後先のことなど何も考えてはいない)。
 最近も似たような状況で、だらだらと迷っていることがある。それはこのエッセイについての主題選びである。書きたいことはたくさんあるのだが、どれをどのように選んで書くかということをいつも迷っているのである(単に考えがまとまらないともいう)。
 そうこうしている間に「外圧」がやってきた。ふだんからよく通っているTEA BAR KANDY という名の紅茶専門店があり、経営している本村夫妻とも親しくしているのだが、今回の「外圧」の発生源は夫人の方であった。というのも、本村夫人の涙ぐましい(?)努力でサブノートPC(註1)を懸賞で当てたとのこと(70回ほど応募した結果だという。確率論的に興味深い話ではある)。夫人は元々デスクトップ型のPCを持っており、2台のPC間でのデータ交換をどうするかという話題に及ぶや、どの方法でのデータ交換が最もよいか、という問題が持ち上がったのだ。
 理想論を言えば2台のPC間でLAN(註2)を構成すれば良いが、小規模なデータ交換しか行わないのでいささか大袈裟な話になってしまう。2台のPCを接続するには他にケーブル転送という方法もある。これは、通信ケーブルを利用して2台のPCを直結する仕組みである。LANと比べて低速であり、さらに3台以上の運用には適さないがコストは比較的安くすむ。
 このケーブル転送に利用できるケーブルは2種類あって、それぞれシリアルケーブルとパラレルケーブルがある。さらにシリアルケーブルにはストレートとクロスの2種類あり・・・、と説明していると夫人が質問を発した。
 「シリアルとパラレルってなに?」
 「あれ? 説明したことなかったっけ?」
 「だから、エッセイにしてって言ったじゃない」
 「そう言われてみれば・・・」
 という訳で、シリアルとパラレルについて論じていくことにしよう(外圧によってのろのろ動き出すあたりは我が国政府のようである)。
 シリアルとパラレル、単純に言うと直列と並列のことであるが、何が直列並列かというとデータを送受信するときのデータそのものの並び方のことである。
 コンピュータで扱うデータは全て2進数であることは今までのエッセイでも説明しているが、ただ2進数というだけではなく扱う単位というものがある。初期の頃のコンピュータは数字とアルファベット、いくつかの記号だけを扱っていた。これらの文字にはそれぞれ文字コードを割りふらなければならないが、問題は1文字に何ビット割りふるかということだった。必要な文字の種類を調べてみると100個前後であり、これを表現するには7ビットあれば足りる(7ビット=128通りである)。そこでASCIIコードと呼ばれる7ビットコードが決められた。だがコンピュータにとって2進数を奇数の桁数を単位として扱うのはなにかと不都合が多い(詳しくは説明しないが構造的に扱いにくいのである)。したがって7ビットに1ビット追加して8ビット単位で扱うことになる。8ビットをひとまとめにした単位をバイト(byte)という。つまり1バイト=8ビットである。実際、データのサイズを論じる時にビットではなく、バイトを用いる方が多い(ビットは単位としてはいささか細かすぎるのだ)。そして1バイトは英数文字1文字分と数えるわけである。
 さて、データをバイトという単位で扱うことはわかったが、2進数であることには変りはない。実際に電子回路上ではON、OFFの信号の並びである。当たり前だが、データを送信する側は1ビットずつ相手に送り、受信する側は1ビットずつ相手から受け取ることになる。したがって、データ全体が1ビットずつ1列に並んで送り受けしていることになるが、まさに直列にデータが並んでいるわけである。ちょうど、1車線の道路で自動車が1列に並んでいる様子に似ている。このように全てのデータを1ビットずつ送り受けする仕組みをシリアルインターフェースと呼ぶ。
 これに対して、パラレルインターフェースは2車線や3車線の道路のように、同じ方向に向かって並列に信号線を用意する仕組みである。先に説明した通り、バイト単位でデータを扱うことが多いので、信号線も8本または16本というように8の倍数分だけ用意するのが普通である。
 どちらのインターフェースも古くから利用されており、それぞれの特性によって使い分けがなされている。例えば、パラレルインターフェースはシリアルインターフェースに比べて高速なデータ転送が期待できる。信号線が複数あるのだから当たり前だ。対して、シリアルインターフェースは信号線が少ない分だけ取扱いやすくコストも低く済み、ノイズにも強いため距離も稼げる。したがって、高速で近距離のデータ転送は高価なパラレル、低速だが長距離のデータ転送は安価なシリアルという考え方で利用していたのだ。
 実際、パソコンで利用されているそれぞれのインターフェースについて見てみよう。
 まず、シリアルインターフェースだがRS-232Cと呼ばれるインターフェースが代表的である。アメリカの電子機器協会(EIA)が規格化したものが最初で、その後何度も改良されているため、現在流通しているRS-232Cインターフェースの標準的な性能は、最大ケーブル長が15m、データ転送速度が約115キロバイト/秒となっている(1キロバイトは約1,000バイトである)。主な利用目的はモデムなどの通信機器とコンピュータ本体との接続である(最近ではデジタルカメラでも利用している)。また、RS-232Cケーブルにはストレートケーブルとクロスケーブルの2種類ある。RS-232Cはもともと通信機器との接続用だったため、コンピュータ同士をストレートケーブルでつなぐと出力と出力が衝突してしまう。このため、コンピュータ同士の接続には途中で出力と入力の信号線をクロスさせたケーブルを用いる。これがクロスケーブルである。
 パラレルインターフェースは、代表的なのがセントロニクスインターフェースと呼ばれるものでプリンタ用の8ビットパラレルインターフェースとして開発されたものである。これも何度か改良されているため、現在ではEPPやECPなどと呼ばれる規格もあり、最大ケーブル長は5m、データ転送速度は約8,000キロバイト/秒である。他にもSCSI(スカジーと読む)というパラレルインターフェースもある。主に磁気ディスク装置用に用いられいるインターフェースであり、最大ケーブル長は1.5m、データ転送速度は約40,000キロバイト/秒である。
 このようにパラレルは近距離で高速、シリアルは長距離で低速という位置付けになっていたのである。私がまだコンピュータを学びはじめた頃は、パラレルインターフェースというと高速で高級というイメージを抱いていた(なにやら大昔のような気がする)。
 だが、近年このイメージは崩れつつある。高速なシリアルインターフェースが次々と登場しているのである。
 その中で今のところ一番普及しているのが、USB(註3)と呼ばれるインターフェースである。最大ケーブル長は理論的には約30mまで確保できるが、データ転送速度は12,000キロバイト/秒である。このUSBはケーブルも非常に細く5mm程度の太さしかない。また、IEEE1394と呼ばれるシリアルインターフェースも登場しており、最大ケーブル長は72m、データ転送速度は50,000キロバイト/秒に達している。
 比べて、最近のパラレルインターフェースはあまり改良されていない。なぜ、逆転されつつあるのか。これはもちろん技術の進歩もあるが(当たり前だ)、両者の基本的な構造によるところが大きい。
 高速なデータ転送を行う場合、まず問題になるのがノイズによる妨害である。そして、信号線の本数が増えたり、複雑な構造になればなるほどノイズの影響が大きくなり、正確な通信が困難になる傾向がある。この点で、パラレルインターフェースは信号線が多いという特徴が弱点になる。また、パラレルインターフェースについて2車線の道路に例えたが、データそのものは自動車のように気ままに走るわけにはいかない。例えば、8ビット送り出すときにそれを横一列に並べて送り出すとする。それを受け取る時も当然だが「正確に」横一列になっていなければならない。パラレルインターフェースでは1列ごとにデータを扱うことになるわけだが、列の内容が前後に入り交じっては正確なデータ転送など到底望めない。正確に1列ずつ扱うには列どうしの間隔をできるだけ広く取ればよいが、高速な転送を行うには逆に間隔をどんどん詰めていかなければならない。列同士の間隔が狭くなるほど、ほんの少しの遅れやズレも許されない状況になってしまうのだ。このようにパラレルインターフェースは構造的に高速化しにくいところがあるわけである。
 昔は、ノイズの影響を防ぐ技術が現在ほど発達していなかった。そのため信号線1本あたりの転送速度が非常に低かったのでそれを束ねて利用するのが現実的な高速化手法だった。だが、当時に比べて極めて微細で高速な信号をノイズの影響なしに扱えるようになったため、束ねた信号線同士の同期を確立する方がかえって困難になってしまい、かつての高速化手法が今度はボトルネックになってしまったのは皮肉なものである(もっとも、こんな逆転劇など技術の歴史ではゴロゴロしているが)。
 今日まで、シリアルとパラレルのどちらがインターフェースとして有利かという議論は数限りなく行われてきた。コンピュータと周辺機器をつなぐ外部インターフェースとしてはどうやらシリアルが「お得な」選択肢となりつつあるようである(なんとなく哀愁を感じるのは私だけではあるまい、と信じたいものだ)。
(註1)サブノートとは一般にB5サイズの小型ノートパソコンのこと。PCはもちろんパーソナルコンピュータ、いわゆるパソコンの略語。だが、Machintoshという機種についてはPCとは呼ばない。たぶん文化というものだろう。
(註2)構内通信網と訳されるネットワーク技術。今ではごく普通に見かけるが、当時はこれから普及する技術だった。
(註3)Universal Serial Busの略語。このエッセイを書いた頃はVer.1.1仕様だった。現在ではより高速化された2.0仕様が標準になっている。