USB Host Controller

USB Host Controller は、USB の制御を行うコントローラーです。

USB では USB Host Controller が USB 機器の管理を一手に仕切るのが特徴です。この仕様により USB 機器の制御には必ず 1 つの Host Controller が必要となります。USB 機器は、Host Controller に USB 制御を委ねる事で複雑な制御を取り込む必要性が無く、コストを抑えて開発することが出来ます。

USB Host Controller の種類

UHCI (Universal Host Controller Interface)

UHCI は Intel の主導で開発された Interface です。

主に Intel/VIA 等の Chipset に使用されています。Full Speed(FS)/Low Speed(LS) での制御に用いられています。

OHCI (Open Host Controller Interface)

OHCI は Microsoft、Compaq、NS 等の主導で開発された Interface です。

NEC、SiS、Opti 等の Chip に使用されています。FS/LS での制御に用いられています。

EHCI (Enhanced Host Controller Interface)

EHCI は Hi-Speed USB(HS) 専用の Interface です。

FS/LS で接続する場合には UHCI/OHCI が使用されます。Hi-Speed USB をサポートする OS の場合、通常「EHCI+UHCI」若しくは「EHCI+OHCI」の組み合わせで動作します。

USB On-The-Go (OTG)

USB On-The-Go は、USB 機器同士(Peer-to-Peer) で通信を行うための仕組みを組み込んだ Interface です。

SL-811HS 等のチップがこれに当たります。組み込み用 OS (Windows CE, Linux 等)でサポートされています。

Appendix

UHCI と OHCI の仕様の分断について

当初、Intel は UHCI の仕様を外部に公開しない方針だったことより、他社は OHCI を独自に開発する道を選ぶことになり、結果的に仕様が 2 分化することになった経緯がありました。

EHCI はその失敗を踏まえ、開発当初から仕様を公開することで Hi-Speed USB の Interface として統一することに成功しています。

UHCI と OHCI の違いについて

UHCI と OHCI の違いについて書籍「USB コンプリート(ISBN4-434-02165-6)」に以下の記載がありました。

UHCI はソフトウェア上の通信の負担に関心を置き、ハードウェアをより簡単で安価にすることを狙っている。
OHCI はハードウェアの負担に関心を置き、ソフトウェア制御を容易にすることを狙っている。
(中略)2種類のホストコントローラはパフォーマンスでも多少の違いがある。

USB 機器を作成する開発者は、初期化のタイミング辺りで違いが見られるようですので、UHCI と OHCI との違いについては気をつけたほうが良いかもしれません。OS (Driver) からすれば通常、真下の Driver が違いを吸収してくれるので区別をする必要は無いでしょう。

関連情報

用語