USB Type-A(左)・Type-B(右)コネクタType-Aのコネクタ内を見ると4本の接点の内、外側の2本が若干長くなっており、差し込みの際に内側の2本より先に接触・通電するようになっている。

連載:IT因縁話「USBのコネクタはなぜ2種類ずつあるのか」

  • このエントリーをはてなブックマークに追加

by [2014年2月13日]

IT機器の接続用として最も広く普及しているインターフェイスがUSBであることには、恐らくほとんどの方に同意頂けるのでは無いかと思います。

USB A(左)・B(右)コネクタ(オス)

Universal Serial Bus(汎用シリアルバス)の頭文字を取ってUSBと命名されたこのインターフェイスでは、パソコン同士を接続するなど特別な用途に用いられるケーブルを除くと現在一般に使用されているUSB 1.1/2.0/3.0の3つの規格全てで、必ずケーブルの両端のコネクタ形状が異なったタイプ(USB A/Bなど)のものが使用されていて、その接続方向を入れ替えできないようになっています。

今回は、このUSBのコネクタ形状とバスの仕組みについて考えてみたいと思います。

ツリー構造を採るUSB

USBの接続模式図
頂点にホストコントローラが1つだけ存在し、これが下のハブコントローラや各デバイスの通信制御を行う。なお、ホストコントローラにはハブコントローラ(ルートハブコントローラ)を内蔵するのが一般的で、さらにUSB 1.1/2.0とUSB 3.0でそれぞれ別の独立したホストコントローラやハブコントローラを併存させることで下位互換性を保っている。なお、USBでは仕様上1つのホストコントローラに最大127台のデバイスが接続・認識可能となっている。

USBケーブル両端のコネクタが異なった形状となっている理由、それはUSBの電気的・論理的な仕様に理由があります。

USBの場合、データをやりとりするバスの内部で上下関係が存在していて、頂点(となる位置)にホストコントローラと呼ばれるUSBに接続された全機器の通信を調停・制御するコントローラが置かれ、その直下にルートハブコントローラと呼ばれる信号の分配を司るコントローラを接続し、以下は適宜ハブコントローラを挿入してバスを枝分かれさせることとで多数の各種デバイスが接続されるという、バス全体で樹形図を描くような接続構造(ツリー構造)となっています。

さらに、USBの一大特徴の1つである、USBケーブルに含まれる5V端子経由での電力給電機能も、上流側から下流側へ一方的に給電する仕様となっています。

こうした上下関係を物理的に固定し、誤接続を未然に防止する目的で、USBコネクタは上下で形状が変えてあるのです。

もしコネクタが上下で同一のものを使用していたとすると、例えば同じバスの上に2台以上のホストコントローラが接続されてしまう恐れがあり、その場合それぞれのホストコントローラが各デバイスの制御で競合し、誤動作したりストレージのデータ破壊を引き起こしたりする危険性があります。

更に言えば、例えば1台のUSBハブの2つのUSBポートを1本のケーブルでつないでしまい、ループ回路が構成されてしまうと、正常な通信が行われなくなる危険性もあります。

このループ回路の形成は、ケーブル両端で同じコネクタを使用する100Base-TXや1000Base-Tなどのイーサネットハブでも問題となっていて、そちらではわざわざハブの内蔵コントローラにループバック検出回路を設けて、ループ回路が検出された場合には該当するポートをネットワークから自動で切り離すことでネットワークに悪影響が出るのを防ぐ、といった対策を講じています。

そうしたエラーが起きたときに自動で対策する回路を組み込むのと、そもそもエラーが起きないように物理的なコネクタ形状の工夫で予防するのと、果たしてどちらが賢明な策なのかは議論の分かれるところですが、筆者個人の感想としては、うっかりミスがそもそも物理的に起こせないようになっているUSBの方がユーザーに優しい気がします。

ツリー構造採用はコストが影響していた

さて、こうして上下の関係が物理的に明確になるように設計されているUSBですが、なぜツリー構造が採用されたのでしょうか?

その辺の経緯は色々あったようなのですが、最終的には通信全体の管制作業をホストコントローラ1つに集約して行わせることで、各接続機器側のコントローラを単純かつ簡素なものとして生産コストを低減するために行われたものである、と言えます。

SCSIの接続概念図
SCSIの場合、ホストコントローラはバスの両端を知らせるターミネータ(終端)とターミネータの間であれば、どこに接続されていても基本的に等しい動作が得られる。

これに対し、USB以前の外付け機器接続に用いられていたインターフェイス、例えばSCSI(Small Computer System Interface)やIEEE 1394などでは、バスにそうした上下関係がありません。

これらはデイジーチェイン接続と呼ばれる、各デバイスに2個ずつインターフェイスのコネクタがあって順番に数珠つなぎで接続する接続法が一般的にとなっています。

この方式の場合、ホストコントローラとデバイスの関係は同等で、ホストコントローラが一括して通信を制御するのではなく、各デバイス(ホストコントローラを含む)相互の通信によってデータ送受信を制御されるため、上下関係を設ける必要が無いのです。

さらに、この方式では同じ1つのバス上に複数のホストコントローラが存在することも可能(※ただしSCSIでは識別可能デバイス数の関係で1つのバスに1台のホストコントローラという形態で利用されるケースがほとんどでした)で、実際にIEEE 1394ではそうしてホストコントローラを搭載した複数のマシンを1つのバスに接続することで、IEEE 1394をIPによるネットワーク接続の代用品とする、という機能(IP over IEEE 1394)が一部のOSで提供されています。

TERRATEC PHASE24FW
IEEE1394(FireWire)接続に対応する機器の接続端子部分の例。USB接続に対応する機器とは異なり、中央左よりの「FireWire」と記された2つのコネクタには区別がなく、どちらにケーブルを挿しても同じ動作をする。また、一方にホストコントローラからのケーブルをつなぎ、もう一方に次に接続する機器へのケーブルを接続する,といった接続を行うことで、デイジーチェイン接続を構成できる。

これなどは、上下関係があり、ホストコントローラが1つのバスに1台しか存在できないUSBでは決してできない機能であると言えます。

LSI 53C1030
SCSI規格用ホストコントローラとして最末期に開発されたチップ。表面左下にARMのロゴが入っていることでも明らかなように、ARM社から提供されたRISC CPUコアを内蔵していて、一般的なチップセットのサウスブリッジよりもダイサイズが大きい。

もっとも、この種のデイジーチェイン接続を行うインターフェイス、特にインテリジェントな通信機能を備えるものはいずれも通信の調停・制御は各デバイス相互間の通信で行う必要があり、各デバイスに搭載されるインターフェイスコントローラが複雑かつ大がかりなものとならざるを得ませんでした。

実際にも、デイジーチェイン接続を行うインターフェイスの代表例であるSCSIに対応する機器はおしなべて高コストで、ホストコントローラが下手なチップセットのサウスブリッジやノースブリッジより大きくなダイサイズとなることも珍しくなかったのです。

今更言うまでもないことですが、コントローラが複雑かつ大型になるのはつまり、そのコントローラチップの製造コストが高くなる=それらを搭載したデバイスやインターフェイスカードなどの生産コストが跳ね上がるということを意味します。

そのためコスト削減に神経質な今時のパソコンやタブレットなどでは、こうした金のかかるインターフェイスはなかなか搭載しづらくなっています。

元々は低速インターフェイスの代替品だったUSB 1.1

そうしたデイジーチェイン接続を行う在来インターフェイス各種と比較した場合、明らかに低コストとなるように設計されているUSBですが、特にUSB 1.1/2.0の場合その構成上どうしてもホストコントローラを搭載したマシンのCPUに相応の負担のかかる傾向があります。

これは、ツリー構造のバス接続で、しかもホストコントローラに通信制御のほとんど全てを丸投げすることで各デバイスのコントローラにかかるコストを削減し、インターフェイス全体のコスト低減を図るUSBの仕様を考えると致し方ない部分です。

Apple Desktop Bus(ADB)コネクタ
USBの登場によって置き換えられた「レガシー」なインターフェイスの一つ。主にApple Macintoshシリーズとその対応周辺機器に搭載された。一般的にはIEEE1394などと同様、各機器に同じコネクタが2つずつ用意され、デイジーチェイン接続することで1ポートで複数の機器を接続できた。

元々、USBはシリアル・パラレル・それにADBやPS/2端子といった「レガシー」なインターフェイスを置き換えてハードウェア設計を簡素化・低コスト化する目的で開発されたものでした。

第一世代にあたるUSB 1.1が最大でも12Mbpsとかなり低い転送速度であったのも、コストと代替されるべき各インターフェイスの転送性能を考慮しての結果であって、当時想定されていた中で最も転送速度の高いパラレルポートで理論最大速度が約11Mbps程度でしたから、通常仕様の範囲ではレガシーなインターフェイスを全てUSBで代替しても充分おつりの来るレベルの性能だったわけです。

そのため、その程度のデータ転送量であればCPUに丸投げして処理させても大した負荷になるまい、という考えが出てきたのも当然の話で、これにコストが絡むとホストコントローラが通信の面倒を全て見る、という電気的な仕様となり、そこからコネクタ形状に差異を設けるという物理仕様にたどり着くのはほぼ必然だったのです。

IEEE1394を駆逐したUSB 2.0

ちなみに、このUSB 1.1の規格が制定された時点では高速なストレージの接続は全くと言って良いほど考慮されていませんでした。

というのもUSBの開発時点では、より高速なIEEE 1394(FireWire)の下位に位置づけ、それと併存することを想定していたためです。

USB 2.0が物理的なコネクタ形状を保ったまま(※後継のUSB 3.0では給電能力強化の関係で一部コネクタの物理形状が変更されています)最大通信速度480Mbps(USB 1.1の約40倍)という大幅な高速化を実現したのは、USB 1.1に対する互換性や低コスト性を確保しつつIEEE 1394を代替可能な性能を求められたのが原因で、これによりUSB 2.0はIEEE 1394だけでなく、大半の外付けSCSI機器の代替も可能となりました。

実のところを言えば、今でもある操作に対する応答性の良さという観点ではUSB 2.0よりもIEEE 1394の方が有利なのですが、何よりUSB 2.0の持つ、コストが安くどこでも当たり前に使えるというメリットは捨てがたく、しかも物理的なコネクタ形状を変えたおかげで誰が使ってもケーブルの誤挿入によるトラブルが少ない、とあってはIEEE 1394の出る幕はほとんど残っていません。

こうした背景事情を考慮すると、バス構造がツリー構造を採り、コネクタの物理形状を変えるというごく簡単な手段で誤接続を回避するUSBは、CPU負荷の点でやや難があるものの、規格制定から20年近く経った今の目で見ても、特に初心者による無用のトラブルを避ける意味でよく考えられたインターフェイスであると断言して良いでしょう。

コメントは受け付けていません。

タグ:
PageTopへ