SBの世界では、ホスト・コントローラと呼ばれるチップがすべてを決定・支配しており、すべての転送はホストから開始され、周辺機器は転送要求は行えません。つまり、USBの世界では、周辺機器同士の直接的なデータ転送は行えないのです。唯一周辺機器に許されている、ホストへの積極的なアクションはシステムがサスペンドしているときに目覚まし時計のようにシステムを起こすことで、リモート・ウェイク・アップと呼ばれている機能です。
ホスト・コントローラはバスに転送開始を伝えるトークンと呼ばれるパケットをブロードキャストで発行します。USBに接続された周辺機器は接続時にアドレスを割り当てられるので、トークンに含まれるアドレスが自分を示していない限り、自分とは関係ない転送としてこれから行われる転送を無視します。唯一、対応するアドレスをもつデバイスだけが応答します。USB2.0についてもこの点は変わりません。また、定義できるアドレス数も増加しません。

ホスト・コントローラについて

 

Hubのダウンストリーム・ポート

 

アドレスの割り当てはHubのダウンストリーム・ポートがHubとしてPCに正しく認識されるまで無効になっていることを利用して行います。Hubを含めたすべての周辺機器は設定され、固有のアドレスを割り当てられるまで、デフォルトアドレス"00h"に反応することが決められています。まず、PCはひとつめの装置が何であるかを理解し、周辺装置のアドレス設定などの実行や対応するドライバのロードを行います。これをUSBではEnumerationと呼びます。PCはひとつめの周辺装置がHubであることを認識すると、Hubのダウンストリーム・ポートを順番に有効にして、接続されている装置が何であるかを理解し、周辺装置のアドレス設定などの実行や対応するドライバのロードを繰り返し行っていきます。

次にUSB FDDを一例に必要な構成について説明します。USB FDDはUSB環境下での設定のためにControl転送とデータのためのBulk転送、FDの着脱などを通知するInterrupt転送(それぞれの転送の詳細は後述します)が必要になります。周辺機器のアドレスはひとつですから、ホストからどの転送方式で転送を行うかをトークンに載せます。また、周辺機器側では各転送に対してバッファ(FIFO)を持つので、バッファに番号をつけます。各バッファ番号と転送方式の関連づけができれば、トークンにその番号を載せて送るだけで周辺機器側で転送方式を理解できます。USBではこの転送方法と関連づけされたバッファをエンドポイントと呼びます。
Control転送はUSB環境下での設定のために必ず使うので、どのデバイスにも必要です。そのため、Endpoint 0は必ずControl転送に割り当てられます。Control転送は双方向通信ですが、エンドポイントの番号はひとつだけを使います。FDDの場合、Bulk転送では受信用と送信用それぞれにエンドポイントの番号の割り当てが必要になります。これはControl転送が必ず双方向通信になるのに対してBulk転送が受信、送信、双方向の3つのパターンが存在するからです。
Endpointをまとめて考えるのがInterfaceという思想です。Interface毎にPC上のドライバをロードできるので、複数の機能をひとつの装置で比較的容易に実現することができます。

 

インタフェースという思想

  • カタログポータル