UHCI(ユーエイチシーアイ)とは | 意味や読み方など丁寧でわかりやすい用語解説
UHCI(ユーエイチシーアイ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ユニバーサル・ホスト・コントローラー・インターフェース (ユニバーサルホストコントローラーインターフェース)
英語表記
UHCI (ユーエイチシーアイ)
用語解説
UHCI(Universal Host Controller Interface)は、パソコンなどのホスト機器がUSB(Universal Serial Bus)デバイスと通信するための規格の一つである。具体的には、ホスト機器の内部にある「USBホストコントローラ」と呼ばれるハードウェアと、OS(オペレーティングシステム)上で動作する「USBドライバ」と呼ばれるソフトウェアが、どのように連携してUSBデバイスを制御するかを定めた規約を指す。これはUSB 1.x(USB 1.0および1.1)の時代に、Intel社が主導して策定し、主に同社のチップセットに採用されたことで広く普及した規格であった。
USBは、マウス、キーボード、プリンター、外部ストレージなど、さまざまな周辺機器をパソコンに接続するための標準的なインターフェースとして、1990年代半ばに登場した。その目的は、従来のシリアルポートやパラレルポートのように複数の異なる種類のポートを持つ必要をなくし、統一された高速な接続手段を提供することにあった。しかし、物理的なケーブルやコネクタの規格が統一されても、パソコン内部でUSBデバイスをどのように管理し、データのやり取りを行うかは、ハードウェアとソフトウェアの間に明確な取り決めが必要となる。この役割を担うのがホストコントローラと、それを制御するホストコントローラインターフェース規格であった。
UHCIは、このホストコントローラとOSドライバ間のインタフェースとして、ハードウェア側の設計を比較的シンプルに保ち、その分の複雑な処理をOSドライバに任せるという設計思想に基づいていた。具体的には、USBホストコントローラは、メインメモリ上にOSドライバが配置した特定のデータ構造を直接読み書きすることで動作する。OSドライバは、USBデバイスにデータを送信したい場合や、デバイスからデータを受信したい場合、またデバイスの状態を問い合わせたい場合などに、これらのコマンドやデータバッファをメインメモリ上の所定の場所に用意する。UHCI互換のホストコントローラは、定期的にメインメモリをポーリング(巡回監視)し、用意されたデータ構造を検出すると、それに従ってUSBバス上での通信処理を実行する。通信が完了したり、特定のイベントが発生したりすると、その結果を再度メインメモリ上のデータ構造に書き込むか、OSに割り込み信号を送ることで通知する。これにより、OSドライバはUSBデバイスとの通信状況を把握し、次の処理へと進むことができた。
UHCIの主な利点は、ハードウェアの実装が比較的容易であることであった。これにより、Intelは自社のチップセットにUHCI互換のホストコントローラを効率的に統合し、市場に広く展開することができた。しかし、その一方で、OSドライバ側でより多くの処理が必要となるため、CPU(中央演算処理装置)への負荷が比較的大きくなるという側面もあった。特に、USB 1.xの時代はCPUの処理能力が今ほど高くなかったため、このCPU負荷は無視できない課題となる場合もあった。
同時期には、UHCIとは異なる設計思想を持つもう一つのUSB 1.x向けホストコントローラインタフェース規格であるOHCI(Open Host Controller Interface)も存在した。OHCIはCompaq社やMicrosoft社などが主導して策定され、ハードウェア側でより多くの処理を担い、OSドライバの負担を軽減する設計が特徴であった。これにより、OHCIはCPU負荷が低いという利点があったが、ハードウェアの実装がUHCIよりも複雑になる傾向があった。結果として、USB 1.xの時代には、Intel系のチップセットではUHCIが、それ以外のベンダー(VIA、SISなど)のチップセットではOHCIが採用されるという状況が生まれ、OSドライバはどちらの規格にも対応する必要があった。
USBの進化は止まらず、2000年にはUSB 2.0が登場し、データ転送速度が大幅に向上した。UHCIやOHCIはUSB 1.xの低速および全速転送にしか対応できなかったため、USB 2.0の高速転送に対応するための新たな規格が必要となった。これがEHCI(Enhanced Host Controller Interface)である。EHCIはUSB 2.0の高速転送に対応し、従来のUHCIやOHCIのホストコントローラと共存できるように設計された。そのため、USB 2.0対応のパソコンでは、EHCIコントローラが高速転送を担当し、低速・全速転送のデバイスに対してはUHCIまたはOHCIコントローラが引き続き使われる、という形で複数のコントローラが搭載されることが一般的であった。
さらにUSBは進化を続け、USB 3.0以降のSuperSpeed転送に対応するため、xHCI(eXtensible Host Controller Interface)という統一規格が登場した。xHCIは、UHCI、OHCI、EHCIといった従来のすべてのホストコントローラインタフェースの機能を統合し、USB 1.xからUSB 3.x以降のすべての転送速度を単一のコントローラで管理できるように設計されている。現代のほとんどのパソコンでは、xHCI互換のホストコントローラが搭載されており、これによりUSBポートに接続されるどんな速度のUSBデバイスも、単一のドライバで効率的に管理されている。
今日では、UHCI互換の物理的なホストコントローラが直接搭載されているパソコンはほとんど見られない。しかし、USBの歴史において、UHCIは初期のUSB普及に大きく貢献した重要な規格であり、その設計思想や動作原理を理解することは、USBがどのように進化し、現在の多様なデバイスとのシームレスな接続を実現しているかを理解する上で非常に有益である。システムエンジニアを目指す上では、現代の主要な規格だけでなく、その基盤となった過去の技術を知ることも、問題解決能力や新しい技術への適応力を高める上で重要な知識となる。