USB 1.1と2.0でドライバーは別々
USB 3.0ではすべてを統合
これに対してUSB 2.0では、より高速なHigh Speed(HS、480Mbps)が利用できるようになった。しかし従来のソフトウェアを生かすために、HSのみのコントローラー(EHCI、Enhanced HCI)が定義され、USB 1.1相当部分には継続してUHCIやOHCIを利用できるようにした。つまり、USB 2.0までのコントローラーは、LS/FS用のコントローラーとHS用のコントローラーを含んだもので、物理的にはひとつのデバイスだが、ソフトウェア側からみると2つのホストコントローラーになっていた。
これに対してUSB 3.0では、Super Speed(SS、5Gbps)が定義された。SSをサポートするコントローラーに対しては、「xHCI」(eXtensible HCI)が定義された。これは、ひとつのHCIでLS/FS/HS/SSをサポートするコントローラーを定義するものだ。xHCIはひとつのホストコントローラーで、デバイスがUSB 1.1でも2.0でも個別のポートデバイスを介することなく、直接ホストコントローラー(のドライバー)と接続するようになる。デバイスやハブの有無などにより、ホストコントローラードライバーを変える必要がなくなったからだ。
xHCIはその名前のとおり、ホストコントローラーの機能を「UCX」(USB Host Controller Class Extension Driver)と呼ばれるドライバーで、拡張可能となっている。新規のUSB規格がすぐに登場する……というわけではないが、これである程度、将来の拡張に耐えるHCIになったわけだ。
USB 3.0と2.0での挙動の違い
USB 2.0までは、USBポートごとにドライバーが組み込まれ、USBデバイスとUSBポートの間に対応関係があった。そのため、物理的に同一のデバイスでも接続するポートを変更すると、接続したポートに対して再度ドライバーのインストールが行なわれる。あるポートに接続したUSBメモリーを、別のポートに初めて挿すたびにドライバーがインストールされるのを見たことがあるだろう。あれはこのせいだ。
こうなった理由は先に述べたとおり、同じポートであってもUSB 1.1デバイスと2.0デバイスでは、接続するホストコントローラーが別になるからだ(図1)。ちなみに途中にUSB 2.0ハブが入る場合、USB 1.1デバイスのLS/FSは、ハブ内でHSに変換されるため、USB 1.1デバイスでもEHCI側に接続することになる。
Windows 7でデバイスマネージャーを開き、「表示」メニューから「デバイス(接続別)」を開いたとき、PCIバスの下にUSB 2.0ホストコントローラーである「USB Enchanded Host Controller」と、USB 1.1ホストコントローラーである「USB Universal Host Controller」がそれぞれ表示されているはずだ(インテル系チップセットの場合)。これに対して、USB3.0ホストコントローラーがあるなら、PCI Express Root Portの下などにUSB 3.0 Host Controllerが置かれて、その下に「USB 3.0 Root Hub」さらに「USBデバイス」があるはずだ(図2)。

この連載の記事
-
第34回
PC
Windows 8の狙いは、UIの変化よりもAPIの変化が本質 -
第33回
PC
Windows 8が動作しなくなった? 新しくなった修復機能 -
第32回
PC
Windows 8でIMEに求められる新しい要素とはなにか? -
第31回
PC
Windows 8の無線LANをコマンドラインで細かく制御 -
第30回
PC
Windows 8をマウスで使いやすくするレジストリの小技 -
第29回
PC
周辺機器・アプリがWindows 8/RTで動くか確認する方法 -
第28回
PC
Windows 8のキーボードショートカットを全公開 -
第27回
PC
Windows 8が使いにくい? マウスを変えると印象も変わる -
第26回
PC
実はNFCに対応しているWindows 8 ただしアプリは不足 -
第25回
PC
実は扱いがまったく異なるWindows 8でのタッチパネル -
第24回
PC
Surfaceから見えるWindows RTの実像と、将来PCへの影響 - この連載の一覧へ