設計の基本は仕様の理解 ――高速シリアル通信を実現するために知っておくべき最低限の知識
●エンドポイントは必要な数だけ用意する
USBの通信でもっとも使われる用語に「エンドポイント(EP:endpoint)」があります.エンドポイントはUSBデバイス内に置かれたバッファ・レジスタです.ホストとUSBデバイスの間は2線式のより対線ケーブルが1対しかありません.ホスト側のソフトウェアは,論理的にはデバイスに対して「パイプ(pipe)」と呼ばれる複数の通信経路を経て,エンドポイントとデータの送受信を行います.
エンドポイントには,用途によってコントロール・エンドポイント,デバイス・エンドポイントなどのいくつかの名称があります.エンドポイントとパイプの概念を図15に示します.ホストからデバイス方向(デバイス受信)をOUTエンドポイント,デバイスからホスト方向(デバイス送信)をINエンドポイントと呼びます.
エンドポイントは4ビットで割り当てられ,最大数はIN=16,OUT=16の合計32です.使用できるエンドポイントの数とサイズは,表3のように通信速度によって異なります.エンドポイントはつねに最大数をサポートする必要はありません.ホストとUSBデバイスの間で必要とする数だけを用意すればよいのです.例えば,米国Cypress Semicon-ductor社が開発したUSB 2.0デバイス・コントローラLSI「FX2(CY7C68013)」では,エンドポイントは,EP0,EP1,EP2,EP4,EP6,EP8の六つです(図16).
エンドポイントを増やすと通信路を時分割する数が増えてしまい,切り替えによるオーバヘッド時間が増加してスループットが下がります.これを防止するためには,ホストのアプリケーションによって1パケットを複数データで構成して,エンドポイントを共有した場合とエンドポイントをデータごとに分割した場合のスループットを比較してみる必要があります.
USB 1.1 ロースピード・モード |
USB 1.1 フルスピード・ モード |
USB 2.0 ハイスピード・モード |
|
基本速度 | 1.5Mbps | 12Mbps | 480Mbps |
最大エンドポイント数 | 3 | 32 | 32 |
最大バルク・ パケット・サイズ |
8バイト | 64バイト | 512バイト |
最大バルク転送 スループット |
16Kバイト/s | 1.1Mバイト/s | 56Mバイト/s |
最大アイソクロナス・ サイズ |
使用不可 | 1,023バイト | 1,024バイト |
最大アイソクロナス・ スループット |
使用不可 | 1.0Mバイト/s | 24Mバイト/s |