では、USB 3.0 が予想よりも遅くなる理由は何でしょうか?
では、USB 3.0 ベースのデバイスは、インターフェースが最大 500 MB/秒程度に対応しているはずなのに、なぜ 150 MB/秒程度しか出ないのでしょうか?基本的な速度とフィードを分解することは、USB の内部構造を理解するための良い第一歩です。
スワイプして水平にスクロールします
インタフェース | データレート(ビット/秒) | 理論上の帯域幅(バイト/秒) | 8b/10bエンコード後の理論上の帯域幅(バイト/秒) |
---|---|---|---|
USB 2.0 | 480 Mbps | 60 MB/秒 | 48 MB/秒 |
USB 3.0 | 5 Gb/秒 | 625 MB/秒 | 500 MB/秒 |
USBはベースバンドデータの伝送には適していないため、情報はラインコードを用いてエンコードし、受信側でデコードする必要があります。これは、受信側でデータクロックを復元するための重要なステップです。このステップがないと、エラー率が大幅に上昇します。他の多くのインターフェース(光ギガビットイーサネットなど)と同様に、USBは8b/10bラインコードを使用し、8ビットシンボルを10ビットシンボルに変換することで、DCバランスと呼ばれる状態を実現します。8b/10bはクロックリカバリに必要な高頻度の遷移を提供しますが、帯域幅が20%低下します。
つまり、USB 3.0の5Gbpsのデータレートは、ピークスループットで500MB/秒にまで達するということです。しかし、デバイスの実際の転送速度に影響を与える要因はそれだけではありません。
USB Implementers Forum (USB-IF) は、ユニバーサル シリアル バス 3.0 仕様のセクション 4.4.11 で次のように述べています。
SuperSpeedの効率は、8b/10bシンボルエンコーディング、パケット構造とフレーミング、リンクレベルフロー制御、プロトコルオーバーヘッドなど、多くの要因に依存します。8b/10bエンコーディングで5Gbpsのシグナリングレートの場合、生のスループットは500MBpsです。リンクフロー制御、パケットフレーミング、プロトコルオーバーヘッドを考慮すると、アプリケーションに400MBps以上のスループットを提供することが現実的です。
突然、USB 3.0の速度がさらに100MB/秒低下しました。しかし、400MB/秒でも、USB 2.0の40MB/秒未満のパフォーマンスと比べると、かなり良いと言えます。
これらの数値はUSB 3.0への期待をいくらか和らげるものの、実際の数値がなぜこれほど低いのかを説明するものではありません。「USB 3.0の仕様ははるかに多くの機能を備えているのに、なぜUSB 3.0デバイスはこんなに遅いのか?」という疑問は依然として残ります。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
私たちの質問に対する最初の答えは、デバイス側のコントローラーがパフォーマンスに大きく影響するということです。上のグラフでは、ThermaltakeのBlacX 5Gは明らかにApricornのSATA-USB 3.0アダプターを追い抜く能力がありますが、これらの数値は高性能SSDを使用した場合にのみ確認できます。さらに印象的なのは、BlacX 5GがBuffaloの外付けRAIDソリューションを上回る能力があり、これはその上のグラフに示されています。さて、BlacX 5Gは、言及した3つの中でASM1051コントローラーを使用する唯一のデバイスです。これまでのところ、私たちの経験では、ASMediaコントローラーを採用したUSB 3.0デバイスが最高のパフォーマンスを発揮します。しかし、その利点だけでは、インターフェースのピークポテンシャルである300MB/秒を超えるには不十分です。
第二に、ホストのコントローラーはパフォーマンスに大きく影響します。前述のベンチマークは、 ASRock Z77 Extreme6マザーボードのネイティブUSB 3.0ポートで実行されました。とはいえ、パフォーマンス数値には矛盾が見られ、結果は実装に依存しているように思われます。あるボードではEtronのコントローラーが最高250MB/秒に達するのに対し、別のプラットフォームでは同じコントローラーが200MB/秒を超えることはありませんでした。しかしながら、全体的に見て最も安定したパフォーマンスは、USBネイティブからプラットフォームコントローラーハブまたはFusionコントローラーハブに接続した場合に得られます。
最後の問題は、USB 3.0 は 400 MB/秒の転送速度が可能であるにもかかわらず、そのパフォーマンスのポテンシャルが非効率的なプロトコルによって阻害されていることです。USB のすべての形式では、コントロール、インタラプト、アイソクロナス、バルクの 4 つの転送タイプが使用されます。最初の 2 つ (コントロールとインタラプト) は、ホストがデバイスと通信する方法を定義します。3 番目の転送タイプであるアイソクロナス転送は、データを定期的かつ継続的に転送するためのもので、デバイスが保証されたレイテンシで定義された量の帯域幅を予約する方法を決定します。アイソクロナス転送は、複数の USB デバイスが使用されている場合のデータ損失 (ビデオ フレームのドロップなど) の問題を解決するため、キャプチャ カードなどのオーディオ/ビデオ デバイスでよく使用されます。最後に、バルク転送 (バルクのみの転送) は、USB 大容量ストレージ デバイスにデータを転送するために使用されるモードであるため、ここで重点的に取り上げます。
バルクオンリートランスポート(エンジニアリング業界では「BOT」としてよく知られています)は、1998年にUSB 1.1向けに、一度に1つのコマンドを受信して処理するプロトコルとして開発されました。BOTは、当時非常に小型で速度と容量が低かったUSBサムドライブのニーズに対応するために特別に考案されました。この点において、BOTはホスト側でコマンドキューイングが省略されるという点でネイティブIDEに似ています(キューの深さを増やすとUSBのパフォーマンスが平坦化するのはそのためです)。
2000年にUSB 2.0が登場した際、BOTは変更されませんでした。これはおそらく、USBバス速度のボトルネックによりBOTのアップデートが不要になったためでしょう。しかし、今にして思えば、これは間違いだったかもしれません。このわずかな先延ばしは、USB 3.0に大きな影響を与えました。インターフェースの速度が接続デバイスよりも遅くなくなったからです。そして今、その逆のことが起こっています。