USBおよびFirewireホストコントローラインターフェイス(UFHC )は、 USBまたはIEEE 1394ハードウェアのホストコントローラがソフトウェア内のホストコントローラドライバと通信できるようにするレジスタレベルのインターフェイスです。ドライバソフトウェアは通常、パーソナルコンピュータのオペレーティングシステムに付属していますが、マイクロコントローラなどのアプリケーション固有のデバイスによって実装される場合もあります。
拡張カードやマザーボードのコントローラでは、マザーボードのコントローラチップに搭載されたデジタルロジックエンジンと、高速差動信号を処理するアナログ回路など、多くのカスタムロジックが必要となります。ソフトウェア側では、デバイスドライバ(ホストコントローラドライバ、略してHCD)が必要です。
Open Host Controller Interface ( OHCI ) [ 1 ]はオープンスタンダードです。

IEEE 1394 ( FireWire、i.LINK 、 Lynxとも呼ばれる)カードにOHCIを適用する場合、そのカードはPCへの標準インターフェースをサポートしており、最新のオペレーティングシステムに付属するOHCI IEEE 1394ドライバで使用できることを意味します。カードは標準のOHCIインターフェースを備えているため、OSはカードの製造元や動作原理を事前に正確に知る必要はありません。標準プロトコルで定義されている一連の明確なコマンドをカードが理解していると安全に想定できます。
USBの OHCI 規格は IEEE 1394 の OHCI 規格と似ていますが、USB 1.1 (フルスピードとロースピード) のみをサポートしています。そのため、レジスタ インターフェースは全く異なります。UHCI と比較すると、コントローラに多くのインテリジェンスが移されているため、効率がはるかに高くなっています。これが、OHCI を定義する動機の一つでした。コンピュータが非 x86 USB 1.1 または Intel や VIA 製ではない USB コントローラから x86 USB 1.1 を提供する場合、おそらく OHCI を使用しています (たとえば、OHCI は NEC チップセットをベースとしたアドイン PCI カードでよく使用されています)。UHCI よりも知的財産の制限がはるかに少ないです。[ 2 ] 32 ビットのメモリ アドレス指定のみをサポートしているため、[ 3 ] 64 ビット オペレーティングシステムで動作させるにはIOMMUまたは計算コストの高いバウンス バッファが必要です。OHCI はメモリ マップド I/Oのみでコンピュータの他の部分とインターフェースします。[ 3 ]
ユニバーサル ホスト コントローラ インターフェイス( UHCI ) は、Intel がUSB 1.x (フルスピードおよびロースピード)用に作成した独自のインターフェイスです。Intel からのライセンスが必要です。UHCI を使用する USB コントローラはハードウェアではほとんど何もせず、USB バスの管理の大部分はソフトウェアの UHCI ドライバに任されています。 [ 2 ] 32 ビット メモリ アドレス指定のみをサポートしているため、[ 4 ] 64 ビット オペレーティングシステムで動作させるには IOMMU または計算コストの高いバウンス バッファが必要です。UHCIはポート マップ I/O とメモリ マップ I/O で構成され、ステータス更新や、送信する必要のあるデータまたは受信したデータを保持するために必要なデータ バッファにもメモリ マップ I/O が必要です。[ 4 ]
拡張ホストコントローラインターフェイス(EHCI)[ 5 ]は、USB 2.0に適用可能な高速コントローラ規格です。従来存在していたUHCIおよびOHCIベースのシステムは、必要以上に複雑でコストがかさんでいました。そのため、USB実装者フォーラム(USB-IF)はEHCIの公開仕様を強く求めました。インテルはEHCI適合性テストを実施し、これにより独自機能の侵入を防ぐことができました。
当初、高速ポートを備えたPCには2つのコントローラがあり、1つは低速およびフルスピードデバイスを処理し、もう1つは高速デバイスを処理していました。通常、このようなシステムにはEHCIとOHCIまたはUHCIドライバのいずれかが搭載されていました。UHCIドライバは、マザーボード上のIntelまたはVIAチップセットのUSBホストコントローラ、あるいはコンピュータの拡張バスに接続されたVIA製ディスクリートホストコントローラに対して、低速およびフルスピードのインターフェースを提供します。OHCIドライバは、他のすべてのマザーボードチップセットベンダーの統合USBホストコントローラ、またはコンピュータの拡張バスに接続されたディスクリートホストコントローラのUSBポートに対して、低速およびフルスピードの機能を提供します。EHCIドライバは、マザーボード上またはディスクリートUSBコントローラ上のUSBポートに対して、高速機能を提供します。より新しいハードウェアでは、すべてのポートを内部の「レートマッチング」ハブ(RMH)経由でルーティングします。このハブは、フルスピードとロースピードで動作する直接接続ポートに関わるすべてのトラフィックを、EHCIコントローラに提示される高速トラフィックと、その速度で動作するポートが期待するフルスピードまたはロースピードトラフィックとの間で変換し、EHCIコントローラがこれらのデバイスを処理できるようにします。
EHCIソフトウェアインターフェース仕様は、そのデータ構造の32ビット版と64ビット版の両方を定義しているため[ 5 ] 、UHCI仕様またはOHCI仕様(いずれも32ビットのみの仕様)を使用するコンパニオンコントローラの代わりに、フルスピードとロースピードの接続を提供するレートマッチングハブを実装すれば、64ビットオペレーティングシステムで動作するためにバウンスバッファやIOMMUは必要ありません。
EHCIは、特にUSBセレクティブサスペンドなどの電源管理機能を追加しました。[ 6 ]
拡張ホストコントローラインターフェイス(xHCI)は、従来の規格に比べて速度、電力効率、仮想化機能を向上させた最新のホストコントローラ規格です。また、UHCI/OHCI/EHCIに代わるUSBホストコントローラを定義することも目的としていました。xHCIは、USB 3.1 SuperSpeed+、USB 3.0 SuperSpeed、USB 2.0 Low-speed、Full-speed、High-speed、USB 1.1 Low-speed、Full-speedなど、すべてのUSBデバイス速度をサポートしています。
仮想ホストコントローラインターフェイス(VHCI)とは、物理デバイスに裏付けられていない仮想USBデバイスをエクスポートできる仮想コントローラのことです。例えば、Linuxでは、VHCIコントローラはUSB/IPプロトコルを使用して接続された他のマシンのUSBデバイスを公開するために使用されます。
USB4 ホストインターフェイスは、USB4 仕様で定義されています。これにより、オペレーティングシステムは、USB、DisplayPort、PCI Express、Thunderbolt、またはホスト間通信のための USB4 ホスト ルートを管理できるようになります。[ 7 ]