web-dev-qa-db-ja.com

USB 3.0の最小遅延はどれくらいですか

まず、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対応マイクロコントローラーにデバッグドングルを実装する場合があります。

25

私自身の質問に答えています...

私はこの質問がUSB 3.0の要点をちょっと逃していることに気づきました。 2.0とは異なり、共有バスシステムではありません。代わりに、ホストと各デバイス間でポイントツーポイントリンクを使用します(私は単純化していますが、要旨は本当です)。 USB 2.0では、125 usのポーリング間隔は、バスがデバイス間で時分割多重化される方法にとって重要でした。ただし、3.0はポイントツーポイントリンクを使用するため、実行される多重化はなく、したがってポーリング間隔は存在しません。その結果、パケット配信のレイテンシはUSB 2.0の場合よりもずっと短くなります。

サイプレスFX-3開発キットを使った実験で、Windowsアプリケーションからデバイスへの平均ラウンドトリップを平均レイテンシ30 usで簡単に戻すことができることがわかりました。その時間の大部分は、ユーザー空間からカーネル空間モードへの切り替えやドライバー内のDPC待ち時間など、さまざまなOSの遅延に費やされていると思います。

18

私はあなたのためにいくつかのリソースを持っています、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もチェックすることをお勧めします。多分誰かが他のアイデアを持っているでしょう。乾杯

6
happy coder

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と述べています。

1
Nishi

マークされた回答に異議を申し立てます。

Windowsでは、USB経由で上記の往復遅延を実現する方法はありません。 SuperSpeed(3.0)かどうか。ドキュメントは述べています:

The number of isochronous packets must be a multiple of the number of packets per frame.

https://docs.Microsoft.com/en-us/windows-hardware/drivers/usbcon/transfer-data-to-isochronous-endpoints

フレームあたりのパケットはbIntervalによって与えられ、ポーリング間隔も決定します。例えば。 microframe(125usec)ごとに転送を実現する場合は、[必要 URB(USB要求ブロック)ごとに8回の転送を送信する必要があります。つまり、1ms

それ以外の場合は、独自のカーネルモードドライバーが必要か、仕様外です。

RT Linuxでは、2 * 125usec +オーバーヘッドの往復を確認できます。

0
Paamand