2016-10-07 1 views
1

USBフルスピードの速度は12 MBit /秒= 1.5 MByte/sです。フルスピードでのUSBの実効ペイロードスループットはどのくらいですか?

しかし、これらの12 MB内には、トークン、エンドポイントアドレス、CRC5、CRC16、肯定応答、SOF + EOFパケットなど、ペイロードではない多くの追加データも送信されます。制御転送のフレーム。

私は1ミリ秒のポーリング間隔で割り込みモードでUSBエンドポイントを有する場合USB Made Simple Part 3

Interrupt Transfer 次に、Iフレーム= 64Kバイト/秒あたり64のバイトを送信することができる見ます。

しかし、1msのポーリングで2つのエンドポイントがある場合はどうなりますか? 次に、ホストは1ms以内に両方のエンドポイントをポーリングしますので、合計スループットは128kByte/sですか?

ホストが15 INエンドポイントを同時にポーリングすると、15 * 64 kByte = 960 kByte/sになるでしょうか?

最初の質問(のは何OUT転送がないことを簡単にするためとしましょう):私は全速力で最大の効果的なペイロードスループットの話のウェブサイトを見つけることができなかった多くのことを検索が を。

2番目の質問 フルスピードでは、最大64バイト/パケットと最小ポーリング間隔1ミリ秒が可能です。可能な最大ペイロードをIN転送で転送する場合は、複数のエンドポイントを使用し、これらのエンドポイントでデータ転送を分散する必要がありますか?限界に達するエンドポイントの数は?

3番目の質問: バルク転送では、ホストがINデータを1ミリ秒に1回よりも頻繁に要求することがわかりました。これはバルクが割り込み転送より高速であることを意味しますか?

答えて

0

I章5.7.4にUSB 2.0仕様に部分的な答えを見つけ、5.8.4:

プロトコルのオーバーヘッドは、バルク転送のために13バイトである:(3 SYNCバイト、3バイトのPID、エンドポイント2 + CRCバイト、2 CRCバイト、および3バイトインターパケット遅延)および19バイトの割り込み転送(5 SYNCバイト、5 PIDバイト、2エンドポイント+ CRCバイト、2 CRCバイト、および5バイトパケット間遅延)

64バイトのデータペイロードを使用する場合、バルク転送の最大帯域幅は1.216.000バイト/秒です。これは、1msの1フレームが1216バイト= 64バイトの19ブロックを転送できることを意味する。

割り込みエンドポイントは、ミリ秒ごとに最大間隔でポーリングされるため、最大ペイロードは64kB/s以下になります。

しかし、これらの値は理論値です。この文書はビットスタッフィングが無視されることを述べている。また、制御転送用に予約された10%の帯域幅はここでは無視されます。割り込みエンドポイントの場合、最大スループットは64バイト/ミリ秒= 64 kByte /秒になります。

フルスピードデバイスとオペレーティングシステムの異なる実際の寿命で測定された速度に関するもう1つの興味深い記事は、特にWindowsの理論値とは大きく異なるため、非常に興味深いものです。

ポールは、1メガバイト/秒の最大速度を測定しましたが、OUT方向です。

http://www.pjrc.com/teensy/benchmark_usb_serial_receive.html

https://www.pjrc.com/teensy/usb_serial.html

+0

割り込みエンドポイントは、唯一の64バイトのパケットを1ms毎に送信することができます。したがって、オーバーヘッド後の制限は約64kB /秒です。 –

+0

あなたは完全に正しいです。私の答えを決めるなら。 – Elmue

0

3番目の質問:バルク転送では、ホストがINデータを1ミリ秒に1回よりも頻繁に要求することがわかりました。これはバルクが割り込み転送より高速であることを意味しますか?

ロット高速です。 1つのバルクエンドポイントで約1 MByte/secに達することができます。これは、USB Full Speedで得られる最大スループットです。

一言で言えば、アプリケーションができるだけ早くデータを転送する場合は、大量のエンドポイントを使用してください。

関連する問題