web-dev-qa-db-ja.com

USBハブはパフォーマンスに影響しますか?

[〜#〜] midi [〜#〜] ドラムとMIDIキーボードなど)で最大のスループットとレイテンシが必要な2つのデバイスがあります。

両方をハブを介して同じUSBポートに接続すると、最大データ転送速度がそれぞれの1/2に効果的に制限されますか?

私は「はい」と想定していますが、USBハブにハンドシェイクと優先順位付けプロトコルが使用可能かどうかはわかりませんでした(たとえば、構築されたデータバッファーが長いデバイスに最初に通信させます)。

27
SwimBikeRun

はい。 USBハブを介して接続されたすべてのデバイスは、そのハブで使用可能な帯域幅を共有します。具体的にはそれぞれ50%ではありません。コンピュータでUSB 2.0ハブごとに480 Mbit/sで動作します。それはどういう意味ですか?お使いのコンピュータにはUSBハブが組み込まれています。はい、すべてのポートが個別のエンティティであるとは限りません。ほとんどの場合、2つのUSBポートが上下に重なっている場合、それらは内部でハブ上にあります。

これは、ラップトップの2つのポートが並んでいる場合にも当てはまります。したがって、2つのハブを横に並べたUSBポートに接続するだけで、大量のUSBポートがあり、高いデータ転送速度のデバイスを接続できるとは考えないでください。

あなたが本当にやらなければならないことは、接続しようとしているデバイスの予想されるデータ転送速度を見ることです。 MIDIドラムは低転送レートと見なされますが、キーボードは低または中転送レートです。これは、USBサウンドカードのようなものと比較されます。 ..ハブを他のものと共有したくない場合。

電源付きハブでは、各デバイスが必要な電力を供給しますが、電源なしハブでは、すべてのデバイスがホストUSBポートが出力できる電力を共有します。ですから、考慮すべきこともあります。

あなたはおそらくすでに知っていますが、レイテンシの問題については ASIO4ALL ドライバーはすべての可能性のある問題ではないにしてもほとんどの問題を解決します。それをそこに置くだけです。

18
Bon Gart

実際、私は最初の回答がおそらく間違ったものであるため、この説明を裏付ける事実がまったくないまま、承認され賛成投票されたことに驚いています。 MIDIドラムとMIDIキーボードはほぼ間違いなく低速デバイスであるため、高速ハブからの帯域幅の消費量は最大で1%未満です(2 * 1 Mbit/s/480 Mbit/s * 100%= 0.4%)。

実際、ハブの存在により遅延が発生します。これは、低速ハブでは 数十マイクロ秒 、高速ハブでは 数百ナノ秒 のオーダーです。後者の場合、MIDIソフトウェアによって導入されたレイテンシを追加すると、このレイテンシはなくなります。

また、USBプロトコルは転送の優先順位をサポートします( 割り込み転送 を参照)。これにより、MIDIデバイスは、ハードドライブまたはスキャナーと同じバス上に多くなくても共存できます。転送速度やレイテンシへの影響ですが、MIDIデバイスについては特に詳しくないため、ここでは説明しません。

31

簡単に言えば、あなたは本当にこのアプリケーション用のマルチTTハブが必要であり、2つ以上のUSBデバイスが12 Mbit /秒である可能性が高いです。これらのハブを見つけるには、Amazon、Newegg、またはその他のサイトで「Multi-TT」を検索してください。

残念ながら、この重要な技術的詳細はほとんど言及されていません。ほとんどのハブは、安価なシングルTT設計を使用しています。良いMultiple TTものは、この機能を備えていると宣伝されていることはめったになく、パッケージにマークされていません。悲しいことに、ほとんどの人はおそらくTTを聞いたこともないので、おそらくマーケティング担当者は気にしないでしょうハブが使用する設計を教えてください。

Windowsデバイスマネージャを使用して、ハブにこの機能があるかどうかを確認できます。 「詳細」タブで「ハブには複数のTTがあります」という単語を探します。

Device Manager screenshot

Linuxでは、ハブタイプは「lsusb -v | grep TT」で確認できます。 AppleがXcode開発ツールで公開している「USB Prober」ユーティリティを除いて、Macintoshでチェックする簡単な方法は知りません。

TTはTransaction Translatorの略です。詳細は複雑で、www.usb.orgから無料でダウンロードできるUSB仕様の第11章に完全に文書化されています。しかし、簡単に言えば、TTは、PCから480 MBit /秒の間で、12または1.5 MBit /秒の低速に変換します。

通常、これらの楽器を演奏すると、コントローラーがMIDI=メッセージを生成し、PCがデータを要求する瞬間を待つメモリバッファーにパックします。PCが直接接続すると、 INトークンを計測器に送信します。計測器は、データパケットまたはNAKトークンの2つの方法でINトークンに応答して、データがないことを示します。PCはこれらのINトークンを非常に迅速に送信するため、結果はほぼ瞬時にMIDIメッセージとしての音楽イベント。

ただし、12 MBit /秒MIDIデバイスがUSB 2.0ハブを介して接続する場合、すべて480 MBit /秒で非常に異なる通信が発生します。PCは実際にはハブのTransaction Translatorと通信します。 2つのメッセージを送信します。最初に、SSPLIT(分割トランザクションの開始)メッセージがTTに送信されますTT is busyの場合、確認を送信します。次に、 TT低速の12 MBit /秒の速度でMIDIキーボードにINトークンを送信します。一方、PCは480 Mbitで他のデバイスと通信できます/秒。あなたのMIDIキーボードは、INトークンがPCから直接来たのか、ハブのTTから来たのかを判別できません。これは、PCに接続されている場合とまったく同じです。TTはNAKまたはDATA応答のいずれかを受信します。これが進行している間、PCはCSPLIT(完全分割トランザクション)メッセージをハブのTTに送信し始めます。TT =特別なNYETトークンでの返信は、TTはまだビジー状態です。 12メガビット/秒でng、またはキーボードからNAKまたはDATA。

MIDIキーボードとMIDIドラムが接続されている場合、PCがSSPLITメッセージを送信してTTはドラムと通信しますが、TTはすでにキーボードとの通信でビジー状態ですか?TTが1つだけの場合、ハブは新しいSSPLIT要求にNYETを応答します。 12 MBit /秒でIN + DATAを実行するのに忙しいです。このシナリオは絶対に必要ありません。

複数のTTハブには、(デバイスを接続する)すべてのダウンストリームポートに専用のTTがあります。)複数のTTを使用すると、ハブは常にSSPLITを受け入れることができます。他のTTが他のダウンストリームデバイスとの通信でビジー状態であっても、リクエストを送信します。TTが1つだけの場合、480 MBit /秒の十分な帯域幅があっても、ハブは変換する能力が限られているため、PCが待機する可能性があります異なる速度の間で一度に複数のメッセージ。

この説明では、TTが処理する多くの重要なUSBタイミングの問題について説明しましたが、重要な点は、USB 2.0ハブが2つの明確に異なる設計を使用できることです。あなたは本当に安価なシングルTTハブを避けたいです。

USB 3.0および3.1の速度は、これらの回答の別の場所で言及されています。ただし、ハブのTTは5または10ギガビット速度と480、12または1.5速度の間で変換することはありません。代わりに、USB 3.0および3.1ハブは、ハブのペアとして動作します。ギガビット信号には、新しいUSBコネクタに専用のピンがあり、5または10ギガビット/秒の速度でのみ動作するハブに接続します。元のピンで同時に480メガビット/秒の通信が行われるため、12および1.5 MBit /秒のデバイスはTTによって480メガビット/秒に変換されますが、5または10ギガビット/秒には変換されません。

また、「低速」についても言及されています。これは、技術的にはUSB専門用語で1.5 Mbit /秒を意味しますが、カジュアルな会話では1.5または12 Mbit /秒を意味する場合があります。 12 Mbit /秒は、USB用語では「フルスピード」と呼ばれます。 USB MIDIプロトコルは、技術的には「オーディオクラス仕様」の一部であり、「バルク」プロトコルを使用します(別の回答で主張されているように、not割り込みプロトコル) 。USB仕様では、1.5メガビット/秒の速度でのバルク転送プロトコルは許可されていません。そのため、USB MIDIデバイスが非常に著しくUSB速度に違反しない限り、常に最低12メガビット/秒の速度になります。 。USB MIDI 480 Mbit/secの速度の場合、TTは適用されません。しかし、USB MIDI= 12 Mbit /秒の速度。

したがって、パフォーマンスを最大化することを計画している場合は、本当にUSBハブがマルチTTタイプであることを確認する必要があります。

17
Paul Stoffregen

現実的には、ハブを使用して1つのUSBポートを共有し、プラグインするデバイスの数を拡張しても、同時に接続されているすべてのデバイスを使用しても、おそらくそれほど問題にはなりません。ほとんどのデバイスは、一度にほとんどのデータ転送を使用しません。 USB 3.0または3.1ポートを使用している場合は、それぞれ2.0の10倍および20倍高速ですが、同時にデータを送受信でき、より多くの電力を供給でき、2.0で動作します。デバイス。

前述のように、ポートに接続されているすべてのデバイスに十分な電力が供給されている限り、問題は発生しません。

3
Xiro

複数のデバイスが接続されているときにUSB 3.0 HUBの速度が低下する例としての私の場合。

同じセットが2つあります。480GBSSDを搭載したSataIIIからUSB3.1 Gen2 Type Cエンクロージャです。

SSDをSataIIIポートに置くと、Linuxのddコマンドは500MiB/s以上を読み取ります。

SSDをSataIIIからUSB 3.1 Gen2 Type Cエンクロージャーに入れた場合、Linux ddコマンドは、使用する2つのセットのどちらに関係なく、413MiB/s未満で読み取ります。

奇妙なことは、USB 3.0の両方のエンクロージャーにプラグインし、Linuxに両方から読み取るように要求すると(LVMストライプ、RAID0、または2つの同時ddコマンドに関係なく)、2x150 = 300 MiB/sでしか読み取れません。

したがって、両方が接続されている場合、413-300 = 113MiB /秒近くの速度を失います。

言い換えると:

  • 1つのSSDをUSB 3ハブに接続すると、413MiB /秒の読み取りが得られます
  • USB 3ハブに2つのSSD、150 + 150 = 300MiB /秒の読み取りを取得
  • USB 3ハブへの2つのSSDが413/2 = 206MiB/s未満の場合の(SSDあたりの)読み取りのスペシフィケーションは、それぞれ約150MiB/sであり、想定される> 200MiB/sではありません。

問題はUSB 3ハブプロトコルにあり、データバンド幅を両方のドライブに代替することであると考え始めます。これは大きなオーバーヘッドを追加します。

だから、私が手に持っているUSB 3ハブが、1つ以上のSSDが同時に接続されている場合、最大帯域幅よりもはるかに遅くなることを確認できます。

さらに、1つのSSDと非常に遅い(50MiB/s未満)USB 3.0スティックを使用してテストしたところ、USBハブ3の合計読み取り速度は263MiB/sに低下しているので、次の場合、合計読み取りルーズが約100MiB/sであることを確認できます。他のUSBストレージデバイスを接続します。

さらに、最悪の場合、私はマウス(またはキーボード)を接続し、SSDの読み取り速度も313MiB/sに近く、マウス/キーボードを外すと、SSDの読み取り速度は413MiB/sに戻るため、100MiB /に近くなります。 sマウスが接続されている(使用されている)ために読み取り速度が低下した。マウスを動かさないと、読み取り速度が413MiB/sに戻ります。

そのため、他の種類のデバイスを接続しても、それに接続されている(そして使用されている)デバイスが1つだけではない場合、HUBは、複合転送レートで大幅な読み取り速度の低下(100 MiB /秒近く)を引き起こします。同時に動作するのは1つだけではありません。smae時にデバイスを1つだけ使用する場合よりも、読み取り速度を合わせて100MiB/s近く低くなります。

私は3つのデバイス(SSD +マウス+キーボード)でもテストしましたが、ほぼ同じ速度(約100MiB/s)でまだ緩んでいます。

SSDを1つしか読み取らないが、両方が接続されている場合、413MiB /秒近くになります。

USB 3.0ハブの価格は20ユーロ前後で、安くはありませんでした。

結論:複数のデバイスが同時に接続(および転送)されている場合、USB HUB 3.0は多くのMiB/s転送速度を緩やかにします。時間転送をデバイスの数(かなり摩耗)で除算するためか、サイクリングデバイスなどに大きなオーバーヘッドがあるためです。

これが誰かが問題を特定するのに役立つことを願って、すべてのテストはLinux Live SystemRescueCD(最新バージョン)の下でddコマンドとstatus = progress、ブロックサイズ1メガバイト、カウント1,000(合計1GiBを読み取る)、destデバイス/ dev/null。

別のUSB 3.x HUBを購入する予定です(金持ちになる場合)。今度は3.1 Gen 2で同じかどうか、またはファームウェアアルゴリズムが不十分なブランドかどうかを確認します。

2
Laura

750 GB 5400 rpmのハードドライブを搭載したラップトップコンピューターと8 GBの外付けハードドライブを直接接続すると、USBハブを使用する場合よりも転送速度が大幅に遅くなります。たとえば、最近私は4つの映画をコピーして貼り付け、最大で約120GBのデータを追加しました。これが起こったことです。

  1. 最初に、ノートパソコンのハードドライブに最大120 GBのデータを追加する4つの映画をコピーし、1つの8 GB外付けハードドライブに貼り付けました。データ転送速度が約30mbsだったため、転送に約80分かかりました。データ転送速度には、20 mb〜35 mbの範囲のスパイクがありました。

  2. 次に、まったく同じモデルである他の8GB外付けハードドライブを接続しました。今回は4ポートUSB 3.0ハブを使用しました。今回はデータ転送速度がはるかに速くなりました-時には90mbs以上。データ転送速度には、50 mb〜90 mb以上の範囲のスパイクがありました。データの転送には30分しかかかりませんでした。

  3. 3番目に、実験として、8 GBの外付けハードドライブをUSB 3.0ハブを介して同時に接続しました。 120GBのデータを含む4つの映画すべてを1台のハードドライブから別のハードドライブにコピーしました。今回の転送はこれまで以上に高速でした。データ転送速度は約150mbsで、転送速度のスパイクはまったくありませんでした。ずっと150mbsの安定したラインでした。

他の大規模なデータ転送で実験を行いました。何らかの理由で、外付けハードドライブへの直接USB 3.0接続は、USB 3.0ハブが関与する場合よりもはるかに遅くなります。 ...これがなぜなのか誰か知っていますか?

1
mike_mgoblue