EZ-USB® FX3™でUSB 3.0のスループットを最適化

AN86947
EZ-USB® FX3™で USB 3.0 のスループットを最適化
作成者: Manaskant Desai、Karthik Sivaramakrishnan
関連プロジェクト: あり
®
関連製品ファミリ: EZ-USB FX3
ソフトウェア バージョン: FX3 SDK v1.3.1
関連アプリケーション ノート: なし
USB 3.0 は、5G ビット/秒 (スーパースピード) の信号速度を使用しているため、前世代の製品より大幅な性能向上が約束されま
す。しかし、最大達成可能なスループットは、ホスト PC コントローラーのタイプ、オペレーティング システム、USB 設計 (転送タイプと
バッファ サイズ) などの重要な要素にも依存します。本アプリケーション ノートでは、USB 3.0 のデータ転送を最大化するために EZ®
USB FX3™コントローラーを使用する様々な技法について説明します。
はじめに
サイプレスの EZ-USB FX3 は、高度に集積化された柔軟な機
能を提供し、あらゆるシステムに USB 3.0 機能を追加できる
ようにする次世代 USB 3.0 周辺機器コントローラーです。
USB 3.0 の信号速度は 5G ビット/秒であり、USB 2.0 の 10
倍の速度です。FX3 デバイスは、USB3.0 仕様に対応した理
論上の最大値に近いスループットを実現することができます。
FX3 はすべてのスーパースピード転送タイプに対応していま
す: コントロール、アイソクロナス、バルク、および割り込み。た
だし、コントロール転送は大量のデータを移動するにはお勧め
できません。従って、本アプリケーション ノートは、アイソクロナ
ス、バルク、および割り込みの転送タイプに対して最大スルー
プットに達成するためのガイドラインをまとめます。
FX3 は通常、USB3.0 ホストおよびイメージ センサー、ASIC、
FPGA などの外部デバイス間でデータを転送するブリッジ デ
バイスとして使用されています。FX3 ベースのアプリケーション
によって得られたデータ スループットは、次の複数の要因に依
存します: USB の転送タイプ、FX3 デバイス内で使用されてい
るバースト サイズやバッファ データ量などの転送パラメーター、
および使用されるホスト コントローラーと OS プラットフォーム
です。
本アプリケーション ノートでは、FX3 の開発基板を使用して、
各種ホストとオペレーティング システムで転送方法をテストし、
比較します。このアプリケーション ノートの最後に、特定のアプ
リケーションにおいて最大の USB 3.0 スループットを達成する
ための FX3 コンフィギュレーションの詳細を記載します。
簡単な FX3 ファームウェアの例を使用し、それぞれの要因が
どのようにスループットに影響を与えるかを調査します。さらに、
特定のアプリケーションに対して性能を最適化するためのガイ
ドラインについても説明します。
FX3 にデータを書き込んでいる時のスループット値については、
AN65974 を参照してください。
テストの設定
図 1 は、このアプリケーション ノート用のテストの設定を示して
います。すべてのテストは、USB 3.0 コネクタを介して PC ホス
トに接続されている FX3 開発キット (DVK) を使用して実行さ
れます。
図 1. 本アプリケーション ノート用のテスト設定
USB 3. 0 Host (PC)
Control
Center for
FX 3
Programming
Streamer
Application
for Data
Transfer
EP OUT
U
S
B
USB3.0
CPU
or
GPIF II
U
S
B
EP IN
表 1. 4 つの転送テストのコード イメージ
テスト
FX3 コード
イメージ
説明
1
USBIsoSo
urceSink
EP1-IN は ISO データ用の一定のソース;
EP1-OUT は ISO データ用の一定のシンク。
GPIF II の接続なし
2
USBBulkS
ourceSink
USBIntrSo
urceSink
GpifToUsb
#1 と同様であるが、BULK 転送を使用
3
4
本アプリケーション ノートは FX3 内部で生成されたデータのみ
を使用して USB 3.0 のスループット値を一覧化します。USB
3.0 のスループットは、 データが GPIF II を介して外部デバイ
スから FX3 に転送された場合には低くなります。FPGA が
www.cypress.com
FX 3 DVK
文書番号: 001-98029 Rev. **
#1 と同様であるが、INT 転送を使用
GPIF II は、PC へのバルク転送を実行する
EP-IN に最大速度で転送するために使用さ
れます。これは、図 1 に示されている GPIF
II から EP1-IN への点線のパスを使用する
唯一のテストです。
1
EZ-USB® FX3™で USB 3.0 のスループットを最適化
図 1 は、このアプリケーション ノートに使用されるセットアップ
のブロック図を示します。Control Center のアプリケーションは、
ファームウェア イメージを FX3 の内部 RAM にダウンロードす
る た め に 使 わ れ て い ま す 。 ダ ウ ン ロ ー ド し た 後 、 FX3 は
Streamer アプリケーションを使用してデータ転送を実行する
準 備 が で き て い ま す 。 ユ ー ザ ー に 便 利 な よ う に 、 Control
Center、C++ streamer アプリケーション バイナリ、およびサイ
プレスの USB 3.0 ドライバー (CyUSB3.sys) も付属して提供
されています。付属で提供されている streamer アプリケーショ
ンは、最高の性能値を実現できるように設定されています。
最新の FX3 SDK は、www.cypress.com/?rID=57990 よりダ
ウンロードしてください。
Streamer アプリケーションの C++バージョンは、SDK をイン
ストールした後、次のパスをご参照ください:
C:\Program Files\Cypress\EZ-USB FX3
SDK\1.3\application\cpp\streamer\x86\Release
注: 64 ビットの Windows マシンでは、プログラム ファイルの
ディレクトリは「Program Files (x86)」となります。
図 2 に示されている Streamer アプリケーションは、表 1 に示
すように、4 つの転送テストに対応しており、「スループット メー
ター」として機能します。このノートでは、Streamer アプリケー
ションの C++バージョンを使用して、3 つの転送タイプ (アイソ
クロナス、バルク、および割り込み) の性能を測定します。アプ
リケーションとドライバー レベルのオーバーヘッドが原因で、
C#バージョンはより低いスループットを提供することに注意し
てください。
図 2. C++ Streamer のスナップショット
この Streamer アプリケーションのユーザー インターフェース
は以下のものを示すために設計されています。
Endpoint: このドロップダウン リストより、ユーザーは異なる
転送タイプとエンドポイント バッファの数を選択できます。
Packets per Xfer: 転送は 1 つのデータ セットに対するパケッ
トのコレクションです。転送ごとのパケット数が多いほど、USB
オーバーヘッドが低減され、より高いデータ レートが得られます。
Xfers to Queue: この設定により、複数の転送を開始して、そ
れらをタスク キューに追加することができます。これはホスト
アプリケーション側の連続転送間の待ち時間を減らします。そ
のため、より多くの転送をキューに入れることにより、より高い
データ転送速度が得られます。
Successes: ストリーミング テスト中に転送が正常に完了した
パケットの総数をインクリメントすることによって示します。
Failures: バッファの転送でエラーが報告されるたびにインク
リメントします。1 つの有り得るエラーはデバイスからのデータ
がない場合です。
Transfer Rate: 選択されたエンドポイントを介して USB バス
と EZ-USB FX3 の現在のスループット性能をリアルタイムに
更新します。
CPU Utilization: USB 経由でストリーミングを行っている時
のコンピューターの CPU 利用率をグラフで示します。
Timeout Per Xfer: タイムアウト値以内にデバイスからのデー
タがない場合、転送は失敗です。デフォルト値は 1500ms です。
表 1 は、帯域幅のテスト用に FX3 DVK にダウンロードされた
4 つのコード イメージ (.img ファイル) を示しています。これら
のモジュールは、このアプリケーション ノートに添付されてい
る.zip ファイルから利用可能です。
USBIsoSourceSink の例は、スーパースピード アイソクロナス
転送の性能を測定するために使用されます。この例では、
FX3 デバイス側で ISO (アイソクロナス) データを連続してソー
スまたはシンクする 1 組の IN と OUT のエンドポイントを使用
しています。
USBBulkSourceSink の例は、スーパースピード バルク転送
の性能を測定するために使用されます。この例でも、バルク
データを連続してソースまたはシンクする 1 組の IN と OUT の
エンドポイントを使用しています。
USBIntrSourceSink の例は、スーパースピード割り込み転送
の性能を測定するために使用されます。
GpifToUsb の例は、GPIF から USB へのバルクデータ転送
の性能を測定するために使用されます。この例では、最も基本
的な GPIF II インターフェースからデータを連続的に読み出し
て、ファームウェアの介入なしに IN エンドポイントを経由して
USB ホストに送信します。
www.cypress.com
文書番号: 001-98029 Rev. **
2
EZ-USB® FX3™で USB 3.0 のスループットを最適化
注: これらのテスト転送の FX3 側では、FIFO 内のデータを処
理する、またはオフチップ データを移動するなどのオーバー
ヘッドを導入しません。オーバーヘッドの処理はアプリケーショ
ンに依存しており、このアプリケーション ノートで測定されるス
ループットを低下させることがあります。スループットの低下を
最小限に抑えるために、FX3 GPIF II と DMA の機能を賢明な
方法で使用してください。このアプリケーションノートの最後の
節では、FX3 スループットを最大化するための性能ヒントを提
供します。
動作説明
•
このアプリケーション ノートに添付されているファームウェ
ア、Control Center、C++ streamer アプリケーション、お
よびサイプレスの USB 3.0 ドライバーを含む.zip ファイル
をダウンロードします。
すべてのサンプル コードで、命令キャッシュが有効になり、
データ キャッシュが無効になっています。ファームウェア ア
プリケーションが通常のデータ操作を実行する必要がない限り、
データ キャッシュをオフのままにするようお勧めします。
•
すべてのサンプルは、Intel C216 チップセット ファミリ USB
eXtensible ホスト コントローラー (XHCI) を使用して PC ホスト
に直接接続している FX3 DVK によってテストされます。使用さ
れているオペレーティング システムは 64 ビットの Windows 7
であり、Intel ホスト ドライバーのバージョンは 1.0.5.235 です。
添付ファイルで提供されている USB Control Center (図
3 に示される) を使用して、4 つのイメージ ファイルのいず
れかをダウンロードします。
これは FX3 SDK の一部としてもインストールされます
(<install directory>\Cypress\EZ-USB FX3
SDK\1.3\application\c_sharp\
controlcenter\bin\Release) 。
•
添付ファイルにある C++ streamer アプリケーションを開
き、パラメーターを選択し、Start ボタンをクリックします。
•
データ スループットは KB/s 単位で表示されます。
性能のまとめ
図 3. Control Center のスナップショット
初めて FX3 DVK を使用する場合、アプリケーション ノート
Getting Started with FX3 を参照してください。以下の手順を
行うことによって上述のすべての転送タイプに対応したスルー
プットを測定できます。
表 2 は、3 つの SourceSink ファームウェア バージョンを使用
して 3 つの転送タイプに対応した性能をまとめたものです。表
1
中のバースト長 は、USB ディスクリプタ内のホストに報告さ
れ、ファームウェア内に設定されたバースト サイズを、「パケッ
ト数」はサービス間隔ごとに転送されたアイソクロナス パケット
数を意味します。このパラメーターはアイソクロナス転送と割
り込み転送のみに適用されます。割り込み転送の場合は、パ
ケット数は常に 1 です。詳細なスループット解析については、
このアプリケーション ノートの次の節を参照してください。
表 2. 性能をまとめた結果
転送
バースト長
パケット
数
ISOC
BULK
INTR
16
16
3
3
なし
1
バッファ
スループット
サイズ バッファ数
(KB/s)
(KB)
48
2
382,700
48
2
454,300
3
1
23,900
アイソクロナス転送
1
USB3.0 は、パケット間のハンドシェークを必要とせずに、エンドポイン
トを介して特定のデータ パケット数を転送することを可能にするデータ
バーストを提供します。個別のエンドポイントは、特定のエンドポイン
トに関連付けられている SuperSpeed Endpoint Companion ディ
スクリプタを介してそのバースト能力 (すなわち、バースト毎の最大の
パケット数) をホストに報告します。
www.cypress.com
アイソクロナス転送タイプは、オーディオやビデオ等のデータ
ストリーミング アプリケーションに適しています。アイソクロナス
転送は、スーパースピード バス上で保証されたデータ帯域幅
を備えていますが、ハンドシェークや再試行を含みません。
スーパースピード アイソクロナス エンドポイントは、最大 1024
バイトのデータ パケットのペイロード サイズに対応しています。
文書番号: 001-98029 Rev. **
3
EZ-USB® FX3™で USB 3.0 のスループットを最適化
データのプロデューサーは、指定されたバースト サイズが完
了するまで ACK を待機する必要がないため、バースト トラン
ザクションはデータ転送速度を向上させます。FX3 デバイスは、
USB 仕様で指定された最大 16 のバースト サイズに対応して
います。ただし、USB 3.0 仕様に従うと、各スーパースピード ア
2
イソクロナス エンドポイントは同じサービス間隔 で 3 つのバー
スト トランザクション (iso パケット) まで要求できます。
(bInterval-1)
x 125µs と指
アイソクロナス転送はサービス間隔を 2
定し、bInterval の範囲は 1〜16 です。スーパースピード アイ
ソクロナス転送タイプは、サービス間隔あたり 1024 x 16 x 3
バイトまで転送することができます。最小のサービス間隔を
125µs とし、スーパースピード アイソクロナス転送の理論上の
最大帯域幅は (最大パケット サイズ * バースト サイズ * iso パ
ケット数 / サービス間隔) の公式で計算されます。すなわち、
1024 x 16 x 3 / 125µ バイト/秒つまり 375M バイト/秒
(3Gbps) になります。
FX3上のスーパースピード アイソクロナス エンドポイントのス
ループットを測定するために、「USBIsoSourceSink」ファーム
ウェアの例を使用してください。そのスループットは、使用され
3
ているバースト長、バッファ サイズ 、isoパケット、およびDMA
バッファ数に依存します。
cyfxisosrcsink.hヘッダ ファイルでの定義を使用してこれらの
パラメーターを変更できます。
•
アイソクロナス エンドポイントのバースト長は
CY_FX_ISO_BURST定義で設定されます。
•
サ ー ビ ス 間 隔 あ た り の ISO パ ケ ッ ト バ ー ス ト 数 は
CY_FX_ISO_PKTS定義で設定されます。
•
転 送 に 使 用 さ れ る 各 DMA バ ッ フ ァ の サ イ ズ は
CY_FX_ISOSRCSINK_DMA_BUF_SIZE定義で設定さ
れます。
•
各 エン ド ポイ ントで 使用 する DMA バ ッ フ ァ の サイ ズ は
CY_FX_ISOSRCSINK_DMA_BUF_COUNT 定 義 で 設
定されます。
CY_FX_ISO_BURSTとCY_FX_ISO_PKTSパラメーターは、
それぞれが15と3に初期設定されています。この設定に必要
な転送帯域幅に対応できず、コンフィギュレーションを選択でき
ないUSBホストもあります。このような場合、それらのパラメー
ターのいずれかの値を減らすことで帯域幅に対する要求を軽
減することができます。
いずれかのパラメーターを変更した後、アプリケーションを再コ
ンパイルする必要があります。得られたファームウェアのバイ
ナリ (USBIsoSourceSink.img) はFX3デバイスのRAMにロー
2
3
割り込みとアイソクロナス エンドポイントの場合、エンドポイントがホ
ストに処理されなければならない時に指定した間隔は、サービス間
隔として知られています。割り込みまたはアイソクロナス パイプ用の
サービス間隔は、エンドポイント ディスクリプタを介して指定されてい
ます。
FX3 ファームウェアで DMA チャネルを開始する場合、FX3 の DMA
バッファ用に設定されます。
www.cypress.com
ドされ、Streamerアプリケーションは転送性能を測定するため
に使用されます。
表 3. アイソクロナス IN エンドポイントのスループット結果
バースト ISO−パ バッファ バッファ スループット
(KB/s)
長
ケット サイズ (KB)
数
8
1
8
1
63,900
8
3
24
1
191,900
12
1
12
1
96,000
12
3
36
1
287,900
15
3
15
1
119,800
15
3
15
2
239,500
15
3
45
2
359,900
16
3
48
2
139,400
理論上
(KB/s)
64,000
192,000
96,000
288,000
360,000
360,000
360,000
384,000
注: これらのスループットは、Streamer アプリケーションの
「Packets per Xfer」で 256 を、 「Xfers to Queue」で 64 を
選択することで測定されます。添付ファイルの Streamer アプ
リケーションを使用する場合は、これらの設定に注意してくださ
い。
表 4. アイソクロナス OUT エンドポイントのスループット結果
バースト ISO−
バッファ
スループット
バッファ数
パケット サイズ (KB)
(KB/s)
長
8
1
8
1
63,900
8
3
24
1
191,900
12
1
12
1
96,000
12
3
36
1
287,900
15
3
45
2
359,900
16
3
48
1
382,700
16
3
16
2
251,200
理論上
(KB/s)
64,000
192,000
96,000
288,000
360,000
384,000
384,000
注: これらのスループットは、Streamerアプリケーションの
「Packets per Xfer」で256を、 「Xfers to Queue」で64を
選択することで測定されます。添付ファイルのStreamerアプ
リケーションを使用する場合は、これらの設定に注意してくださ
い。
使用されるバースト長、isoパケット、およびバッファを変更する
ことによって得られたアイソクロナスのスループット結果は表3
と表4にまとめられています。
それらの結果から、FX3 はアイソクロナス エンドポイントを使
用して理論上の帯域幅に近い性能を提供できることが明らか
になっています。このため、スーパースピード アイソクロナスの
スループットは主にバースト長と iso パケット数に依存します。
注: バースト長が 16 である IN 転送用のスループットは、バー
スト長が 15 である転送用のスループットよりも大幅に低いで
す。これは、USB ホストによってスケジュールされている低速
要求のためです。FX3 デバイスが対応しているデータ速度の
変化によるものではありません。これは、デバイス側でバース
ト長が 16 のエンドポイント コンフィギュレーションはそのままで、
エンドポイント ディスクリプタがバースト長 15 を報告するよう
に変更することで検証できます。
これらの結果から分かるように、最適な結果を得るためには、
1 サービス間隔に相当するデータを保持するには十分な大き
さの DMA バッファを使用することをお進めします。各 DMA
バッファに対する FX3 ファームウェア処理時間は約 40µs であ
文書番号: 001-98029 Rev. **
4
EZ-USB® FX3™で USB 3.0 のスループットを最適化
り、サービス間隔の期間よりもはるかに短いです。サービス間
隔中に転送されるすべてのデータが 1 つの DMA バッファに
収容できる場合は、最適な転送速度を得るには単一の DMA
バッファで十分です。
アイソクロナス スループットを示す Streamer アプリケーション
のスクリーンショットは図 4 に示されています。図示された通り
に、「Packets per Xfer」と「Xfers to Queue」オプションで最大
許容値を選択すると、最高性能が得られます。
図 4. アイソクロナス OUT エンドポイントのスループット
送を予約した後、バルク転送の理論上の最大スループットは
約 4G ビット/秒になります。
「USBBulkSourceSink」の例はFX3スーパースピード バルク
エンドポイントのスループットを測定するために使用されます。
スーパースピード バルクのスループットはバースト サイズ、
バッファ サイズおよびバッファの数に依存します。
cyfxbulksrcsink.hヘッダ ファイルでの定義を変更することでこ
れらのパラメーターを変更できます。
•
エンドポイントのバースト長は
CY_FX_EP_BURST_LENGTH定義で設定されます。
•
デ ー タ 転 送 に 使 用 さ れ る 各 DMA バ ッ フ ァ の サ イ ズ は
CY_FX_BULKSRCSINK_DMA_BUF_SIZE定義で設定
されます。
•
各 エン ド ポイ ントで 使用 する DMA バ ッ フ ァ の サイ ズ は
CY_FX_BULKSRCSINK_DMA_BUF_COUNT 定 義 で
設定されます。
表 5. バルク IN エンドポイントのスループット結果
バースト
長
8
8
12
12
16
16
16
バルク転送
バルク転送は、様々な速度で大量のデータを通信する必要が
あるデバイスにより適しています。このような場合に、転送は
利用可能な帯域幅のすべてを使用することができます。スー
パースピード バルク転送は、空き帯域幅でバスを使用し、保
証されたデータ転送とデータの統合性を確実にしますが、帯域
幅を保証しません。バルク転送タイプは、大容量記憶装置など
のデータ転送速度が高いアプリケーションにはさらに適してい
ます。USB ホストが必要な転送速度を維持できる場合、ビデ
オのデータ転送にも使用できます。
スーパースピード バルク エンドポイントは、最大 1024 バイト
のデータ パケットのペイロード サイズに対応しています。これ
らのエンドポイントは 1〜16 のバースト サイズにも対応してい
ます。(「バースト」は、受信側から個々の ACK 応答を必要とし
ない一連のバルク パケットです。)
バルク転送に割り当てられる帯域幅が固定されていないため、
理論上の最大スループットは決定できません。これは、同じ
USB ホストに接続されている他のすべてのデバイスに割り当
てられる帯域幅を考慮した後の使用可能な空き帯域幅に依存
します。帯域幅全体が単一のバルク転送用に利用可能な場合、
リンクとプロトコル レベルのオーバヘッド用に 20%の可能な転
www.cypress.com
バッファ サイズ
(KB)
16
16
24
24
48
16
16
バッファ数
1
2
1
2
2
2
1
スループット
(KB/s)
263,100
448,300
305,000
450,000
454,300
351,800
120,500
注: これらのスループットは、Streamer アプリケーションの
「Packets per Xfer」で 256 を、 「Xfers to Queue」で 64 を
選択することで測定されます。添付ファイルの Streamer アプ
リケーションを使用する場合は、これらの設定に注意してくださ
い。
表 6. バルク OUT エンドポイントのスループット結果
バースト
長
8
8
12
12
16
16
16
バッファ サイズ
(KB)
16
16
24
24
48
16
16
バッファ数
1
2
1
2
2
2
1
スループット
(KB/s)
249,900
360,100
289,000
377,000
405,000
364,900
153,800
注: これらのスループットは、Streamerアプリケーションの
「Packets per Xfer」で256を、 「Xfers to Queue」で64を選
択することで測定されます。添付ファイルのStreamerアプリケ
ーションを使用する場合は、これらの設定に注意してください。
各種のバースト長とバッファ サイズに対応して得られたバルク
スループットの結果は表5と表6にまとめられています。
以上の結果から見ると、最良の場合 (バス帯域幅を共有する
他の接続したUSBデバイスがない)、バルク転送はアイソクロ
ナス転送より優れたスループットを提供できることが分かりま
文書番号: 001-98029 Rev. **
5
EZ-USB® FX3™で USB 3.0 のスループットを最適化
す。表は、スーパースピード バルク エンドポイントのスルー
プットが使用されるバースト長、バッファ サイズ、およびDMA
バッファ数に依存することを示します。
アイソクロナス転送の場合と同様に、複数のデータ バーストが
保持できる大きなDMAバッファを使用すると、性能が向上しま
す。バッファ サイズへのスループット依存性は、以下の計算を
用いて説明することができます。
バースト サイズが16の場合、得られる最高のスループットは
454,300KB/秒です。
•
1秒毎に処理される16KBバーストの数 = 28,400
•
16KBのデータ転送に要する平均時間 = 35µs
•
32KBのデータ転送に要する平均時間 = 70µs
各 DMA バ ッ フ ァ は、 1組 の CyU3PDmaChannelGetBuffer と
CyU3PDmaChannelCommitBufferのAPI呼び出しを使用す
るファームウェア アプリケーションによってターンアラウンドさ
れ ま す 。 性 能 の ベ ン チ マ ー ク 手 法 は 、 1 組 の GetBuffer と
CommitBufferのAPI呼び出しがCPU時間の約40µsを要する
ことを示しています。
上記のことから、それぞれのDMAバッファを1つのバースト
(16KB) 以下に制限すると、ファームウェア処理がスループット
制限を設定する原因になることが分かります。各バッファのサ
イズを32KB (16KBのバーストが2つ) に増加させることで、
1バッファの平均転送時間が1バッファのファームウェアの平
均処理時間より大きいことを保証できます。このような設定は、
ファームウェアの介入があったバルク データ転送に最適な性
能を与えます。
バルクINエンドポイントの最大スループットは454,300KB/秒
または3.7Gビット/秒であり、バルクOUTエンドポイントのス
ループットは405,000KB/秒または3.31Gビット/秒です。バ
ルク スループットを示すStreamerアプリケーションのスクリー
ンショットは図5に示されています。
図 5. バルク IN エンドポイントのスループット
割り込み転送
割り込み転送タイプは、保証された最大サービス間隔で少量
のデータに対してデータの高い信頼性を必要とするデバイス
により適しています。スーパースピード割り込み転送は、ハンド
シェークとリトライを使用して保証されたサービス間隔とデータ
転送を提供します。割り込み転送タイプは、マウスやキーボー
ドなどの HID デバイスに適用可能であり、一般的にスループッ
トが重要なアプリケーションでは使用されていません。
スーパースピード割り込みエンドポイントは、最大 1024 バイト
のデータ パケットのペイロード サイズをサポートしています。
USB 3.0 仕様では、スーパースピードの割り込み転送は 3 パ
ケットまでのバースト サイズに対応しています。その上、サー
ビス間隔ごとに 1 つのバースト トランザクションのみをサポー
トします。割り込み転送のサービス間隔はアイソクロナス転送
の場合と同じように定義されています。1 マイクロフレームま
たは 125µs のサービス間隔を使用するスーパースピード割り
込み転送の理論上の最大帯域幅は、 (最大パケット サイズ *
バースト サイズ / サービス間隔) のように計算でき、(1024 x 3
/ 125µ) バイト/秒、つまり 23.43M バイト/秒です。
「USBIntrSourceSink」の例はFX3のスーパースピード割り込
みエンドポイントのスループットを測定するために使用されま
す。アイソクロナスの場合と同様に、DMAバッファがサービス
エンドポイント毎に転送されるデータ量に等しいように選択され
ます。最大のスループットを得るには単一のDMAバッファで十
分です。
割り込みエンドポイントのバースト サイズは、cyfxintrsrcsink.h
ヘッダ ファイルにあるCY_FX_INTR_BURST_SIZE定義で設
定されます。
割り込み転送用に得られたスループットは理論的限界値に近
く、両方のINとOUTエンドポイントで同じです。表7には、各種
のバースト サイズの設定で割り込み転送用に得られたスルー
プットを示しています。
表 7. 割り込み IN/OUT エンドポイントのスループット結果
バースト
長
1
2
3
バッファ
サイズ
(KB)
1
2
3
バッファ数
1
1
1
スループット
(KB/s)
7900
15,900
23,900
理論上
(KB/s)
8000
16,000
24,000
注: これらのスループット数は、Streamer アプリケーションの
「Packets per Xfer」で 256 を、「Xfers to Queue」で 64 を選
択することで測定されます。添付ファイルの Streamer アプリ
ケーションを使用する場合は、これらの設定に注意してくださ
い。
割り込みスループットを示す Streamer アプリケーションのスク
リーンショットは図 6 に示されています。
www.cypress.com
文書番号: 001-98029 Rev. **
6
EZ-USB® FX3™で USB 3.0 のスループットを最適化
AUTO DMA チャネルにおける GPIF から
USB への転送の性能
前述のすべての例で得られた転送性能はファームウェアの実
行により影響を受け、DMA バッファのサイズが大きく維持され
る場合は良い結果をもたらします。本アプリケーション ノートに
添付されている GpifToUsb ファームウェアの例では、データ
転送の性能がエンドポイント バーストの設定、および DMA
バッファのサイズと数によってどのように変化するかを評価し
ます。
この例では、DMA バッファが GPIF 側で利用可能になる度に
データを連続的に書き込む最小限の GPIF ステート マシンを
使用しています。このステート マシンは任意の信号を駆動する
ための外部デバイスを必要とせずに、可能な最速で満杯の
DMA バッファをコミットするだけです。このステート マシン用の
GPIF II Designer プロジェクトは、continuous_read.cydsn
フォルダ内のアプリケーション ノートに添付されています。
図 6. 割り込み IN エンドポイントのスループット
これらのパラメーターは cyfxgpiftousb.h ヘッダ ファイルにある
定義で変更されます。
•
エンドポイントのバースト サイズは
CY_FX_EP_BURST_LENGTH 定義で設定されます。
•
使用される各 DMA バッファのサイズは
CY_FX_DMA_BUF_SIZE 定義で設定されます。
•
使用される DMA バッファ数は
CY_FX_DMA_BUF_COUNT 定義で設定されます。
理論上の最大の可能な性能は GPIF インターフェースのデー
タ速度によって決定されます。この場合には、GPIF インター
フェースは 32 ビット幅のデータバスで 100.8MHz のクロック速
度で動作します。これにより、最大の可能なデータ速度は
403.2MBps になります。
表 8 は、エンドポイント バースト長、DMA バッファ サイズ、お
よび DMA バッファ数の様々な値に対応してこのファームウェ
ア アプリケーションを使用して得られたスループットを示してい
ます。
図 7 は、使用される DMA バッファの異なる量に対応したバー
スト長の設定に応じて転送性能がどのように変化するかを示
すグラフです。グラフのそれぞれの曲線は、1 つのデータ バー
ストを保持する単一バッファから 3 つのフル バーストを保持す
る 4 つのバッファまでを合計した DMA バッファの異なる量を
示します。
USB 転送が実行している間に GPIF 転送が一時停止し、逆に、
GPIF 転送が実行している間に USB 転送が一時停止するた
め、単一の DMA バッファで得られた性能は一貫して低いです。
グラフは、転送性能が 8KB のバースト長まで増加して安定す
ることを示しています。また、グラフは、合計 4 バースト転送ま
ではバッファ サイズとともに転送性能が向上し、それ以上は横
ばいになることを示しています。
このグラフから見ると、GPIF−USB バルク ベースのアプリケー
ションに対して最適な設定はバースト長が 8KB で、合計した
バッファが約 32KB であることが分かります。バースト長とバッ
ファのさらなる増加は最低限の性能向上を実現しますが、その
分だけ RAM の使用量が増えてしまいます。
GPIF II データは、AUTO DMA チャネルを介してバルク IN エ
ンドポイント経由で USB ホストに送信されます (AUTO DMA
チャネルはファームウェアの介入を必要としません) 。この例で
はデータ バスにファームウェアの関与がないため、これらの結
果は、転送スループットがバースト サイズ、バッファ サイズ、
およびバッファ数によってどのように影響を受けているかを判
定するために使用されます。
www.cypress.com
表 8 は、GPIF から USB への転送性能が各種のバースト長と
個別の DMA バッファ サイズによってどのように変化するかを
示しています。4 つの DMA バッファがこれらすべての場合に
使用されており、個別の DMA バッファのサイズのみが変化し
ます。この図は、2 つのデータ バースト転送を保持する DMA
バッファは 1 つのデータ バースト転送を保持するバッファより
大幅に優れた性能を提供することを示しています。バッファ サ
イズをさらに増加してもメリットがほとんど、もしくは全くないで
す。このグラフから分かるように、理想的な DMA バッファのサ
イズはエンドポイントのバースト長の 2 倍です。
文書番号: 001-98029 Rev. **
7
EZ-USB® FX3™で USB 3.0 のスループットを最適化
表 8. GPIF から USB へのバルク転送のスループット結果
バースト長
(KB)
1
1
1
2
2
2
4
4
4
8
8
8
16
16
16
各 DMA バッファ
のサイズ
1 バースト
2 バースト
3 バースト
1 バースト
2 バースト
3 バースト
1 バースト
2 バースト
3 バースト
1 バースト
2 バースト
3 バースト
1 バースト
2 バースト
3 バースト
1 つの DMA バッファを使
用した場合の性能 (KB/s)
115,200
160,600
196,000
202,100
170,700
-
2 つの DMA バッファを
使用した場合の性能 (KB/s)
229,000
333,100
368,800
380,700
386,900
-
3 つの DMA バッファを使
用した場合の性能 (KB/s)
308,500
346,000
369,600
382,100
387,700
-
4 つの DMA バッファを使
用した場合の性能 (KB/s)
310,800
346,700
356,800
347,100
369,600
377,300
370,100
381,900
385,600
382,100
387,700
389,500
388,600
391,200
394,000
注: これらのスループットは、Streamer アプリケーションの「Packets per Xfer」で 256 を、「Xfers to Queue」で 64 を選択することで
測定されます。添付ファイルの Streamer アプリケーションを使用する場合は、これらの設定に注意してください。
図 7. バースト サイズに伴う USB 性能の変化
GPIF to USB Performance against Burst Size
450.0
400.0
Performance in MBps
350.0
1 burst
300.0
2 burst
250.0
3 burst
4 burst
200.0
8 burst
150.0
12 burst
100.0
50.0
0.0
1
2
4
8
15
16
Burst length in KB
図 8. DMA バッファ サイズに伴う USB 性能の変化
GPIF to USB Performance against Buffer Size
450.0
400.0
Performance in MBps
350.0
1
300.0
2
250.0
4
8
200.0
15
150.0
16
100.0
50.0
0.0
1 burst
2 burst
3 burst
Size of each DMA buffer
www.cypress.com
文書番号: 001-98029 Rev. **
8
EZ-USB® FX3™で USB 3.0 のスループットを最適化
ホスト コントローラーの性能比較
得られた USB データ スループットは使用される USB ホストの機能にも依存します。この依存関係を説明するために、他のすべてのテ
スト パラメーターをそのまま維持する一方、スーパースピード バルク IN スループットを異なる USB 3.0 ホスト コントローラーで測定し
ます。テストは、Windows 7 で動作している複数のマシン上に USBBulkSourceSink の例を使用して実行されました。
表 9 は 4 個の内蔵 USB 3.0 ホスト コントローラーのスループットを比較しています。表に示されるように、Intel のホスト コントローラー
の性能は他の USB 3.0 ホスト コントローラーより約 20%上回っています。一般的に、USB 3.0 アドオン カードでのスループットは内蔵
USB 3.0 ホスト コントローラーに比べて低いです。
表 9. ホスト コントローラーのバルク IN スループット
USB 3.0 ホスト
コントローラー (内蔵)
Intel® USB 3.0
eXtensible ホスト
コントローラー
スループット
(KB/s)
450,400
ドライバー
バージョン
PC の情報
OS
アプリケーション
バースト 最大のパケット 転送ごとの 待機中の
長
サイズ
パケット数 転送数
1.0.9.254
Intel(R) コア(TM) i5-3210M
CPU、Intel(R) 7 シリーズ
Win 7、64
C++ Streamer
/c216 チップセット
ビット
ファミリ、2.5GHz、4GB
RAM、サービス パック 1
16
1024 バイト
256
64
16
1024 バイト
256
64
16
1024 バイト
256
64
16
1024 バイト
256
64
Renesas Electronics 社
の USB 3.0 ホスト
コントローラー
352,100
2.0.34.0
Intel(R) コア(TM) i7 CPU、
チップセット : Intel 3400 シリ Win 7、64
C++ Streamer
ーズ、4GB RAM、
ビット
サービス パック 1
ASMedia 社のホスト
コントローラー
370,200
1.12.5.0
AMD FX(TM)-4100 クアッド
Win 7、64
C++ Streamer
コア プロセッサ、8GB RAM、
ビット
3.60GHz、サービス パック 1
AMD 社の USB 3.0 ホス
ト コントローラー
362,900
1.1.0.153
AMD A6-3670 APU、
2.70GHz、8GB RAM、
サービス パック 1
USB 3.0 ホスト
コントローラー
(アドオン カード)
スループット
(KB/s)
ドライバー
バージョン
PC の情報
NEC Electronics 社の
USB 3.0 ホスト
コントローラー
300,200
1.0.19.0
Win 7、64
C++ Streamer
ビット
OS
アプリケーション
バースト 最大のパケット 転送ごとの 待機中の
長
サイズ
パケット数 転送数
Intel® Core™ i5-2540M
Win 7、64
CPU 2.60GHz、4GB RAM、
C++ Streamer
ビット
サービス パック 1
オペレーティング システムの性能比較
USB スループットは、USB ホストで動作しているオペレーティ
ング システムとソフトウェアにも依存します。
他のすべてのテスト パラメーターをそのまま維持する一方、
スーパースピード バルク IN スループットを異なるオペレーティ
ング システムで測定します。このテストは、最大のデータ転送
速度を提供するコンフィギュレーションを使用して
USBBulkSourceSink アプリケーションで行われます。Intel
3.0 ホストはすべてのオペレーティング システム (Windows、
Mac、Linux) で使用されています。
16
1024 バイト
256
64
性能の比較は表 10 にまとめられています。このコンソール
アプリケーションを使用するために、
www.cypress.com/?rID=57990 から Linux 用には FX3 SDK
を、Mac 用にはラッパー ライブラリをダウンロードしてください。
表 10. オペレーティング システムに対応する
バルク IN スループット
オペレーテ
ィング
システム
スループッ
ト (KB/s)
Windows 7
(Intel ホスト)
Windows 8
(Intel ホスト)
Mac OS X
(Intel ホスト)
Linux
(Intel ホスト)
454,300
453,500
420,100
405,400
オープンソースの libusb ライブラリに基づいたコンソール ア
プリケーションは、Linux と Mac OS X のオペレーティング
システムでのスループットを測定するために使用されます。
www.cypress.com
文書番号: 001-98029 Rev. **
9
EZ-USB® FX3™で USB 3.0 のスループットを最適化
スループットに影響を与えるその他の要因
前述の通りに、スループットはホスト コントローラーとオペレー
ティング システム両方によって変化します。複数の USB デバ
イスを同じホストに接続すると、スループットが低下すること
があります。最良の結果を得るために、USB-IF 認定の USB
ケーブルを使用することをお勧めします。ホスト アダプタ カー
ドに接続された USB デバイスは内蔵の USB ホスト コントロー
ラーに比べて低いスループットを提供します。
データが GPIF II インターフェースを介して接続された外部デ
バイスから/へ転送されているアプリケーションでは、スルー
プットは、GPIF II データ転送速度および CPU 処理時間(デー
タ処理の必要がある場合)にも依存します。
このような転送用にバルク エンドポイントを使用する場合、
DMA バッファの数を最大化してください。これは、USB ホスト
側でデータ転送の長時間にわたる一時停止によるスループッ
トへの影響を阻止するのに役立ちます。
アイソクロナス転送を使用する場合、各 DMA バッファが 1 つ
のサービス間隔相当のデータを保持できることをお勧めします。
この場合、ホストが転送の帯域幅を保証しているため、多数の
バッファは必要とされません。
データ操作が FX3 ファームウェアによって実行されていない
場合、ファームウェア設計による性能の制限を回避するために
AUTO DMA チャネルを使用します。ファームウェアに基づい
たデータ操作が必要な場合、スレッドからデータを移動するよ
りも、DMA コールバックを使用してデータを移動した方が早い
です。例としては、ヘッダ情報がファームウェアによってデータ
ブロックに追加される USB Video Class のアプリケーションが
挙げられます。さらに、デバッグ メッセージを削除することで重
要なデータ処理コードを最小限に保つことを強くお勧めします。
www.cypress.com
(アプリケーション ノート AN75779 – How to Implement an
®
Image Sensor Interface with EZ-USB FX3™ in a USB
Video Class (UVC) Framework はファームウェアが UVC を
実装する方法を例示しています。)
FX3 API と RTOS ライブラリのリリース バージョンを使用する
ことをお勧めします。コンパイラ最適化レベルを「-O2」または「O3」に設定します。
その他のリソース
アプリケーション ノート AN65974 – Designing with the EZ®
USB FX3 Slave FIFO Interface は、スレーブ FIFO インター
フェースの詳細を説明し、スレーブ FIFO アプリケーション用の
性能測定を含んでいます。スレーブ FIFO アプリケーションを
使用して測定されたスループットについては、「ストリーム転送
手順」の節を参照してください。
システムのスループットに影響を及ぼす USB リンク レベル要
因の詳細は、FX3 SDK トラブルシューティング ガイドの 2.4 節
を 参 照 し て く だ さ い 。 こ の 文 書 は 、 C:\Program
Files\Cypress\EZ-USB FX3 SDK\1.3\doc フォルダ配下の
FX3 SDK インストールの一部です。USB スーパスピード プロ
ト コ ル の 詳 細 に つ い て は 、 USB 3.0 仕 様
(http://www.usb.org/developers/docs/) を参照してください。
要約
このアプリケーション ノートは、EZ-USB FX3 を使用して最適
な USB 3.0 スループットを実現するためのガイドラインを提供
しました。それぞれの転送タイプに対して最も重要なパラメー
ターを判定するために、スループットの変化に起因する各種の
転送パラメーターを分析しました。さらに、ホスト コントローラー
とオペレーティング システムのスループットも比較して、USB
スループットに影響を与える要因を説明しました。
文書番号: 001-98029 Rev. **
10
EZ-USB® FX3™で USB 3.0 のスループットを最適化
改訂履歴
®
文書名: EZ-USB FX3™で USB 3.0 のスループットを最適化 – AN86947
文書番号: 001-98029
改訂日
ECN
変更者
発行日
変更内容
**
4802514
HZEN
07/10/2015
これは英語版 001-86947 Rev. *A を翻訳した日本語版 001-98029 Rev. **です。
www.cypress.com
文書番号: 001-98029 Rev. **
11
EZ-USB® FX3™で USB 3.0 のスループットを最適化
ワールドワイドな販売と設計サポート
サイプレスは、事業所、ソリューション センター、メーカー代理店および販売代理店の世界的なネットワークを保持しています。お客様
の最寄りのオフィスについては、サイプレスのロケーション ページをご覧ください。
PSoC®ソリューション
製品
車載用
cypress.com/go/automotive
psoc.cypress.com/solutions
クロック&バッファ
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
インターフェース
cypress.com/go/interface
サイプレス開発者コミュニティ
照明&電源管理
cypress.com/go/powerpsoc
cypress.com/go/plc
メモリ
cypress.com/go/memory
PSoC
cypress.com/go/psoc
タッチ センシング
cypress.com/go/touch
USB コントローラー
cypress.com/go/usb
ワイヤレス/RF
cypress.com/go/wireless
コミュニティ | フォーラム | ブログ | ビデオ | トレーニング
テクニカル サポート
cypress.com/go/support
EZ-USB と FX3 は、サイプレス セミコンダクタ社の登録商標です。本書で言及するすべての商標または登録商標は、それぞれの所有者に帰属します。
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone
Fax
Website
: 408-943-2600
: 408-943-4730
: www.cypress.com
© Cypress Semiconductor Corporation, 2013-2015. 本文書に記載される情報は予告なく変更される場合があります。Cypress Semiconductor Corporation (
サイプレス セミコンダクタ社) は、サイプレス製品に組み込まれた回路以外のいかなる回路を使用することに対して一切の責任を負いません。サイプレス セミコン
ダクタ社は、特許またはその他の権利に基づくライセンスを譲渡することも、または含意することもありません。サイプレス製品は、サイプレスとの書面による合意
に基づくものでない限り、医療、生命維持、救命、重要な管理、または安全の用途のために使用することを保証するものではなく、また使用することを意図したもの
でもありません。さらにサイプレスは、誤作動や故障によって使用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネント
としてサイプレス製品を使用することを許可していません。生命維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆる
リスクを負うことを意味し、その結果サイプレスはあらゆる責任を免除されることを意味します。
このソースコード (ソフトウェアおよび/またはファームウェア) はサイプレス セミコンダクタ社 (以下「サイプレス」) が所有し、全世界の特許権保護 (米国およびそ
の他の国)、米国の著作権法ならびに国際協定の条項により保護され、かつそれらに従います。サイプレスが本書面によりライセンシーに付与するライセンスは、
個人的、非独占的かつ譲渡不能のライセンスであり、適用される契約で指定されたサイプレスの集積回路と併用されるライセンシーの製品のみをサポートするカ
スタム ソフトウェアおよび/またはカスタム ファームウェアを作成する目的に限って、サイプレスのソース コードの派生著作物をコピー、使用、変更そして作成す
るためのライセンス、ならびにサイプレスのソース コードおよび派生著作物をコンパイルするためのライセンスです。上記で指定された場合を除き、サイプレスの
書面による明示的な許可なくして本ソース コードを複製、変更、変換、コンパイル、または表示することはすべて禁止します。
免責条項: サイプレスは、明示的または黙示的を問わず、本資料に関するいかなる種類の保証も行いません。これには、商品性または特定目的への適合性の黙
示的な保証が含まれますが、これに限定されません。サイプレスは、本文書に記載される資料に対して今後予告なく変更を加える権利を留保します。サイプレス
は、本文書に記載されるいかなる製品または回路を適用または使用したことによって生ずるいかなる責任も負いません。サイプレスは、誤作動や故障によって使
用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネントとしてサイプレス製品を使用することを許可していません。生命
維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆるリスクを負うことを意味し、その結果サイプレスはあらゆる責任
を免除されることを意味します。
ソフトウェアの使用は、適用されるサイプレス ソフトウェア ライセンス契約によって制限され、かつ制約される場合があります。
www.cypress.com
文書番号: 001-98029 Rev. **
12