USBデバイスにはUSBデバイス・コントローラがいます。 USBデバイス・コントローラはホストからの指示に従ってデータを送受信したり、イベントの通知を行います。 USBは基本的にホストとデバイス・コントローラ間でやり取りを行いUSBデバイスにアクセスします。
USBデバイスがデバイス・コントローラに接続されるとホストに割り込みを発生させます。
デバイス・コントローラが1つでもその先に繋がるUSBデバイスは複数あります。 それあの端点をエンドポイントと呼び、デバイス・コントトーラはエンドポイントを切り替えることで複数のUSBデバイスをアクセスします。
デバイス・コントローラはエンドポイント用にFIFOを用意しています。 このFIFOを使用してデータのやりとりを行います。 FIFOのアクセスはホストが自発的に行い、デバイス・コントローラから自発的にデータ転送を行うことはありません。