ちょっと古い話だが、連載第275回でICH7に搭載されるUSB Controllerの様子をDevice Managerで示している。この時に構造の模式図をこんな風に示したが、これをもう少し細かく描き直したのが図1である。各コントローラにそれぞれUSB Hub(Device ManagerではこれをUSB Root Hubと称している)が入り、これで複数のポートに信号を分配する形となっている。要するにこういった形でUSB HubはまずHost Controllerで利用されている訳だ。

図1

さて、これがUSB 3.0ではどうなるか? であるが、連載開始の頃と違い、現在では普通にUSB 3.0 Controllerが入手できる(Photo01)。そこで実際に確認してみることにした。

Photo01: 玄人志向のUSB3.0N2-PCIe。ASUSTeKのU3S6などと異なり、PCIe Gen2レーンを使わないとフル性能が発揮できない。というわけで、IntelのX58SOに装着してみた。

まずPhoto02が、素の状態のICH10のコントローラの状態である。EHCIが2つ、UHCIが6つあり、これがそれぞれUSB Hubを介してポートに繋がっている訳だ。ここにUSB3.0N2-PCIeをインストールすると、USB 3.0 HostとUSB Root Hubが1つづつ出現しているのが判る(Photo03)。ルネサスエレクトロニクス(旧NECエレクトロニクス)のμPD720200の場合、内部構造はこんな具合(Photo04)になっている。従来と大きく異なるのは、USB 1.1/2.0/3.0の全てのプロトコル層を、xHCIコントローラがカバーしていることだ。この結果、従来の様にOHCI/UHCIとEHCIが混在する、という構図はUSB 3.0ではなくなる可能性がある。

Photo02: 2つの"USB Composite Device"は、KVMスイッチを介して繋がっているUSBキーボードとUSBマウスである。

Photo03: Photo02と見比べると、デバイスが2つ増えていることがわかる。

Photo04: こちらから入手できる、"μPD720200 Product Brief"より抜粋

実際、このUSB 3.0ポートにUSB 2.0対応のUSBメモリを装着すると、扱いは従来のUSB 1.1/2.0ポートに装着した場合と同じだが、USB 3.0 Host Controllerの管理下におかれている事が判る(Photo06)。ちなみに従来のポートの場合、物理的には同じポートに挿した場合でも、USB 2.0の場合(Photo07)とUSB 1.1(Photo08)の場合では管理が異なることが判る。

Photo05: Photo03と見比べると、一番下に「USB大容量記憶装置」が出現しているのが判る。

Photo06: デバイスマネージャの表示を「デバイス(接続別)」に切り替えて表示してみた。

Photo07:これはUSB 2.0対応のUSBメモリを装着した図。EHCIの下にぶら下がっている。

Photo08: 流石にUSB 1.1対応のUSBメモリは所有していないので、同じポートに初代のMicrosoft USB IntelliMouse Opticalを装着してみた。今度はUHCIの下にぶら下がっているのが判る。

こうなってくると、例えばチップセット内にUSB 3.0を取り込む場合、それは図2の様な構図ではなく、図3の様になる可能性が低くない、ということだ。「図2にはならない」とは書けないのは、今回はあくまでもNECのDiscreteのHost ControllerだからPhoto06の様な構造になっているという面もあるからだ。USB 3.0のSpecificationでは、あくまで「USB 1.1/2.0をサポートすること」を必須としているだけで、まとめてそれをカバーすること自体は必須としていない。

図2

図3

実際、例えばPLDAの提供するUSB 3.0 Host Controllerの場合、USB 3.0のProtocol/Link/PHYの各LayerとUSB 2.0のCore Layerが提供されるが、ここの説明の中にはっきりと"Or with any USB 2.0 IP through intelligent multiplexing"とあり、なので図1の構成にUSB 3.0のみを追加して図2の様な構成にすることも出来るし、既存のUSB 1.1/2.0のコントローラを全部取り去り、図3の様にすることも可能である。要するにインプリメント次第な訳だ。

さて、ここまでの話は実は余談である。実は図2の場合でも図3の場合でも必要になるのが、多ポートのUSB 3.0に対応したHubである。今はまだUSB 3.0に対応したデバイスはそれほど多くないから、コントローラはDiscreteの形にしておき、バックパネルに2ポート出しておけば十分かもしれないが、将来USB対応機器が増えた場合には絶対にこれでは足りなくなる。当初は2011年あたりから各社USB 3.0をチップセットに導入予定だったが、最近では2012年あたりに延期されつつある。この2012年あたりでは、USBポート自体も恐らく16ポート以上が必要になるだろうし、その際に「このポートはUSB 3.0が使えるけれど、こちらはUSB 2.0止まり」なんて制約を設けたら商品価値がむしろ下がりかねない。

だからといって、コントローラを10も20も内蔵するのも馬鹿馬鹿しい。USB 3.0を使いSSDでRAIDでも組むとかいうならばともかく(そうした用途なら、RAIDコントローラを別に用意したほうが賢明であろう)、コントローラはせいぜい2つ(EHCI同様、最大で1コントローラあたり8ポート程度に収めると思われる)で、あとは9ポート(UpStream 1/DownStream 8)のUSB Hubを使ってポート数を増やす、というのが現実的な解と思われる。

(続く)