まず、USBについてはあまり詳しくないので、質問が間違っていた場合は、あらかじめお詫びします。
USB 2.0では、ポーリング間隔は0.125msだったので、ホストがデバイスから一部のデータを読み取るのに可能な最高の待ち時間は0.125msでした。 USB 3.0デバイスでレイテンシを減らすことを望んでいますが、最小レイテンシとは何かを理解するのが難しいと感じています。 USB 3.0仕様では、「USB 2.0スタイルのポーリングは非同期通知に置き換えられました」とあります。これは、0.125msのポーリング間隔が制限ではなくなったことを意味します。
USB 3.0 SSDのいくつかのベンチマークが見つかりました。データはデバイスからわずか0.125ms未満で読み取ることができ、ホストOSとデバイスのフラッシュコントローラーで費やされたすべての時間を含みます。
http://www.guru3d.com/articles_pages/ocz_enyo_usb_3_portable_ssd_review,8.html
誰かが最小のレイテンシを教えてくれますか?理論的な答えは結構です。 LinuxおよびWindows USBスタックのさまざまなバージョンの実際的な制限を含む答えは素晴らしいでしょう。
「達成しようとしていることを教えてください」という質問を回避するために、私が設計したASICのデバッグインターフェイスを作成しています。つまり、PCはデバッグドングルを介してASICの1つに接続します。考えられる使用例の1つは、ASICハードウェアが単純なブレークポイントのみを実装する場合に条件付きブレークポイントを実装することです。これを行うには、単純なブレークポイントに達したことを確認し、falseが設定されている場合に条件を評価する必要があります。単純なブレークポイントは、条件がtrueになる前に数百万回ヒットする可能性があります。FPGAまたは既製のUSB 3.0対応マイクロコントローラーにデバッグドングルを実装する場合があります。
私自身の質問に答えています...
私はこの質問がUSB 3.0の要点をちょっと逃していることに気づきました。 2.0とは異なり、共有バスシステムではありません。代わりに、ホストと各デバイス間でポイントツーポイントリンクを使用します(私は単純化していますが、要旨は本当です)。 USB 2.0では、125 usのポーリング間隔は、バスがデバイス間で時分割多重化される方法にとって重要でした。ただし、3.0はポイントツーポイントリンクを使用するため、実行される多重化はなく、したがってポーリング間隔は存在しません。その結果、パケット配信のレイテンシはUSB 2.0の場合よりもずっと短くなります。
サイプレスFX-3開発キットを使った実験で、Windowsアプリケーションからデバイスへの平均ラウンドトリップを平均レイテンシ30 usで簡単に戻すことができることがわかりました。その時間の大部分は、ユーザー空間からカーネル空間モードへの切り替えやドライバー内のDPC待ち時間など、さまざまなOSの遅延に費やされていると思います。
私はあなたのためにいくつかのリソースを持っています、1つはダウンロードしたばかりで、完全な 仕様... USB3のいくつかのPDFを圧縮 、 58,59ページ(USB 3_r1.0_06_06_2011.pdf)からの短い抜粋を次に示します。
USB 2.0 transmits SOF/uSOF at fixed 1 ms/125 μs intervals. A device driver may change
the interval with small finite adjustments depending on the implementation of Host and
system software. USB 3.0 adds mechanism for devices to send a Bus Interval Adjustment
Message that is used by the Host to adjust its 125 μs bus interval up to +/-13.333 μs.
In addition, the Host may send an Isochronous Timestamp Packet (ITP) within a relaxed
timing window from a bus interval boundary.
ここに は、レイテンシの計算を処理する興味深いリソースがもう1つあります。
特にリアルタイムではないオペレーティングシステムでは、オペレーティングシステムのレイテンシの問題について十分に説明します。
SuperUserもチェックすることをお勧めします。多分誰かが他のアイデアを持っているでしょう。乾杯
Embedded.comからの抜粋: "USB 3.0とUSB 2.0:忙しいエンジニアのためのクイックリファレンスの概要"
通信アーキテクチャの違いUSB 2.0は、データトランザクションをホストが開始する必要がある通信アーキテクチャを採用しています。ホストは頻繁にデバイスをポーリングしてデータを要求し、デバイスはホストから要求された後にのみデータを送信できます。ポーリング頻度が高いと、消費電力が増えるだけでなく、デバイスがホストによってポーリングされている場合にのみデータを送信できるため、送信レイテンシが増加します。 USB 3.0は、この通信モデルを改善し、ポーリングを最小化することにより伝送レイテンシを削減し、デバイスが準備ができるとすぐにデータを送信できるようにします。
...
タイムスタンプの強化
精度が0〜125 usのUSB 2.0カメラとは異なり、USB 3.0カメラからのタイムスタンプはより正確で、FireWireカメラの1394サイクルタイマーの精度を模倣しています。
...
USB 3.0-またはSuper-speed USB-これらの制限すべてを他の仕様の主要な制限を克服し、IEEE 1394bを介して6倍からUSB 2.0を介して9倍の帯域幅、より優れたエラー管理、より高い電源、および... 低レイテンシとジッター時間。
追伸また、USB 3.0の「より長いケーブル長」についても述べていますが、他の段落はこれに矛盾し、USB 2.0の場合は最大5 m、USB 3.0の場合は最大3 mと述べています。
マークされた回答に異議を申し立てます。
Windowsでは、USB経由で上記の往復遅延を実現する方法はありません。 SuperSpeed(3.0)かどうか。ドキュメントは述べています:
The number of isochronous packets must be a multiple of the number of packets per frame.
フレームあたりのパケットはbInterval
によって与えられ、ポーリング間隔も決定します。例えば。 microframe
(125usec)ごとに転送を実現する場合は、[必要 URB(USB要求ブロック)ごとに8回の転送を送信する必要があります。つまり、1ms。
それ以外の場合は、独自のカーネルモードドライバーが必要か、仕様外です。
RT Linuxでは、2 * 125usec +オーバーヘッドの往復を確認できます。