USBコントローラ【USB controller】
概要

USBコネクタに機器が接続されると、USBコントローラはその検出と認識を行い、通信速度や転送方式の設定を実施する。その後、CPUからの要求に応じてデータ転送を開始し、受信したデータをメモリへ格納したり、処理結果を接続機器へ送信したりする。ホットプラグ機能による機器の抜き差しの検知や、通信エラーの検出、転送のスケジューリングなども担う。
パソコンではかつて独立した拡張チップとして実装されることが多かったが、現在はCPUやチップセット、SoC(System-on-a-Chip)などに統合されている場合がほとんどである。一方、マイコンや組み込み機器向けには、必要な場合にUSB機能を追加するための単体コントローラICも製造・供給されている。機器によってパソコンやスマートフォンなどホスト側として動作するものと、USBメモリやUSBキーボードのように周辺機器側として動作するものがあり、それぞれ異なる制御回路を備える。
USB規格の世代に応じて、対応するコントローラの仕様も変化してきた。USB 1.0/1.1の時代には、米インテル(Intel)社が策定した「UHCI」(Universal Host Controller Interface)と米コンパック(Compaq)社(当時)や米マイクロソフト(Microsoft)社らが策定した「OHCI」(Open Host Controller Interface)という、互いに非互換の2つの方式が並立していた。
USB 2.0では「EHCI」(Enhanced Host Controller Interface)として仕様が統一され、実装の混在状況は解消された。USB 3.0以降およびUSB4では「xHCI」(Extensible Host Controller Interface)が採用されている。xHCIはそれ以前の世代との後方互換性を持ち、USB 1.x、2.0、3.x世代の機器を単一のコントローラで管理できる。
USBコントローラはオペレーティングシステム(OS)からはデバイスドライバを介して利用されるハードウェアとして扱われる。ドライバがコントローラ固有の制御方式を抽象化することで、アプリケーションやOSの各機能が共通の手順でUSB機器を利用できる。USB機器の認識や通信が正常に行えない場合、コントローラやドライバの不具合、あるいは対応規格の相違が原因となることがある。